summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/League.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/model/League.java19
1 files changed, 15 insertions, 4 deletions
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<Match> schedule;
+ private final List<Match> schedule;
@JsonCreator
protected League(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List<Match> 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<Match> getSchedule() {
- return schedule;
+ public Match[] getSchedule() {
+ return schedule.toArray(Match[]::new);
}
public void addMatchToSchedule(Match match) {