diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/model/League.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 1f4c9cb..8793c86 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; private boolean completed; @JsonCreator @@ -24,7 +35,7 @@ public abstract class League { this.startDate = startDate; this.endDate = endDate; this.owner = owner; - this.schedule = schedule; + this.schedule = schedule != null ? schedule : new ArrayList<>(); this.completed = false; } @@ -63,8 +74,8 @@ public abstract class League { return owner; } - public List<Match> getSchedule() { - return schedule; + public Match[] getSchedule() { + return schedule.toArray(Match[]::new); } public boolean isCompleted() { @@ -83,6 +94,12 @@ public abstract class League { this.id = id; } + public abstract String getType(); + + @Override + public String toString() { + return String.format("%s - %s", name, getType()); + } public boolean isPlayable() { Date now = new Date(); return now.after(startDate) && now.before(endDate); |
