summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence
diff options
context:
space:
mode:
authorWillemDalton <willemhdalton@gmail.com>2025-11-13 08:28:18 -0500
committerWillemDalton <willemhdalton@gmail.com>2025-11-13 08:28:18 -0500
commit0efa0586e27c173211153b186ae08eb3b7c8d588 (patch)
treee12cd4cc4a50ae5d056c44aae6667cd76f3ea727 /src/main/java/design/persistence
parent7de856cbb656d8b5fa88fed62380a8d4611060a1 (diff)
downloaddesignproject-design-6-0efa0586e27c173211153b186ae08eb3b7c8d588.tar.gz
designproject-design-6-0efa0586e27c173211153b186ae08eb3b7c8d588.tar.bz2
designproject-design-6-0efa0586e27c173211153b186ae08eb3b7c8d588.zip
added league JSON import/export, still working with XML import
Diffstat (limited to 'src/main/java/design/persistence')
-rw-r--r--src/main/java/design/persistence/JSONHandler.java8
-rw-r--r--src/main/java/design/persistence/JSONLeagueDatabase.java17
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java1
-rw-r--r--src/main/java/design/persistence/XMLHandler.java31
4 files changed, 40 insertions, 17 deletions
diff --git a/src/main/java/design/persistence/JSONHandler.java b/src/main/java/design/persistence/JSONHandler.java
index a8967d2..77ec987 100644
--- a/src/main/java/design/persistence/JSONHandler.java
+++ b/src/main/java/design/persistence/JSONHandler.java
@@ -14,14 +14,14 @@ public class JSONHandler implements DataHandler
JSONPersonalDatabase.instance().importData(file);
}
- public void exportLeagueData(File file)
+ public void exportLeagueData(File file) throws IOException
{
- // TO DO: exporting league data
+ JSONLeagueDatabase.instance().importData(file);
}
- public void importLeagueData(File file)
+ public void importLeagueData(File file) throws IOException
{
- // TO DO: importing league data
+ JSONLeagueDatabase.instance().exportData(file);
}
}
diff --git a/src/main/java/design/persistence/JSONLeagueDatabase.java b/src/main/java/design/persistence/JSONLeagueDatabase.java
index 8b201e6..edc649b 100644
--- a/src/main/java/design/persistence/JSONLeagueDatabase.java
+++ b/src/main/java/design/persistence/JSONLeagueDatabase.java
@@ -13,6 +13,8 @@ import design.model.League;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -97,4 +99,19 @@ public class JSONLeagueDatabase implements LeagueDatabase {
cache.put(league.getId(), league);
save();
}
+
+ public File exportData(File newFile) throws IOException{
+ Files.copy(file.toPath(), newFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ return newFile;
+ }
+
+ public void importData(File newFile) throws IOException {
+ League[] newLeagues = mapper.readValue(newFile, League[].class);
+ cache.clear();
+ for (League l: newLeagues) {
+ cache.put(l.getId(), l);
+ }
+ save();
+ }
+
}
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java
index 8d263fc..3fc5cab 100644
--- a/src/main/java/design/persistence/JSONPersonalDatabase.java
+++ b/src/main/java/design/persistence/JSONPersonalDatabase.java
@@ -113,7 +113,6 @@ public class JSONPersonalDatabase implements PersonalDatabase {
for (Golfer g : newGolfers) {
cache.put(g.getUsername(), g);
}
-
save();
}
}
diff --git a/src/main/java/design/persistence/XMLHandler.java b/src/main/java/design/persistence/XMLHandler.java
index c71712b..eaae811 100644
--- a/src/main/java/design/persistence/XMLHandler.java
+++ b/src/main/java/design/persistence/XMLHandler.java
@@ -20,11 +20,9 @@ public class XMLHandler implements DataHandler
public void exportPersonalData(File file) throws IOException {
// get our json data
File jsonData = JSONPersonalDatabase.instance().exportData(file);
-
// read the top tree node (the array)
JsonNode golfersNode = jsonMapper.readTree(jsonData);
-
- // map it to an object node (not sure if im gonna use this)
+ // map it to an object node
ObjectNode root = xmlMapper.createObjectNode();
root.set("golfer", golfersNode);
xmlMapper.writerWithDefaultPrettyPrinter().writeValue(file, root);
@@ -32,22 +30,31 @@ public class XMLHandler implements DataHandler
public void importPersonalData(File file) throws IOException {
- // get our root node
- JsonNode root = xmlMapper.readTree(file);
- Golfer[] golfers = xmlMapper.treeToValue(root, Golfer[].class);
+ JsonNode root = xmlMapper.readTree(file);
+ JsonNode golfersNode = root.get("golfer");
+ if (golfersNode == null) {
+ throw new IOException("Expected 'golfer' element in XML root, but none found");
+ }
+ if (!golfersNode.isArray()) {
+ golfersNode = xmlMapper.createArrayNode().add(golfersNode);
+ }
+
+ Golfer[] golfers = xmlMapper.treeToValue(golfersNode, Golfer[].class);
- File tempJson = File.createTempFile("imported", ".json");
- jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers);
- JSONPersonalDatabase.instance().importData(tempJson);
- tempJson.delete();
+ File tempJson = File.createTempFile("imported", ".json");
+ jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers);
+ JSONPersonalDatabase.instance().importData(tempJson);
+ tempJson.delete();
}
- public void exportLeagueData(File file)
+
+
+ public void exportLeagueData(File file) throws IOException
{
// TO DO: exporting league data
}
- public void importLeagueData(File file)
+ public void importLeagueData(File file) throws IOException
{
// TO DO: importing league data
}