diff options
Diffstat (limited to 'src/main/java/design/model')
3 files changed, 37 insertions, 6 deletions
diff --git a/src/main/java/design/model/statistics/HoleStats.java b/src/main/java/design/model/statistics/HoleStats.java index 2c023b4..6f6104a 100644 --- a/src/main/java/design/model/statistics/HoleStats.java +++ b/src/main/java/design/model/statistics/HoleStats.java @@ -3,6 +3,7 @@ package design.model.statistics; import java.util.Arrays; import design.model.Hole; +import design.model.Play; import design.model.Round; public class HoleStats extends StatisticsDecorator{ @@ -16,7 +17,35 @@ public class HoleStats extends StatisticsDecorator{ @Override public Round[] getRounds(){ return Arrays.stream(super.getRounds()) - .filter(round -> round.getCourse().getHoles().stream().anyMatch(hole -> hole.equals(target_hole))) + .filter(round -> round.getCourse().getHoles().contains(target_hole)) .toArray(Round[]::new); } + + @Override + public int get_score() { + // Sum swings only on the target hole + int totalSwings = 0; + for (Round round : super.getRounds()) { + for (Play play : round.getPlays()) { + if (play.getHoleNumber() == target_hole.getNumber()) { + totalSwings += play.getSwingCount(); + } + } + } + return totalSwings; + } + + @Override + public double get_distance() { + // Sum distances only on the target hole + double totalDistance = 0; + for (Round round : super.getRounds()) { + for (Play play : round.getPlays()) { + if (play.getHoleNumber() == target_hole.getNumber()) { + totalDistance += play.getDistance(); + } + } + } + return totalDistance; + } } diff --git a/src/main/java/design/model/statistics/RoundStats.java b/src/main/java/design/model/statistics/RoundStats.java index 598ca59..4ce89b0 100644 --- a/src/main/java/design/model/statistics/RoundStats.java +++ b/src/main/java/design/model/statistics/RoundStats.java @@ -15,7 +15,7 @@ public class RoundStats extends StatisticsDecorator{ @Override public Round[] getRounds(){ return Arrays.stream(super.getRounds()) - .filter(round -> round == target_round) + .filter(round -> round.getDateTime().equals(target_round.getDateTime()) && round.getTotalSwings() == target_round.getTotalSwings() && round.getTotalDistance() == target_round.getTotalDistance()) .toArray(Round[]::new); } } diff --git a/src/main/java/design/model/statistics/StatisticsDecorator.java b/src/main/java/design/model/statistics/StatisticsDecorator.java index 91ca452..ed83a9e 100644 --- a/src/main/java/design/model/statistics/StatisticsDecorator.java +++ b/src/main/java/design/model/statistics/StatisticsDecorator.java @@ -1,5 +1,7 @@ package design.model.statistics; +import java.util.Arrays; + import design.model.Round; public abstract class StatisticsDecorator implements Statistics{ @@ -12,11 +14,11 @@ public abstract class StatisticsDecorator implements Statistics{ return wrapped_statistics.getRounds(); } @Override - public int get_score(){ - return wrapped_statistics.get_score(); + public int get_score() { + return Arrays.stream(getRounds()).mapToInt(Round::getTotalSwings).sum(); } @Override - public double get_distance(){ - return wrapped_statistics.get_distance(); + public double get_distance() { + return Arrays.stream(getRounds()).mapToDouble(Round::getTotalDistance).sum(); } } |
