summaryrefslogtreecommitdiff
path: root/src/main/java/design
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-12 00:55:11 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-12 00:55:11 -0400
commit8d37a242acf4026c097f44c2383a7c746cff6393 (patch)
tree6c013996eaf7deba5a5d3e2ff012f712d3063b52 /src/main/java/design
parentab8fc9a51e594d19a0fa020bc7ae60efe5824c42 (diff)
downloaddesignproject-design-6-8d37a242acf4026c097f44c2383a7c746cff6393.tar.gz
designproject-design-6-8d37a242acf4026c097f44c2383a7c746cff6393.tar.bz2
designproject-design-6-8d37a242acf4026c097f44c2383a7c746cff6393.zip
fix club serialization and saving of some options
Diffstat (limited to 'src/main/java/design')
-rw-r--r--src/main/java/design/controller/userinput/menus/ManageClubs.java5
-rw-r--r--src/main/java/design/controller/userinput/menus/ManageCourses.java8
-rw-r--r--src/main/java/design/model/Club.java8
-rw-r--r--src/main/java/design/model/Golfer.java2
-rw-r--r--src/main/java/design/model/Swing.java4
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java1
6 files changed, 28 insertions, 0 deletions
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;