summaryrefslogtreecommitdiff
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
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 '')
-rw-r--r--data/personaldb.json92
-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
7 files changed, 62 insertions, 58 deletions
diff --git a/data/personaldb.json b/data/personaldb.json
index d03005f..3fe73c9 100644
--- a/data/personaldb.json
+++ b/data/personaldb.json
@@ -1,5 +1,26 @@
[
{
+ "clubs": [
+ {
+ "id": 1,
+ "manufacture": "Bobby",
+ "nickname": "swen 261",
+ "clubType": "DRIVER"
+ },
+ {
+ "id": 2,
+ "manufacture": "Bobby",
+ "nickname": "swen 262",
+ "clubType": "PUTTER"
+ },
+ {
+ "id": 3,
+ "manufacture": "sowclub",
+ "nickname": "man",
+ "clubType": "WOOD"
+ }
+ ],
+ "nextClubId": 4,
"username": "john_doe",
"passwordHash": 46792755,
"fullName": "John Doe",
@@ -29,30 +50,15 @@
"swings": [
{
"distance": 100,
- "clubUsed": {
- "id": 1,
- "manufacture": "Bobby",
- "nickname": "swen 261",
- "clubType": "DRIVER"
- }
+ "clubUsed": 1
},
{
"distance": 5,
- "clubUsed": {
- "id": 2,
- "manufacture": "Bobby",
- "nickname": "swen 262",
- "clubType": "PUTTER"
- }
+ "clubUsed": 2
},
{
"distance": 1,
- "clubUsed": {
- "id": 2,
- "manufacture": "Bobby",
- "nickname": "swen 262",
- "clubType": "PUTTER"
- }
+ "clubUsed": 2
}
],
"swingCount": 3,
@@ -63,21 +69,11 @@
"swings": [
{
"distance": 1000,
- "clubUsed": {
- "id": 1,
- "manufacture": "Bobby",
- "nickname": "swen 261",
- "clubType": "DRIVER"
- }
+ "clubUsed": 1
},
{
"distance": 2,
- "clubUsed": {
- "id": 1,
- "manufacture": "Bobby",
- "nickname": "swen 261",
- "clubType": "DRIVER"
- }
+ "clubUsed": 1
}
],
"swingCount": 2,
@@ -85,12 +81,12 @@
}
],
"currentHoleIndex": 2,
+ "totalSwings": 5,
+ "totalDistance": 1108.0,
"currentHole": {
"number": 3,
"par": 4
- },
- "totalSwings": 5,
- "totalDistance": 1108.0
+ }
},
{
"course": 1,
@@ -113,12 +109,7 @@
"swings": [
{
"distance": 204,
- "clubUsed": {
- "id": 1,
- "manufacture": "Bobby",
- "nickname": "swen 261",
- "clubType": "DRIVER"
- }
+ "clubUsed": 1
}
],
"swingCount": 1,
@@ -126,28 +117,13 @@
}
],
"currentHoleIndex": 9,
+ "totalSwings": 1,
+ "totalDistance": 204.0,
"currentHole": {
"number": 10,
"par": 3
- },
- "totalSwings": 1,
- "totalDistance": 204.0
- }
- ],
- "clubs": [
- {
- "id": 1,
- "manufacture": "Bobby",
- "nickname": "swen 261",
- "clubType": "DRIVER"
- },
- {
- "id": 2,
- "manufacture": "Bobby",
- "nickname": "swen 262",
- "clubType": "PUTTER"
+ }
}
- ],
- "nextClubId": 3
+ ]
}
] \ No newline at end of file
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;