summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence/JSONPersonalDatabase.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-02 22:09:13 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-02 22:09:13 -0400
commitd7249ab93dad3ba9be0389f402c1378d7f1eb5ad (patch)
tree1c5b99feb9021dd03090b4f97af912d90e8f09a6 /src/main/java/design/persistence/JSONPersonalDatabase.java
parent24926b9ec53aa4a3c3650d1e19c6baa170f178b7 (diff)
downloaddesignproject-design-6-d7249ab93dad3ba9be0389f402c1378d7f1eb5ad.tar.gz
designproject-design-6-d7249ab93dad3ba9be0389f402c1378d7f1eb5ad.tar.bz2
designproject-design-6-d7249ab93dad3ba9be0389f402c1378d7f1eb5ad.zip
Implement basic serialization
Diffstat (limited to 'src/main/java/design/persistence/JSONPersonalDatabase.java')
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java
new file mode 100644
index 0000000..3ec0012
--- /dev/null
+++ b/src/main/java/design/persistence/JSONPersonalDatabase.java
@@ -0,0 +1,65 @@
+package design.persistence;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import design.model.Golfer;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class JSONPersonalDatabase implements PersonalDatabase {
+
+ private final Map<String, Golfer> cache;
+ private final ObjectMapper mapper;
+ private final File file;
+
+ public JSONPersonalDatabase(String filename) throws IOException {
+ this.file = new File(filename);
+ this.cache = new HashMap<>();
+ this.mapper = new ObjectMapper();
+
+ load();
+ }
+
+ private void load() throws IOException {
+ Golfer[] data = mapper.readValue(file, Golfer[].class);
+ cache.clear();
+ for (Golfer i : data) {
+ cache.put(i.getUsername(), i);
+ }
+ }
+
+ private void save() throws IOException {
+ Golfer[] data = cache.values().toArray(Golfer[]::new);
+ mapper.writeValue(file, data);
+ }
+
+ @Override
+ public Golfer[] getGolfers() {
+ return new Golfer[0];
+ }
+
+ @Override
+ public Golfer getGolfer(String username) {
+ return cache.get(username);
+ }
+
+ @Override
+ public void addGolfer(Golfer golfer) throws IOException {
+ cache.put(golfer.getUsername(), golfer);
+ save();
+ }
+
+ @Override
+ public void removeGolfer(Golfer golfer) throws IOException {
+ cache.remove(golfer.getUsername());
+ save();
+ }
+
+ @Override
+ public void updateGolfer(Golfer golfer) throws IOException {
+ cache.put(golfer.getUsername(), golfer);
+ save();
+ }
+}