diff options
| author | WillemDalton <willemhdalton@gmail.com> | 2025-11-13 08:28:18 -0500 |
|---|---|---|
| committer | WillemDalton <willemhdalton@gmail.com> | 2025-11-13 08:28:18 -0500 |
| commit | 0efa0586e27c173211153b186ae08eb3b7c8d588 (patch) | |
| tree | e12cd4cc4a50ae5d056c44aae6667cd76f3ea727 /src | |
| parent | 7de856cbb656d8b5fa88fed62380a8d4611060a1 (diff) | |
| download | designproject-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 '')
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 } |
