diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-11-13 08:20:04 -0500 |
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-11-13 08:20:04 -0500 |
| commit | c1bf473e5c6735ae00c3fbfec0f9d16c421387db (patch) | |
| tree | 703e1bfaf95d274ff10d9946e63d2e4e39ae9d6f /src/main/java/design/model/League.java | |
| parent | c8e3d79f09670a94c0a2f503ca6c78f9913a1669 (diff) | |
| parent | af23c48329b749ba3d0a4fcd841723d55a16ae95 (diff) | |
| download | designproject-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 '')
| -rw-r--r-- | src/main/java/design/model/League.java | 90 |
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; + } +} |
