From 1c58e61ea691f6970809aa6eaf5223d4b78cb5b6 Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Sun, 5 Oct 2025 15:13:52 -0400 Subject: Added sessions to keep track of current golfer throughout ui --- src/main/java/design/persistence/PersonalDatabase.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/main/java/design/persistence') diff --git a/src/main/java/design/persistence/PersonalDatabase.java b/src/main/java/design/persistence/PersonalDatabase.java index a045d59..886bd0b 100644 --- a/src/main/java/design/persistence/PersonalDatabase.java +++ b/src/main/java/design/persistence/PersonalDatabase.java @@ -8,8 +8,21 @@ public interface PersonalDatabase { PersonalDatabase INSTANCE = new JSONPersonalDatabase("data/personaldb.json"); Golfer[] getGolfers(); + Golfer getGolfer(String name); + void addGolfer(Golfer golfer) throws IOException; + void removeGolfer(Golfer golfer) throws IOException; + void updateGolfer(Golfer golfer) throws IOException; + + default Golfer loadOrCreateGolfer(String username, String fullNameIfNew, String pwIfNew) throws IOException { + Golfer g = getGolfer(username); + if (g != null) + return g; + g = new Golfer(fullNameIfNew, username, pwIfNew); + addGolfer(g); + return g; + } } -- cgit v1.2.3 From 042c456a542a60262e71f694fa21e0dfcfc25f3a Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Sun, 5 Oct 2025 16:42:54 -0400 Subject: Completed HolePlayMenu and basic CourseSelectionMenu, minal updates to other classes --- src/main/java/design/persistence/JSONPersonalDatabase.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/persistence') diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index 0efa362..187c2d2 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -16,6 +16,7 @@ import design.model.Golfer; import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -30,6 +31,8 @@ public class JSONPersonalDatabase implements PersonalDatabase { this.cache = new HashMap<>(); this.mapper = new ObjectMapper(); + mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + SimpleModule module = new SimpleModule(); module.addDeserializer(Course.class, new CourseIdDeserializer()); module.addSerializer(Course.class, new CourseIdSerializer()); @@ -58,9 +61,12 @@ public class JSONPersonalDatabase implements PersonalDatabase { mapper.writer(new CustomPrettyPrinter()).writeValue(file, data); } + // turns that collection into a real array of golfers @Override public Golfer[] getGolfers() { - return new Golfer[0]; + Collection golfers = cache.values(); + Golfer[] array = golfers.toArray(new Golfer[golfers.size()]); + return array; } @Override -- cgit v1.2.3 From c9992d357a0df160c8b577c12bd70338627ef2ce Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Mon, 6 Oct 2025 16:48:53 -0400 Subject: Updated code basied on feed back --- src/main/java/design/persistence/JSONPersonalDatabase.java | 8 ++++---- src/main/java/design/persistence/PersonalDatabase.java | 10 ---------- 2 files changed, 4 insertions(+), 14 deletions(-) (limited to 'src/main/java/design/persistence') diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index 187c2d2..b034680 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -31,7 +31,9 @@ public class JSONPersonalDatabase implements PersonalDatabase { this.cache = new HashMap<>(); this.mapper = new ObjectMapper(); - mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + // TODO: Once the saved JSON matches the model, consider removing. + // TEMP: tolerate unknown props while the model stabilizes + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); SimpleModule module = new SimpleModule(); module.addDeserializer(Course.class, new CourseIdDeserializer()); @@ -64,9 +66,7 @@ public class JSONPersonalDatabase implements PersonalDatabase { // turns that collection into a real array of golfers @Override public Golfer[] getGolfers() { - Collection golfers = cache.values(); - Golfer[] array = golfers.toArray(new Golfer[golfers.size()]); - return array; + return cache.values().toArray(Golfer[]::new); } @Override diff --git a/src/main/java/design/persistence/PersonalDatabase.java b/src/main/java/design/persistence/PersonalDatabase.java index 886bd0b..428694b 100644 --- a/src/main/java/design/persistence/PersonalDatabase.java +++ b/src/main/java/design/persistence/PersonalDatabase.java @@ -1,7 +1,6 @@ package design.persistence; import design.model.Golfer; - import java.io.IOException; public interface PersonalDatabase { @@ -16,13 +15,4 @@ public interface PersonalDatabase { void removeGolfer(Golfer golfer) throws IOException; void updateGolfer(Golfer golfer) throws IOException; - - default Golfer loadOrCreateGolfer(String username, String fullNameIfNew, String pwIfNew) throws IOException { - Golfer g = getGolfer(username); - if (g != null) - return g; - g = new Golfer(fullNameIfNew, username, pwIfNew); - addGolfer(g); - return g; - } } -- cgit v1.2.3