From d982cfe8a22ec7eb89186fed875a483a51c3505f Mon Sep 17 00:00:00 2001 From: sowgro Date: Fri, 3 Oct 2025 00:31:02 -0400 Subject: Add code to handle id serialization --- src/main/java/design/model/Round.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/model/Round.java') diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java index 38975da..39de907 100644 --- a/src/main/java/design/model/Round.java +++ b/src/main/java/design/model/Round.java @@ -5,11 +5,19 @@ import java.util.ArrayList; import java.util.List; public class Round { - private final transient Course course; + private final Course course; private final LocalDateTime dateTime; private final Hole startingHole; private final List plays; + // for deserialization + private Round(Course course, LocalDateTime dateTime, Hole startingHole, List plays) { + this.course = course; + this.dateTime = dateTime; + this.startingHole = startingHole; + this.plays = plays; + } + public Round(Course course, LocalDateTime dateTime, Hole startingHole) { this.course = course; this.dateTime = dateTime; -- cgit v1.2.3 From 29c4a7caffea3957b8ac5f6be13d640c1a798989 Mon Sep 17 00:00:00 2001 From: sowgro Date: Fri, 3 Oct 2025 20:37:43 -0400 Subject: Serialization fully working --- src/main/java/design/model/Round.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/model/Round.java') diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java index 39de907..048a21a 100644 --- a/src/main/java/design/model/Round.java +++ b/src/main/java/design/model/Round.java @@ -1,5 +1,7 @@ package design.model; +import com.fasterxml.jackson.annotation.JsonCreator; + import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -10,7 +12,7 @@ public class Round { private final Hole startingHole; private final List plays; - // for deserialization + @JsonCreator private Round(Course course, LocalDateTime dateTime, Hole startingHole, List plays) { this.course = course; this.dateTime = dateTime; -- cgit v1.2.3 From 40470b1788c28f1c95bba7339dd9819b0e9b95cc Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Sun, 5 Oct 2025 05:29:38 -0400 Subject: Updated logic and completed holeplay subsystem --- src/main/java/design/model/Round.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main/java/design/model/Round.java') diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java index 048a21a..bc4914e 100644 --- a/src/main/java/design/model/Round.java +++ b/src/main/java/design/model/Round.java @@ -11,6 +11,7 @@ public class Round { private final LocalDateTime dateTime; private final Hole startingHole; private final List plays; + private int currentHoleIndex; @JsonCreator private Round(Course course, LocalDateTime dateTime, Hole startingHole, List plays) { @@ -18,6 +19,9 @@ public class Round { this.dateTime = dateTime; this.startingHole = startingHole; this.plays = plays; + // Allows the golfer to start anywhere on the course. Helps HolePalyContext be + // simpler. + this.currentHoleIndex = Math.max(0, startingHole.getNumber() - 1); } public Round(Course course, LocalDateTime dateTime, Hole startingHole) { @@ -25,6 +29,9 @@ public class Round { this.dateTime = dateTime; this.startingHole = startingHole; plays = new ArrayList<>(); + // Allows the golfer to start anywhere on the course. Helps HolePalyContext be + // simpler. + this.currentHoleIndex = Math.max(0, startingHole.getNumber() - 1); } public int getTotalSwings() { @@ -52,4 +59,14 @@ public class Round { public void addPlay(Play play) { plays.add(play); } + + // Current hole + public Hole getCurrentHole() { + return course.getHoles().get(currentHoleIndex); + } + + // Handles wraparound too + public void nextHole() { + currentHoleIndex = (currentHoleIndex + 1) % course.getHoleCount(); + } } -- cgit v1.2.3