summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence/JSONLeagueDatabase.java
diff options
context:
space:
mode:
authorTyler Ferrari <69283684+Sowgro@users.noreply.github.com>2025-11-16 02:16:38 -0500
committerGitHub <noreply@github.com>2025-11-16 02:16:38 -0500
commit73dfd2dd419483c7d1060ef2fb40e328a0209e02 (patch)
tree456ed56e629a6324e5993b7ce094705c72e0b922 /src/main/java/design/persistence/JSONLeagueDatabase.java
parentb5d46c7701716bcb2dd6127aeb97f8fcdb7774fc (diff)
parent6ffc6b4cbd9e0c5ce2dc82a7c77f39b3adf849b6 (diff)
downloaddesignproject-design-6-73dfd2dd419483c7d1060ef2fb40e328a0209e02.tar.gz
designproject-design-6-73dfd2dd419483c7d1060ef2fb40e328a0209e02.tar.bz2
designproject-design-6-73dfd2dd419483c7d1060ef2fb40e328a0209e02.zip
Merge pull request #21 from RIT-SWEN-262/league-model
League model
Diffstat (limited to 'src/main/java/design/persistence/JSONLeagueDatabase.java')
-rw-r--r--src/main/java/design/persistence/JSONLeagueDatabase.java53
1 files changed, 35 insertions, 18 deletions
diff --git a/src/main/java/design/persistence/JSONLeagueDatabase.java b/src/main/java/design/persistence/JSONLeagueDatabase.java
index 42fa000..b5f4bc3 100644
--- a/src/main/java/design/persistence/JSONLeagueDatabase.java
+++ b/src/main/java/design/persistence/JSONLeagueDatabase.java
@@ -1,14 +1,7 @@
package design.persistence;
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.core.StreamReadFeature;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.json.JsonMapper;
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;
@@ -44,18 +37,10 @@ public class JSONLeagueDatabase implements LeagueDatabase {
public JSONLeagueDatabase(String filename) {
this.file = new File(filename);
this.cache = new HashMap<>();
- this.mapper = JsonMapper.builder().enable(StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION).build();
+ 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());
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- mapper.registerModule(module);
- mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
- mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES));
- mapper.registerModule(new JavaTimeModule());
+ Serializers.configureMapper(mapper);
+ mapper.registerModule(this.getJacksonModule());
try {
load();
@@ -105,4 +90,36 @@ public class JSONLeagueDatabase implements LeagueDatabase {
cache.put(league.getId(), league);
save();
}
+
+ @Override
+ 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);
+ }
+ save();
+ }
+
+ @Override
+ 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;
+ }
}