summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java4
-rw-r--r--src/main/java/design/controller/userinput/menus/LeageMenu.java12
-rw-r--r--src/main/java/design/controller/userinput/menus/LeagueStatsMenu.java43
-rw-r--r--src/main/java/design/model/League.java12
-rw-r--r--src/main/java/design/model/Match.java4
-rw-r--r--src/main/java/design/model/ScrambleLeague.java35
-rw-r--r--src/main/java/design/model/StrokeLeague.java31
-rw-r--r--src/main/java/design/model/Team.java12
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);
}
}