diff options
Diffstat (limited to 'src/main/java/design/model/statistics')
| -rw-r--r-- | src/main/java/design/model/statistics/LeagueStats.java | 50 |
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(); + } +} |
