From 708b2c1fca41f0fb5d7e73aa3470839ce2463892 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 9 Nov 2025 17:27:07 -0500 Subject: add serializer for leagues in golfer, reorganize serializers --- src/main/java/design/persistence/Serializers.java | 81 +++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/main/java/design/persistence/Serializers.java (limited to 'src/main/java/design/persistence/Serializers.java') diff --git a/src/main/java/design/persistence/Serializers.java b/src/main/java/design/persistence/Serializers.java new file mode 100644 index 0000000..ab4b18b --- /dev/null +++ b/src/main/java/design/persistence/Serializers.java @@ -0,0 +1,81 @@ +package design.persistence; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.util.DefaultIndenter; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import design.model.Course; +import design.model.Golfer; +import design.model.League; + +import java.io.IOException; + +public class Serializers { + public static class CustomPrettyPrinter extends DefaultPrettyPrinter { + public CustomPrettyPrinter() { + super._arrayIndenter = new DefaultIndenter(); + super._objectFieldValueSeparatorWithSpaces = _separators.getObjectFieldValueSeparator() + " "; + super._arrayEmptySeparator = ""; + } + + @Override + public CustomPrettyPrinter createInstance() { + return new CustomPrettyPrinter(); + } + } + + public static class CourseIdSerializer extends JsonSerializer { + @Override + public void serialize(Course course, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeNumber(course.getId()); + } + } + + public static class CourseIdDeserializer extends JsonDeserializer { + MasterDatabase masterDB = MasterDatabase.instance(); + + @Override + public Course deserialize(JsonParser p, DeserializationContext context) throws IOException { + int id = p.getValueAsInt(); + return masterDB.getCourse(id); + } + } + + public static class LeagueIDSerializer extends JsonSerializer { + @Override + public void serialize(League value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeNumber(value.getId()); + } + } + + public static class LeagueIDDeserializer extends JsonDeserializer { + LeagueDatabase leagueDB = LeagueDatabase.instance(); + + @Override + public League deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + int id = p.getValueAsInt(); + return leagueDB.getLeague(id); + } + } + + public static class GolferUsernameSerializer extends JsonSerializer { + @Override + public void serialize(Golfer course, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeString(course.getUsername()); + } + } + + public static class GolferUsernameDeserializer extends JsonDeserializer { + PersonalDatabase personalDB = PersonalDatabase.instance(); + + @Override + public Golfer deserialize(JsonParser p, DeserializationContext context) throws IOException { + String username = p.getValueAsString(); + return personalDB.getGolfer(username); + } + } +} -- cgit v1.2.3