summaryrefslogtreecommitdiff
path: root/src/main/java/design
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/ImportExportMenu.java33
-rw-r--r--src/main/java/design/controller/userinput/menus/UserSettings.java10
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java17
-rw-r--r--src/main/java/design/persistence/PersonalDatabase.java5
-rw-r--r--src/main/java/design/persistence/XMLParser.java32
5 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
new file mode 100644
index 0000000..ed313d7
--- /dev/null
+++ b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
@@ -0,0 +1,33 @@
+package design.controller.userinput.menus;
+
+import design.controller.userinput.Menu;
+import design.controller.userinput.MenuOption;
+
+import java.util.List;
+
+public class ImportExportMenu extends Menu {
+ @Override
+ public String getTitle() {
+ return "import export menu";
+ }
+
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ List<MenuOption> opts = new java.util.ArrayList<>();
+
+ opts.add(new MenuOption("return to main menu", () -> new MainMenu().present()));
+
+ opts.add(new MenuOption("set to XML", () -> new MainMenu().present()));
+ opts.add(new MenuOption("set to JSON", () -> new MainMenu().present()));
+
+ opts.add(new MenuOption("import league...", () -> {
+
+ }));
+ opts.add(new MenuOption("export league...", () -> {}));
+ opts.add(new MenuOption("import personal profile...", () -> {}));
+ opts.add(new MenuOption("export personal profile...", () -> {}));
+
+ return opts;
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java
index 47b0a5b..d029e45 100644
--- a/src/main/java/design/controller/userinput/menus/UserSettings.java
+++ b/src/main/java/design/controller/userinput/menus/UserSettings.java
@@ -60,6 +60,16 @@ public class UserSettings extends Menu {
this.present();
}));
+
+ opts.add(new MenuOption("import...", () -> {
+
+ }));
+
+ opts.add(new MenuOption("export...", () -> {
+
+ this.present();
+ }));
+
return opts;
}
}
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java
index 0e95437..2f003cb 100644
--- a/src/main/java/design/persistence/JSONPersonalDatabase.java
+++ b/src/main/java/design/persistence/JSONPersonalDatabase.java
@@ -98,4 +98,21 @@ public class JSONPersonalDatabase implements PersonalDatabase {
cache.put(golfer.getUsername(), golfer);
save();
}
+
+ @Override
+ public File exportData() throws IOException{
+ save();
+ return file;
+ }
+
+ @Override
+ public void importData(File newFile) throws IOException {
+ Golfer[] newGolfers = mapper.readValue(newFile, Golfer[].class);
+ cache.clear();
+ for (Golfer g : newGolfers) {
+ cache.put(g.getUsername(), g);
+ }
+
+ save();
+ }
}
diff --git a/src/main/java/design/persistence/PersonalDatabase.java b/src/main/java/design/persistence/PersonalDatabase.java
index adb865d..186474e 100644
--- a/src/main/java/design/persistence/PersonalDatabase.java
+++ b/src/main/java/design/persistence/PersonalDatabase.java
@@ -2,6 +2,7 @@ package design.persistence;
import design.model.Golfer;
import java.io.IOException;
+import java.io.File;
public interface PersonalDatabase {
@@ -18,4 +19,8 @@ public interface PersonalDatabase {
void removeGolfer(Golfer golfer) throws IOException;
void updateGolfer(Golfer golfer) throws IOException;
+
+ void importData(File newFile) throws IOException;
+
+ File exportData() throws IOException;
}
diff --git a/src/main/java/design/persistence/XMLParser.java b/src/main/java/design/persistence/XMLParser.java
new file mode 100644
index 0000000..472931a
--- /dev/null
+++ b/src/main/java/design/persistence/XMLParser.java
@@ -0,0 +1,32 @@
+package design.persistence;
+import java.io.File;
+import java.io.IOException;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import design.model.Golfer;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+
+
+
+public class XMLParser {
+
+ private final ObjectMapper jsonMapper = new ObjectMapper();
+ private final XmlMapper xmlMapper = new XmlMapper();
+
+ public File exportData() throws IOException {
+ File jsonData = JSONPersonalDatabase.instance().exportData();
+ Golfer[] golfers = jsonMapper.readValue(jsonData, Golfer[].class);
+ File xmlFile = new File("data/data.xml");
+ xmlMapper.writerWithDefaultPrettyPrinter().writeValue(xmlFile, golfers);
+ return xmlFile;
+ }
+
+ public void importData(File xmlFile) throws IOException {
+ Golfer[] golfers = xmlMapper.readValue(xmlFile, Golfer[].class);
+ File tempJson = File.createTempFile("imported", ".json");
+ jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers);
+ JSONPersonalDatabase.instance().importData(tempJson);
+ tempJson.delete();
+ }
+}