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 From 05bf6a19f341e2b2cb2b107dea65660a08439a1c Mon Sep 17 00:00:00 2001 From: sowgro Date: Mon, 10 Nov 2025 15:29:14 -0500 Subject: fix circular dependency --- src/main/java/design/persistence/Serializers.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (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 index ab4b18b..3940b44 100644 --- a/src/main/java/design/persistence/Serializers.java +++ b/src/main/java/design/persistence/Serializers.java @@ -36,10 +36,9 @@ public class Serializers { } public static class CourseIdDeserializer extends JsonDeserializer { - MasterDatabase masterDB = MasterDatabase.instance(); - @Override public Course deserialize(JsonParser p, DeserializationContext context) throws IOException { + MasterDatabase masterDB = MasterDatabase.instance(); int id = p.getValueAsInt(); return masterDB.getCourse(id); } @@ -53,10 +52,9 @@ public class Serializers { } public static class LeagueIDDeserializer extends JsonDeserializer { - LeagueDatabase leagueDB = LeagueDatabase.instance(); - @Override public League deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + LeagueDatabase leagueDB = LeagueDatabase.instance(); int id = p.getValueAsInt(); return leagueDB.getLeague(id); } @@ -70,10 +68,10 @@ public class Serializers { } public static class GolferUsernameDeserializer extends JsonDeserializer { - PersonalDatabase personalDB = PersonalDatabase.instance(); @Override public Golfer deserialize(JsonParser p, DeserializationContext context) throws IOException { + PersonalDatabase personalDB = PersonalDatabase.instance(); String username = p.getValueAsString(); return personalDB.getGolfer(username); } -- cgit v1.2.3