summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/statistics
diff options
context:
space:
mode:
authorJacob Shimp <jrs9538@g.rit.edu>2025-11-14 20:26:21 -0500
committerJacob Shimp <jrs9538@g.rit.edu>2025-11-14 20:26:21 -0500
commit23ea4f3a14d6cf2ec76567422320d0279d1d390a (patch)
treec9382c8738b210bcf77583b8f2273558e7523753 /src/main/java/design/model/statistics
parent5b1877bc1f4b5121ecd5befdc9ebb5e36da5c847 (diff)
downloaddesignproject-design-6-23ea4f3a14d6cf2ec76567422320d0279d1d390a.tar.gz
designproject-design-6-23ea4f3a14d6cf2ec76567422320d0279d1d390a.tar.bz2
designproject-design-6-23ea4f3a14d6cf2ec76567422320d0279d1d390a.zip
Potential implementation of LeagueStats
Diffstat (limited to 'src/main/java/design/model/statistics')
-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..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<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()).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();
+ }
+}