summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence
diff options
context:
space:
mode:
Diffstat (limited to '')
-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
3 files changed, 54 insertions, 0 deletions
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();
+ }
+}