diff options
Diffstat (limited to 'src/main/java/design/persistence/JSONPersonalDatabase.java')
| -rw-r--r-- | src/main/java/design/persistence/JSONPersonalDatabase.java | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index bf0dda9..b92dddf 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -1,19 +1,14 @@ package design.persistence; -import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; import design.model.Course; import design.model.Golfer; import design.model.League; import java.io.File; import java.io.IOException; -import java.time.LocalDateTime; import java.util.HashMap; -import java.util.List; import java.util.Map; public class JSONPersonalDatabase implements PersonalDatabase { @@ -36,19 +31,8 @@ public class JSONPersonalDatabase implements PersonalDatabase { this.cache = new HashMap<>(); this.mapper = new ObjectMapper(); - - SimpleModule module = new SimpleModule(); - module.addDeserializer(Course.class, new Serializers.CourseIdDeserializer()); - module.addSerializer(Course.class, new Serializers.CourseIdSerializer()); - module.addSerializer(League.class, new Serializers.LeagueIDSerializer()); - module.addDeserializer(League.class, new Serializers.LeagueIDDeserializer()); - module.addSerializer(LocalDateTime.class, new Serializers.DateTimeStringSerializer()); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); - mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); - mapper.registerModule(new JavaTimeModule()); - mapper.registerModule(module); - mapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); + Serializers.configureMapper(mapper); + mapper.registerModule(this.getJacksonModule()); try { load(); @@ -100,8 +84,10 @@ public class JSONPersonalDatabase implements PersonalDatabase { } @Override - public void importData(JsonNode tree) throws IOException { - Golfer[] data = mapper.treeToValue(tree, Golfer[].class); + public void importData(Object rawData) throws IOException { + if (!(rawData instanceof Golfer[] data)) { + throw new ClassCastException(); + } cache.clear(); for (Golfer golfer : data) { cache.put(golfer.getUsername(), golfer); @@ -110,8 +96,22 @@ public class JSONPersonalDatabase implements PersonalDatabase { } @Override - public JsonNode exportData() { - Object[] data = cache.values().toArray(); - return mapper.valueToTree(data); + public Golfer[] exportData() { + return getGolfers(); + } + + @Override + public SimpleModule getJacksonModule() { + SimpleModule module = new SimpleModule(); + module.addDeserializer(Course.class, new Serializers.CourseIdDeserializer()); + module.addSerializer(Course.class, new Serializers.CourseIdSerializer()); + module.addSerializer(League.class, new Serializers.LeagueIDSerializer()); + module.addDeserializer(League.class, new Serializers.LeagueIDDeserializer()); + return module; + } + + @Override + public Class<?> getTargetClass() { + return Golfer[].class; } } |
