summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/statistics
diff options
context:
space:
mode:
authorTyler Ferrari <69283684+Sowgro@users.noreply.github.com>2025-10-09 08:33:53 -0400
committerGitHub <noreply@github.com>2025-10-09 08:33:53 -0400
commit1eca2f8681752ad359e8372780cdf719e2b1747d (patch)
treeac1ece075909102027be22a5ae2472f286f09b10 /src/main/java/design/model/statistics
parentf115308210fd98e6b6f83f8c091ca72dbfb666fb (diff)
parent7bbb3d8d7842c5e212124631c302b63bdc370f20 (diff)
downloaddesignproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.tar.gz
designproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.tar.bz2
designproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.zip
Merge pull request #11 from RIT-SWEN-262/statistic-dev
Statistic dev - Menu implementation
Diffstat (limited to 'src/main/java/design/model/statistics')
-rw-r--r--src/main/java/design/model/statistics/HoleStats.java31
-rw-r--r--src/main/java/design/model/statistics/RoundStats.java2
-rw-r--r--src/main/java/design/model/statistics/StatisticsDecorator.java10
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();
}
}