All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.oliviercailloux.grade.comm.json.JsonStudentOnGitHubKnown Maven / Gradle / Ivy

The newest version!
package io.github.oliviercailloux.grade.comm.json;

import io.github.oliviercailloux.git.github.model.GitHubUsername;
import io.github.oliviercailloux.grade.comm.InstitutionalStudent;
import io.github.oliviercailloux.grade.comm.StudentOnGitHubKnown;
import io.github.oliviercailloux.json.JsonbUtils;
import io.github.oliviercailloux.json.PrintableJsonObject;
import io.github.oliviercailloux.json.PrintableJsonObjectFactory;
import io.github.oliviercailloux.json.PrintableJsonValue;
import jakarta.json.Json;
import jakarta.json.JsonObject;
import jakarta.json.bind.adapter.JsonbAdapter;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JsonStudentOnGitHubKnown {
  @SuppressWarnings("unused")
  private static final Logger LOGGER = LoggerFactory.getLogger(JsonStudentOnGitHubKnown.class);

  public static PrintableJsonObject asJson(StudentOnGitHubKnown student) {
    final PrintableJsonObject mcJson = JsonbUtils.toJsonObject(student.getInstitutionalStudent());
    LOGGER.debug("Created {}.", mcJson);
    final JsonObject json =
        Json.createObjectBuilder().add("gitHubUsername", student.getGitHubUsername().getUsername())
            .addAll(Json.createObjectBuilder(mcJson)).build();
    return PrintableJsonObjectFactory.wrapObject(json);
  }

  public static PrintableJsonValue asJsonFromList(List students) {
    return JsonbUtils.toJsonValue(students, asAdapter());
  }

  public static StudentOnGitHubKnown asStudentOnGitHubKnown(JsonObject json) {
    final GitHubUsername gitHubUsername = GitHubUsername.given(json.getString("gitHubUsername"));
    final InstitutionalStudent mc =
        JsonbUtils.fromJson(json.toString(), InstitutionalStudent.class);
    return StudentOnGitHubKnown.with(gitHubUsername, mc);
  }

  public static JsonbAdapter asAdapter() {
    return new JsonbAdapter<>() {
      @Override
      public JsonObject adaptToJson(StudentOnGitHubKnown obj) throws Exception {
        return asJson(obj);
      }

      @Override
      public StudentOnGitHubKnown adaptFromJson(JsonObject obj) throws Exception {
        return asStudentOnGitHubKnown(obj);
      }
    };
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy