diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 4 | ||||
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/LeageMenu.java | 12 | ||||
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/LeagueStatsMenu.java | 43 | ||||
| -rw-r--r-- | src/main/java/design/model/League.java | 12 | ||||
| -rw-r--r-- | src/main/java/design/model/Match.java | 4 | ||||
| -rw-r--r-- | src/main/java/design/model/ScrambleLeague.java | 35 | ||||
| -rw-r--r-- | src/main/java/design/model/StrokeLeague.java | 31 | ||||
| -rw-r--r-- | src/main/java/design/model/Team.java | 12 |
8 files changed, 106 insertions, 47 deletions
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java index 6651500..e4dc43d 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -28,6 +28,10 @@ public class HolePlayMenu extends Menu { this.ctx = new HolePlayContext(this.golfer, round, PersonalDatabase.instance()); } + public Round getRound() { + return round; + } + @Override public String getTitle() { return String.format("hole play - %s | hole %d", round.getCourse().getName(), diff --git a/src/main/java/design/controller/userinput/menus/LeageMenu.java b/src/main/java/design/controller/userinput/menus/LeageMenu.java index d9afa91..fb03d52 100644 --- a/src/main/java/design/controller/userinput/menus/LeageMenu.java +++ b/src/main/java/design/controller/userinput/menus/LeageMenu.java @@ -3,6 +3,8 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.League; +import design.model.Round; +import design.runtime.Session; import java.util.ArrayList; import java.util.List; @@ -22,9 +24,13 @@ public class LeageMenu extends Menu { @Override public List<MenuOption> getMenuOptions() { List<MenuOption> options = new ArrayList<>(); - options.add(new MenuOption("statistics...", () -> {})); - options.add(new MenuOption("leaderboard...", () -> {})); - options.add(new MenuOption("log round...", () -> {})); + options.add(new MenuOption("statistics...", () -> new LeagueStatsMenu(league).present())); + options.add(new MenuOption("log round...", () -> { + var holePlay = new HolePlayMenu(); + holePlay.present(); + Round round = holePlay.getRound(); + league.recordPlay(Session.getCurrentGolfer(), league.getCurrentMatch(), round); + })); return options; } } diff --git a/src/main/java/design/controller/userinput/menus/LeagueStatsMenu.java b/src/main/java/design/controller/userinput/menus/LeagueStatsMenu.java new file mode 100644 index 0000000..d0aa2b2 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/LeagueStatsMenu.java @@ -0,0 +1,43 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.model.League; +import design.model.statistics.LeagueStats; + +import java.util.List; + +public class LeagueStatsMenu extends Menu { + private final LeagueStats league; + + public LeagueStatsMenu(League league) { + this.league = new LeagueStats(league); + } + + @Override + public String getTitle() { + return "League Stats"; + } + + @Override + public List<MenuOption> getMenuOptions() { + return List.of( + new MenuOption("View Played Matches", () -> { + System.out.println(league.getMatchesPlayed()); + this.present(); + }), + new MenuOption("Get Scores", () -> { + System.out.println(league.getScores()); + this.present(); + }), + new MenuOption("Get Standings", () -> { + System.out.println(league.getStandings()); + this.present(); + }), + new MenuOption("Get Winners", () -> { + System.out.println(league.getWinners()); + this.present(); + }) + ); + } +} diff --git a/src/main/java/design/model/League.java b/src/main/java/design/model/League.java index 2a7366a..44dc83e 100644 --- a/src/main/java/design/model/League.java +++ b/src/main/java/design/model/League.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -104,6 +105,15 @@ public abstract class League { schedule.add(match); } + public Match getCurrentMatch() { + for(Match m : schedule){ + if(m.getStart().isBefore(LocalDateTime.now()) && m.getEnd().isAfter(LocalDateTime.now())){ + return m; + } + } + return null; + } + public void setId(int id) { assert this.id == -1; this.id = id; @@ -130,5 +140,5 @@ public abstract class League { public abstract Map<?, Integer> getResults(); - public abstract void finalizeMatch(Match match); + //public abstract void finalizeMatch(Match match); } diff --git a/src/main/java/design/model/Match.java b/src/main/java/design/model/Match.java index 525f281..3c19230 100644 --- a/src/main/java/design/model/Match.java +++ b/src/main/java/design/model/Match.java @@ -49,6 +49,10 @@ public class Match { return start; } + public LocalDateTime getEnd() { + return end; + } + public int getHoleCount() { return holeCount; } diff --git a/src/main/java/design/model/ScrambleLeague.java b/src/main/java/design/model/ScrambleLeague.java index adf2105..1765d81 100644 --- a/src/main/java/design/model/ScrambleLeague.java +++ b/src/main/java/design/model/ScrambleLeague.java @@ -13,8 +13,8 @@ import java.util.Map; @JsonTypeName("scramble") public class ScrambleLeague extends League { - private List<Team> participants; - private Map<Team, Integer> totalTeamScores; + private final List<Team> participants; + private final Map<Team, Integer> totalTeamScores; @JsonCreator private ScrambleLeague(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List<Team> participants, List<Match> schedule) { @@ -31,9 +31,8 @@ public class ScrambleLeague extends League { } public boolean addParticipants(Team t) { - boolean added = participants.add(t); - if(added) totalTeamScores.putIfAbsent(t, 0); - return added; + totalTeamScores.putIfAbsent(t, 0); + return participants.add(t); } public boolean removeParticipants(Team t) { @@ -89,17 +88,17 @@ public class ScrambleLeague extends League { return getTotalTeamScores(); } - @Override - public void finalizeMatch(Match match) { - getCompletedMatches().add(match); - for(int i = 0; i < participants.size(); i++){ - Team team = participants.get(i); - Round round = match.getRoundFor(i); - if(round != null){ - for(Golfer member : team.getMembers()){ - member.addRound(round); - } - } - } - } +// @Override +// public void finalizeMatch(Match match) { +// getCompletedMatches().add(match); +// for(int i = 0; i < participants.size(); i++){ +// Team team = participants.get(i); +// Round round = match.getRoundFor(i); +// if(round != null){ +// for(Golfer member : team.getMembers()){ +// member.addRound(round); +// } +// } +// } +// } } diff --git a/src/main/java/design/model/StrokeLeague.java b/src/main/java/design/model/StrokeLeague.java index 48889b7..57ba1aa 100644 --- a/src/main/java/design/model/StrokeLeague.java +++ b/src/main/java/design/model/StrokeLeague.java @@ -13,8 +13,8 @@ import java.util.Map; @JsonTypeName("stroke") public class StrokeLeague extends League { - private List<Golfer> participants; - private Map<Golfer, Integer> totalStrokes; + private final List<Golfer> participants; + private final Map<Golfer, Integer> totalStrokes; @JsonCreator private StrokeLeague(int id, String name, Date registrationDate, Date startDate, Date endDate, Golfer owner, List<Golfer> participants, List<Match> schedule) { @@ -31,9 +31,8 @@ public class StrokeLeague extends League { } public boolean addParticipants(Golfer g) { - boolean added = participants.add(g); - if(added) totalStrokes.putIfAbsent(g, 0); - return added; + totalStrokes.putIfAbsent(g, 0); + return participants.add(g); } public boolean removeParticipants(Golfer g) { @@ -73,15 +72,15 @@ public class StrokeLeague extends League { return getTotalStrokes(); } - @Override - public void finalizeMatch(Match match) { - getCompletedMatches().add(match); - for(int i = 0; i < participants.size(); i++){ - Golfer player = participants.get(i); - Round round = match.getRoundFor(i); - if(round != null){ - player.addRound(round); - } - } - } +// @Override +// public void finalizeMatch(Match match) { +// getCompletedMatches().add(match); +// for(int i = 0; i < participants.size(); i++){ +// Golfer player = participants.get(i); +// Round round = match.getRoundFor(i); +// if(round != null){ +// player.addRound(round); +// } +// } +// } } diff --git a/src/main/java/design/model/Team.java b/src/main/java/design/model/Team.java index 8f30468..eb04a37 100644 --- a/src/main/java/design/model/Team.java +++ b/src/main/java/design/model/Team.java @@ -10,11 +10,9 @@ public class Team { private String name; private final List<Golfer> members; private final Map<Golfer, Integer> memberBestRounds; - private final Golfer owner; - public Team(String name, Golfer owner) { + public Team(String name) { this.name = name; - this.owner = owner; this.members = new ArrayList<>(); this.memberBestRounds = new HashMap<>(); } @@ -43,10 +41,6 @@ public class Team { return members.remove(g); } - public Golfer getOwner() { - return owner; - } - public void addMemberRound(Golfer g, int strokes){ memberBestRounds.merge(g, strokes, Math::min); } @@ -61,11 +55,11 @@ public class Team { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; Team other = (Team) obj; - return Objects.equals(name, other.name) && Objects.equals(owner, other.owner); + return Objects.equals(name, other.name); } @Override public int hashCode() { - return Objects.hash(name, owner); + return Objects.hash(name); } } |
