summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/League.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/design/model/League.java')
-rw-r--r--src/main/java/design/model/League.java25
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);