diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/persistence/Serializers.java | 81 |
1 files changed, 81 insertions, 0 deletions
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<Course> { + @Override + public void serialize(Course course, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeNumber(course.getId()); + } + } + + public static class CourseIdDeserializer extends JsonDeserializer<Course> { + 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<League> { + @Override + public void serialize(League value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeNumber(value.getId()); + } + } + + public static class LeagueIDDeserializer extends JsonDeserializer<League> { + 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<Golfer> { + @Override + public void serialize(Golfer course, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeString(course.getUsername()); + } + } + + public static class GolferUsernameDeserializer extends JsonDeserializer<Golfer> { + PersonalDatabase personalDB = PersonalDatabase.instance(); + + @Override + public Golfer deserialize(JsonParser p, DeserializationContext context) throws IOException { + String username = p.getValueAsString(); + return personalDB.getGolfer(username); + } + } +} |
