From 23ea4f3a14d6cf2ec76567422320d0279d1d390a Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Fri, 14 Nov 2025 20:26:21 -0500 Subject: Potential implementation of LeagueStats --- .../java/design/model/statistics/LeagueStats.java | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/main/java/design/model/statistics/LeagueStats.java (limited to 'src/main/java/design/model/statistics/LeagueStats.java') 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..a4e6950 --- /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 getMatchesPlayed() { + return league.getCompletedMatches(); + } + + public Map getScores() { + return league.getResults(); + } + + public List> getStandings(){ + return league.getResults().entrySet().stream().sorted(Map.Entry.comparingByValue()).toList(); + } + + public List getWinners(){ + List> 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(); + } +} -- cgit v1.2.3