From 94ac731c00da6022909bbb96c835d7c63204da73 Mon Sep 17 00:00:00 2001 From: WillemDalton Date: Tue, 11 Nov 2025 09:01:01 -0500 Subject: progress on importing exporting --- data/personaldb.json | 4 +- .../userinput/menus/ImportExportMenu.java | 52 ++++++++++------------ .../controller/userinput/menus/UserSettings.java | 9 +--- src/main/java/design/persistence/JSONHandler.java | 28 ++++++++++++ src/main/java/design/persistence/XMLHandler.java | 44 ++++++++++++++++++ src/main/java/design/persistence/XMLParser.java | 44 ------------------ 6 files changed, 99 insertions(+), 82 deletions(-) create mode 100644 src/main/java/design/persistence/JSONHandler.java create mode 100644 src/main/java/design/persistence/XMLHandler.java delete mode 100644 src/main/java/design/persistence/XMLParser.java diff --git a/data/personaldb.json b/data/personaldb.json index 86a9334..51c0ff7 100644 --- a/data/personaldb.json +++ b/data/personaldb.json @@ -91,11 +91,11 @@ } ], "currentHoleIndex": 2, - "totalDistance": 1108.0, "currentHole": { "number": 3, "par": 4 }, + "totalDistance": 1108.0, "totalSwings": 5 }, { @@ -127,11 +127,11 @@ } ], "currentHoleIndex": 9, - "totalDistance": 204.0, "currentHole": { "number": 10, "par": 3 }, + "totalDistance": 204.0, "totalSwings": 1 } ], diff --git a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java index 4c7df00..db861c5 100644 --- a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java +++ b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java @@ -2,8 +2,8 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; -import design.persistence.JSONPersonalDatabase; -import design.persistence.XMLParser; +import design.persistence.JSONHandler; +import design.persistence.XMLHandler; import java.io.File; import java.io.IOException; @@ -11,20 +11,14 @@ import java.util.List; import java.util.Map; import java.util.Scanner; -public class ImportExportMenu extends Menu { - XMLParser xmlParser = new XMLParser(); +import design.model.DataHandler; - private static final Map> handlers = Map.of( - "json", Map.of( - true, new PersonalJsonHandler(), - false, new LeagueJsonHandler() - ), - "csv", Map.of( - true, new PersonalCsvHandler(), - false, new LeagueCsvHandler() - )); +public class ImportExportMenu extends Menu { + private static final Map handlers = Map.of( + "xml", new XMLHandler(), + "json", new JSONHandler() + ); - @Override public String getTitle() { return "import export menu"; @@ -49,27 +43,29 @@ public class ImportExportMenu extends Menu { { System.out.println("Enter file path: "); Scanner sc = new Scanner(System.in); - String path = sc.nextLine(); - File file = new File(path); + String filePath = sc.nextLine(); + File file = new File(filePath); - String ext = getExtension(path); - Map map = handlers.get(ext); - if (map == null) { - System.out.println("Unsupported file type: " + ext); - return; - } + String ext = getExtension(filePath); + DataHandler handler = handlers.get(ext); - DataHandler handler = map.get(isPersonalProfile); if (handler == null) { - System.out.println("No handler for this profile type."); + System.out.println("Unsupported file type: " + ext); return; } try { - if (isImporting) - handler.importData(file); - else - handler.exportData(file); + if (isImporting) { + if (isPersonalProfile) + handler.importPersonalData(file); + else + handler.importLeagueData(file); + } else { + if (isPersonalProfile) + handler.exportPersonalData(file); + else + handler.exportLeagueData(file); + } } catch (IOException e) { System.err.println("I/O error: " + e.getMessage()); } diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java index d029e45..865b00d 100644 --- a/src/main/java/design/controller/userinput/menus/UserSettings.java +++ b/src/main/java/design/controller/userinput/menus/UserSettings.java @@ -60,15 +60,8 @@ public class UserSettings extends Menu { this.present(); })); - - opts.add(new MenuOption("import...", () -> { - - })); + opts.add(new MenuOption("manage data...", () -> new ImportExportMenu().present())); - opts.add(new MenuOption("export...", () -> { - - this.present(); - })); return opts; } diff --git a/src/main/java/design/persistence/JSONHandler.java b/src/main/java/design/persistence/JSONHandler.java new file mode 100644 index 0000000..06ed202 --- /dev/null +++ b/src/main/java/design/persistence/JSONHandler.java @@ -0,0 +1,28 @@ +package design.persistence; +import java.io.File; +import java.io.IOException; +import design.model.DataHandler; + +public class JSONHandler implements DataHandler +{ + + public void exportPersonalData(File fileName) throws IOException { + JSONPersonalDatabase.instance().exportData(); // fix this + } + + public void importPersonalData(File fileName) throws IOException { + JSONPersonalDatabase.instance().importData(fileName); + } + + public void exportLeagueData(File fileName) + { + // TO DO: exporting league data + } + + public void importLeagueData(File fileName) + { + // TO DO: importing league data + } +} + + diff --git a/src/main/java/design/persistence/XMLHandler.java b/src/main/java/design/persistence/XMLHandler.java new file mode 100644 index 0000000..413defc --- /dev/null +++ b/src/main/java/design/persistence/XMLHandler.java @@ -0,0 +1,44 @@ +package design.persistence; +import java.io.File; +import java.io.IOException; +import design.model.DataHandler; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import design.model.Golfer; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + + + +public class XMLHandler implements DataHandler +{ + private final ObjectMapper jsonMapper = new ObjectMapper(); + private final XmlMapper xmlMapper = new XmlMapper(); + + public void exportPersonalData(File fileName) throws IOException { + File jsonData = JSONPersonalDatabase.instance().exportData(); + Golfer[] golfers = jsonMapper.readValue(jsonData, Golfer[].class); + File xmlFile = new File(fileName + ".xml"); + xmlMapper.writerWithDefaultPrettyPrinter().writeValue(xmlFile, golfers); + } + + public void importPersonalData(File fileName) throws IOException { + Golfer[] golfers = xmlMapper.readValue(fileName, Golfer[].class); + File tempJson = File.createTempFile("imported", ".json"); + jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers); + JSONPersonalDatabase.instance().importData(tempJson); + tempJson.delete(); + } + + public void exportLeagueData(File fileName) + { + // TO DO: exporting league data + } + + public void importLeagueData(File fileName) + { + // TO DO: importing league data + } +} + + diff --git a/src/main/java/design/persistence/XMLParser.java b/src/main/java/design/persistence/XMLParser.java deleted file mode 100644 index 3d04a03..0000000 --- a/src/main/java/design/persistence/XMLParser.java +++ /dev/null @@ -1,44 +0,0 @@ -package design.persistence; -import java.io.File; -import java.io.IOException; -import design.model.DataHandler; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import design.model.Golfer; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; - - - -public class XMLParser implements DataHandler -{ - private final ObjectMapper jsonMapper = new ObjectMapper(); - private final XmlMapper xmlMapper = new XmlMapper(); - - public void exportPersonalData(File fileName) throws IOException { - File jsonData = JSONPersonalDatabase.instance().exportData(); - Golfer[] golfers = jsonMapper.readValue(jsonData, Golfer[].class); - File xmlFile = new File(fileName + ".xml"); - xmlMapper.writerWithDefaultPrettyPrinter().writeValue(xmlFile, golfers); - } - - public void importPersonalData(File fileName) throws IOException { - Golfer[] golfers = xmlMapper.readValue(fileName, Golfer[].class); - File tempJson = File.createTempFile("imported", ".json"); - jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers); - JSONPersonalDatabase.instance().importData(tempJson); - tempJson.delete(); - } - - public void exportLeagueData(File fileName) - { - // TO DO: exporting league data - } - - public void importLeagueData(File fileName) - { - // TO DO: importing league data - } -} - - -- cgit v1.2.3