From e56ad78ddba089b5bb93af96e33ee7c42b7d0b51 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 9 Nov 2025 00:06:03 -0500 Subject: create most of the model and league DAOs --- src/main/java/design/model/League.java | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/design/model/League.java (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java new file mode 100644 index 0000000..98c9bdd --- /dev/null +++ b/src/main/java/design/model/League.java @@ -0,0 +1,45 @@ +package design.model; + +import java.util.Date; + +public abstract class League { + private final int id; + private final String name; + private final Date registrationDate; + private final Date startDate; + private final Date endDate; + private final Golfer owner; + + public League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { + this.id = id; + this.name = name; + this.registrationDate = registrationDate; + this.startDate = startDate; + this.endDate = endDate; + this.owner = owner; + } + + 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; + } +} -- cgit v1.2.3 From 7a87c716e85a12c72c24173b88b2e07729d85241 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 9 Nov 2025 01:01:03 -0500 Subject: complete serialization --- src/main/java/design/model/League.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 98c9bdd..eb9eef5 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -1,16 +1,19 @@ package design.model; +import com.fasterxml.jackson.annotation.JsonCreator; + import java.util.Date; public abstract class League { - private final int id; + private int id; private final String name; private final Date registrationDate; private final Date startDate; private final Date endDate; private final Golfer owner; - public League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { + @JsonCreator + private League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { this.id = id; this.name = name; this.registrationDate = registrationDate; @@ -19,6 +22,15 @@ public abstract class League { this.owner = owner; } + 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; + } + public int getId() { return id; } @@ -42,4 +54,9 @@ public abstract class League { public Golfer getOwner() { return owner; } + + public void setId(int id) { + assert this.id == -1; + this.id = id; + } } -- cgit v1.2.3 From 3e946eef622b393a7cdcefcffe5eb6efed0ef2a4 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 9 Nov 2025 14:50:00 -0500 Subject: fix error --- src/main/java/design/model/League.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index eb9eef5..0252f89 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -13,7 +13,7 @@ public abstract class League { private final Golfer owner; @JsonCreator - private League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { + protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { this.id = id; this.name = name; this.registrationDate = registrationDate; -- cgit v1.2.3 From fcf058c1999e4d23fd9e79e021901dbb39095367 Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Tue, 11 Nov 2025 08:48:38 -0500 Subject: Added list of matches --- src/main/java/design/model/League.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 0252f89..6621513 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -3,6 +3,7 @@ package design.model; import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Date; +import java.util.List; public abstract class League { private int id; @@ -13,7 +14,7 @@ public abstract class League { private final Golfer owner; @JsonCreator - protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { + protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List schedule) { this.id = id; this.name = name; this.registrationDate = registrationDate; -- cgit v1.2.3 From a0b662eccc6422348a1016dc71b8262eeeeee78f Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Tue, 11 Nov 2025 09:02:20 -0500 Subject: working with matches in league --- src/main/java/design/model/League.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 6621513..6dab033 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -2,6 +2,7 @@ package design.model; import com.fasterxml.jackson.annotation.JsonCreator; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -12,6 +13,7 @@ public abstract class League { private final Date startDate; private final Date endDate; private final Golfer owner; + private List schedule; @JsonCreator protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List schedule) { @@ -21,6 +23,7 @@ public abstract class League { this.startDate = startDate; this.endDate = endDate; this.owner = owner; + this.schedule = schedule; } public League(String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { @@ -30,6 +33,7 @@ public abstract class League { this.startDate = startDate; this.endDate = endDate; this.owner = owner; + this.schedule = new ArrayList<>(); } public int getId() { @@ -56,6 +60,18 @@ public abstract class League { return owner; } + public List getSchedule() { + return schedule; + } + + 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; -- cgit v1.2.3 From 9a0949d31a7a0e8c9c311b07e92852cff867cc66 Mon Sep 17 00:00:00 2001 From: sowgro Date: Wed, 12 Nov 2025 12:55:12 -0500 Subject: Fix some serialization stuff --- src/main/java/design/model/League.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/main/java/design/model/League.java') diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 6dab033..881e25f 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -1,11 +1,22 @@ 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; @@ -13,7 +24,7 @@ public abstract class League { private final Date startDate; private final Date endDate; private final Golfer owner; - private List schedule; + private final List schedule; @JsonCreator protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List schedule) { @@ -23,7 +34,7 @@ public abstract class League { this.startDate = startDate; this.endDate = endDate; this.owner = owner; - this.schedule = schedule; + this.schedule = schedule != null ? schedule : new ArrayList<>(); } public League(String name, Date registrationDate, Date startDate, Date endDate, Golfer owner) { @@ -60,8 +71,8 @@ public abstract class League { return owner; } - public List getSchedule() { - return schedule; + public Match[] getSchedule() { + return schedule.toArray(Match[]::new); } public void addMatchToSchedule(Match match) { -- cgit v1.2.3