From 8d37a242acf4026c097f44c2383a7c746cff6393 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 12 Oct 2025 00:55:11 -0400 Subject: fix club serialization and saving of some options --- src/main/java/design/controller/userinput/menus/ManageClubs.java | 5 +++++ .../java/design/controller/userinput/menus/ManageCourses.java | 8 ++++++++ src/main/java/design/model/Club.java | 8 ++++++++ src/main/java/design/model/Golfer.java | 2 ++ src/main/java/design/model/Swing.java | 4 ++++ src/main/java/design/persistence/JSONPersonalDatabase.java | 1 + 6 files changed, 28 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/design/controller/userinput/menus/ManageClubs.java b/src/main/java/design/controller/userinput/menus/ManageClubs.java index f05fcee..6290444 100644 --- a/src/main/java/design/controller/userinput/menus/ManageClubs.java +++ b/src/main/java/design/controller/userinput/menus/ManageClubs.java @@ -37,6 +37,11 @@ public class ManageClubs extends Menu { var selector = new SelectClub(); selector.present(); golfer.removeClub(selector.getResult()); + try { + personalDB.updateGolfer(golfer); + } catch (IOException ex) { + System.out.println("Failed to update golfer."); + } this.present(); })); diff --git a/src/main/java/design/controller/userinput/menus/ManageCourses.java b/src/main/java/design/controller/userinput/menus/ManageCourses.java index a0d7b61..4306560 100644 --- a/src/main/java/design/controller/userinput/menus/ManageCourses.java +++ b/src/main/java/design/controller/userinput/menus/ManageCourses.java @@ -4,12 +4,15 @@ import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Course; import design.model.Golfer; +import design.persistence.PersonalDatabase; import design.runtime.Session; +import java.io.IOException; import java.util.List; public class ManageCourses extends Menu { private final Golfer golfer = Session.getCurrentGolfer(); + private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE; @Override public String getTitle() { @@ -32,6 +35,11 @@ public class ManageCourses extends Menu { var selector = new SelectCourse(); selector.present(); golfer.removeCourse(selector.getResult()); + try { + personalDB.updateGolfer(golfer); + } catch (IOException ex) { + System.out.println("Failed to update golfer."); + } this.present(); })); diff --git a/src/main/java/design/model/Club.java b/src/main/java/design/model/Club.java index 9fa3c87..b12fd99 100644 --- a/src/main/java/design/model/Club.java +++ b/src/main/java/design/model/Club.java @@ -1,5 +1,13 @@ package design.model; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; + +@JsonIdentityInfo( + generator = ObjectIdGenerators.PropertyGenerator.class, + property = "id", + scope = Club.class +) public class Club { public enum ClubType { diff --git a/src/main/java/design/model/Golfer.java b/src/main/java/design/model/Golfer.java index 774bb78..48daae8 100644 --- a/src/main/java/design/model/Golfer.java +++ b/src/main/java/design/model/Golfer.java @@ -1,10 +1,12 @@ package design.model; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.util.ArrayList; import java.util.List; +@JsonPropertyOrder({ "clubs", "nextClubId" }) public class Golfer { private String username; private int passwordHash; diff --git a/src/main/java/design/model/Swing.java b/src/main/java/design/model/Swing.java index a93b66f..43c20f0 100644 --- a/src/main/java/design/model/Swing.java +++ b/src/main/java/design/model/Swing.java @@ -1,7 +1,11 @@ package design.model; +import com.fasterxml.jackson.annotation.JsonIdentityReference; + public class Swing { private final int distance; + + @JsonIdentityReference(alwaysAsId = true) private final Club clubUsed; public Swing(int distance, Club clubUsed) { diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index 3975d14..db613d9 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; +import design.model.Club; import design.model.Course; import design.model.Golfer; -- cgit v1.2.3