summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/League.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-13 08:20:04 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-13 08:20:04 -0500
commitc1bf473e5c6735ae00c3fbfec0f9d16c421387db (patch)
tree703e1bfaf95d274ff10d9946e63d2e4e39ae9d6f /src/main/java/design/model/League.java
parentc8e3d79f09670a94c0a2f503ca6c78f9913a1669 (diff)
parentaf23c48329b749ba3d0a4fcd841723d55a16ae95 (diff)
downloaddesignproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.tar.gz
designproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.tar.bz2
designproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.zip
Merge remote-tracking branch 'origin/league-model'
# Conflicts: # src/main/java/design/controller/userinput/menus/MainMenu.java # src/main/java/design/model/Golfer.java # src/test/java/design/model/ClubTest.java # src/test/java/design/model/GolferTest.java
Diffstat (limited to 'src/main/java/design/model/League.java')
-rw-r--r--src/main/java/design/model/League.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java
new file mode 100644
index 0000000..881e25f
--- /dev/null
+++ b/src/main/java/design/model/League.java
@@ -0,0 +1,90 @@
+package design.model;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.PROPERTY,
+ property = "type"
+)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = ScrambleLeague.class, name = "scramble"),
+ @JsonSubTypes.Type(value = StrokeLeague.class, name = "stroke")
+})
+public abstract class League {
+ private int id;
+ private final String name;
+ private final Date registrationDate;
+ private final Date startDate;
+ private final Date endDate;
+ private final Golfer owner;
+ private final List<Match> schedule;
+
+ @JsonCreator
+ protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List<Match> schedule) {
+ this.id = id;
+ this.name = name;
+ this.registrationDate = registrationDate;
+ this.startDate = startDate;
+ this.endDate = endDate;
+ this.owner = owner;
+ this.schedule = schedule != null ? schedule : new ArrayList<>();
+ }
+
+ public League(String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) {
+ this.id = -1;
+ this.name = name;
+ this.registrationDate = registrationDate;
+ this.startDate = startDate;
+ this.endDate = endDate;
+ this.owner = owner;
+ this.schedule = new ArrayList<>();
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Date getRegistrationDate() {
+ return registrationDate;
+ }
+
+ public Date getStartDate() {
+ return startDate;
+ }
+
+ public Date getEndDate() {
+ return endDate;
+ }
+
+ public Golfer getOwner() {
+ return owner;
+ }
+
+ public Match[] getSchedule() {
+ return schedule.toArray(Match[]::new);
+ }
+
+ public void addMatchToSchedule(Match match) {
+ Date date = match.getDateScheduled();
+ if(date.after(endDate)){
+ throw new IllegalArgumentException("Cannot create match after league has ended");
+ }
+ schedule.add(match);
+ }
+
+ public void setId(int id) {
+ assert this.id == -1;
+ this.id = id;
+ }
+}