summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/statistics/LeagueStats.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/design/model/statistics/LeagueStats.java')
-rw-r--r--src/main/java/design/model/statistics/LeagueStats.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/design/model/statistics/LeagueStats.java b/src/main/java/design/model/statistics/LeagueStats.java
new file mode 100644
index 0000000..c80df07
--- /dev/null
+++ b/src/main/java/design/model/statistics/LeagueStats.java
@@ -0,0 +1,50 @@
+package design.model.statistics;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import design.model.League;
+import design.model.Match;
+import design.model.Round;
+
+public class LeagueStats implements Statistics{
+ private final League league;
+
+ public LeagueStats(League league) {
+ this.league = league;
+ }
+
+ public List<Match> getMatchesPlayed() {
+ return league.getCompletedMatches();
+ }
+
+ public Map<?, Integer> getScores() {
+ return league.getResults();
+ }
+
+ public List<? extends Map.Entry<?, Integer>> getStandings(){
+ return league.getResults().entrySet().stream().sorted(Map.Entry.comparingByValue()).<Map.Entry<?, Integer>>map(e -> e).toList();
+ }
+
+ public List<?> getWinners(){
+ List<? extends Map.Entry<?, Integer>> standings = getStandings();
+ int bestScore = standings.get(0).getValue();
+ return standings.stream().filter(entry -> entry.getValue() == bestScore).map(Map.Entry::getKey).toList();
+ }
+
+ @Override
+ public Round[] getRounds(){
+ return league.getCompletedMatches().stream().flatMap(match -> Arrays.stream(match.getRounds())).toArray(Round[]::new);
+ }
+
+ @Override
+ public int get_score(){
+ return Arrays.stream(getRounds()).mapToInt(Round::getTotalSwings).sum();
+ }
+
+ @Override
+ public double get_distance(){
+ return Arrays.stream(getRounds()).mapToDouble(Round::getTotalDistance).sum();
+ }
+}