summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence/JSONLeagueDatabase.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-16 01:56:27 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-16 01:56:27 -0500
commitcf59d52cba70742f1d4098c38b4c7a798b3d89fa (patch)
tree3d939229fe72a9298aa5fce98812dfffb6c41fba /src/main/java/design/persistence/JSONLeagueDatabase.java
parent4ac38e80c2442e085c53986f5717d44f9d2d821a (diff)
downloaddesignproject-design-6-cf59d52cba70742f1d4098c38b4c7a798b3d89fa.tar.gz
designproject-design-6-cf59d52cba70742f1d4098c38b4c7a798b3d89fa.tar.bz2
designproject-design-6-cf59d52cba70742f1d4098c38b4c7a798b3d89fa.zip
IMPORT-EXPORT WORKING!!!!!!!!!!!!!!!!!!!!!!!!!!import-export-exp
Diffstat (limited to '')
-rw-r--r--src/main/java/design/persistence/JSONLeagueDatabase.java45
1 files changed, 23 insertions, 22 deletions
diff --git a/src/main/java/design/persistence/JSONLeagueDatabase.java b/src/main/java/design/persistence/JSONLeagueDatabase.java
index 0891551..977e162 100644
--- a/src/main/java/design/persistence/JSONLeagueDatabase.java
+++ b/src/main/java/design/persistence/JSONLeagueDatabase.java
@@ -1,20 +1,15 @@
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.Arrays;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
public class JSONLeagueDatabase implements LeagueDatabase {
@@ -38,18 +33,8 @@ public class JSONLeagueDatabase implements LeagueDatabase {
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.addDeserializer(Golfer.class, new Serializers.GolferUsernameDeserializer());
- module.addSerializer(Golfer.class, new Serializers.GolferUsernameSerializer());
- 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();
@@ -101,8 +86,10 @@ public class JSONLeagueDatabase implements LeagueDatabase {
}
@Override
- public void importData(JsonNode tree) throws IOException {
- League[] data = mapper.treeToValue(tree, League[].class);
+ public void importData(Object rawData) throws IOException {
+ if (!(rawData instanceof League[] data)) {
+ throw new ClassCastException();
+ }
cache.clear();
for (League league : data) {
cache.put(league.getId(), league);
@@ -111,8 +98,22 @@ public class JSONLeagueDatabase implements LeagueDatabase {
}
@Override
- public JsonNode exportData() {
- Object[] data = cache.values().toArray();
- return mapper.valueToTree(data);
+ public League[] exportData() {
+ return getLeagues();
+ }
+
+ @Override
+ public SimpleModule getJacksonModule() {
+ SimpleModule module = new SimpleModule();
+ module.addDeserializer(Course.class, new Serializers.CourseIdDeserializer());
+ module.addSerializer(Course.class, new Serializers.CourseIdSerializer());
+ module.addDeserializer(Golfer.class, new Serializers.GolferUsernameDeserializer());
+ module.addSerializer(Golfer.class, new Serializers.GolferUsernameSerializer());
+ return module;
+ }
+
+ @Override
+ public Class<?> getTargetClass() {
+ return League[].class;
}
}