summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/statistics
diff options
context:
space:
mode:
authorJacob Shimp <jrs9538@g.rit.edu>2025-10-03 20:31:51 -0400
committerJacob Shimp <jrs9538@g.rit.edu>2025-10-03 20:31:51 -0400
commitb4919667c3455d8b517df6a72b7d37e0734d9155 (patch)
tree90ebac20004e24d1ea5bbec1477204cc7e3cea17 /src/main/java/design/model/statistics
parent19101e44d4e658650b535eb14692446b098215e3 (diff)
downloaddesignproject-design-6-b4919667c3455d8b517df6a72b7d37e0734d9155.tar.gz
designproject-design-6-b4919667c3455d8b517df6a72b7d37e0734d9155.tar.bz2
designproject-design-6-b4919667c3455d8b517df6a72b7d37e0734d9155.zip
Implemented all decorators, replaced BaseStatistics with LifetimeStatistics since they would have been redundant
Diffstat (limited to 'src/main/java/design/model/statistics')
-rw-r--r--src/main/java/design/model/statistics/BaseStatistics.java12
-rw-r--r--src/main/java/design/model/statistics/CourseStats.java14
-rw-r--r--src/main/java/design/model/statistics/HoleStats.java20
-rw-r--r--src/main/java/design/model/statistics/LifetimeStats.java31
-rw-r--r--src/main/java/design/model/statistics/RoundStats.java19
-rw-r--r--src/main/java/design/model/statistics/Statistics.java1
-rw-r--r--src/main/java/design/model/statistics/StatisticsDecorator.java6
-rw-r--r--src/main/java/design/model/statistics/YearlyStats.java21
8 files changed, 56 insertions, 68 deletions
diff --git a/src/main/java/design/model/statistics/BaseStatistics.java b/src/main/java/design/model/statistics/BaseStatistics.java
deleted file mode 100644
index f5b6c21..0000000
--- a/src/main/java/design/model/statistics/BaseStatistics.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package design.model.statistics;
-
-public class BaseStatistics implements Statistics{
- @Override
- public int get_score(){
- return 0;
- }
- @Override
- public double get_distance(){
- return 0.0;
- }
-}
diff --git a/src/main/java/design/model/statistics/CourseStats.java b/src/main/java/design/model/statistics/CourseStats.java
index 47cc2c9..98d9529 100644
--- a/src/main/java/design/model/statistics/CourseStats.java
+++ b/src/main/java/design/model/statistics/CourseStats.java
@@ -1,6 +1,9 @@
package design.model.statistics;
+import java.util.Arrays;
+
import design.model.Course;
+import design.model.Round;
public class CourseStats extends StatisticsDecorator{
private Course course;
@@ -11,12 +14,9 @@ public class CourseStats extends StatisticsDecorator{
}
@Override
- public int get_score(){
- return super.get_score();
- }
-
- @Override
- public double get_distance(){
- return super.get_distance();
+ public Round[] getRounds(){
+ return Arrays.stream(super.getRounds())
+ .filter(rounds -> (rounds.getCourse().getName().equals(course.getName()) && rounds.getCourse().getLocation().equals(course.getLocation())))
+ .toArray(Round[]::new);
}
}
diff --git a/src/main/java/design/model/statistics/HoleStats.java b/src/main/java/design/model/statistics/HoleStats.java
index 64fa96c..2c023b4 100644
--- a/src/main/java/design/model/statistics/HoleStats.java
+++ b/src/main/java/design/model/statistics/HoleStats.java
@@ -1,22 +1,22 @@
package design.model.statistics;
+import java.util.Arrays;
+
import design.model.Hole;
+import design.model.Round;
public class HoleStats extends StatisticsDecorator{
- private Hole hole;
+ private Hole target_hole;
- public HoleStats(Statistics wrapped_statistics, Hole hole){
+ public HoleStats(Statistics wrapped_statistics, Hole target_hole){
super(wrapped_statistics);
- this.hole = hole;
- }
-
- @Override
- public int get_score(){
- return super.get_score();
+ this.target_hole = target_hole;
}
@Override
- public double get_distance(){
- return super.get_distance();
+ public Round[] getRounds(){
+ return Arrays.stream(super.getRounds())
+ .filter(round -> round.getCourse().getHoles().stream().anyMatch(hole -> hole.equals(target_hole)))
+ .toArray(Round[]::new);
}
}
diff --git a/src/main/java/design/model/statistics/LifetimeStats.java b/src/main/java/design/model/statistics/LifetimeStats.java
index 6e1cc97..aee4e66 100644
--- a/src/main/java/design/model/statistics/LifetimeStats.java
+++ b/src/main/java/design/model/statistics/LifetimeStats.java
@@ -1,32 +1,31 @@
package design.model.statistics;
import design.model.Golfer;
-import design.model.Play;
import design.model.Round;
-public class LifetimeStats extends StatisticsDecorator{
- private Golfer golfer;
- public LifetimeStats(Statistics wrapped_statistics, Golfer golfer){
- super(wrapped_statistics);
+public class LifetimeStats implements Statistics{
+ private final Golfer golfer;
+ public LifetimeStats(Golfer golfer){
this.golfer = golfer;
}
@Override
+ public Round[] getRounds(){
+ return golfer.getRounds();
+ }
+ @Override
public int get_score(){
- int baseStats = super.get_score();
- for(Round round : golfer.getRounds()){
- baseStats += round.getTotalSwings();
+ int score = 0;
+ for(Round round : getRounds()){
+ score += round.getTotalSwings();
}
- return baseStats;
+ return score;
}
-
@Override
public double get_distance(){
- double baseStats = super.get_distance();
- for(Round round : golfer.getRounds()){
- for(Play play : round.getPlays()){
- baseStats += play.getDistance();
- }
+ double distance = 0;
+ for(Round round : getRounds()){
+ distance += round.getTotalDistance();
}
- return baseStats;
+ return distance;
}
}
diff --git a/src/main/java/design/model/statistics/RoundStats.java b/src/main/java/design/model/statistics/RoundStats.java
index f65a249..598ca59 100644
--- a/src/main/java/design/model/statistics/RoundStats.java
+++ b/src/main/java/design/model/statistics/RoundStats.java
@@ -1,22 +1,21 @@
package design.model.statistics;
+import java.util.Arrays;
+
import design.model.Round;
public class RoundStats extends StatisticsDecorator{
- private Round round;
+ private Round target_round;
- public RoundStats(Statistics wrapped_statistics, Round round){
+ public RoundStats(Statistics wrapped_statistics, Round target_round){
super(wrapped_statistics);
- this.round = round;
- }
-
- @Override
- public int get_score(){
- return super.get_score();
+ this.target_round = target_round;
}
@Override
- public double get_distance(){
- return super.get_distance();
+ public Round[] getRounds(){
+ return Arrays.stream(super.getRounds())
+ .filter(round -> round == target_round)
+ .toArray(Round[]::new);
}
}
diff --git a/src/main/java/design/model/statistics/Statistics.java b/src/main/java/design/model/statistics/Statistics.java
index 9b77f22..53764a1 100644
--- a/src/main/java/design/model/statistics/Statistics.java
+++ b/src/main/java/design/model/statistics/Statistics.java
@@ -3,4 +3,5 @@ package design.model.statistics;
public interface Statistics {
public int get_score();
public double get_distance();
+ design.model.Round[] getRounds();
}
diff --git a/src/main/java/design/model/statistics/StatisticsDecorator.java b/src/main/java/design/model/statistics/StatisticsDecorator.java
index 96a2aaf..91ca452 100644
--- a/src/main/java/design/model/statistics/StatisticsDecorator.java
+++ b/src/main/java/design/model/statistics/StatisticsDecorator.java
@@ -1,11 +1,17 @@
package design.model.statistics;
+import design.model.Round;
+
public abstract class StatisticsDecorator implements Statistics{
protected Statistics wrapped_statistics;
public StatisticsDecorator(Statistics wrapped_statistics){
this.wrapped_statistics = wrapped_statistics;
}
@Override
+ public Round[] getRounds() {
+ return wrapped_statistics.getRounds();
+ }
+ @Override
public int get_score(){
return wrapped_statistics.get_score();
}
diff --git a/src/main/java/design/model/statistics/YearlyStats.java b/src/main/java/design/model/statistics/YearlyStats.java
index 856dda9..4c5d078 100644
--- a/src/main/java/design/model/statistics/YearlyStats.java
+++ b/src/main/java/design/model/statistics/YearlyStats.java
@@ -1,26 +1,21 @@
package design.model.statistics;
-import design.model.Golfer;
+import java.util.Arrays;
+
+import design.model.Round;
public class YearlyStats extends StatisticsDecorator{
private int year;
- private Golfer golfer;
- public YearlyStats(Statistics wrapped_statistics, int year, Golfer golfer){
+ public YearlyStats(Statistics wrapped_statistics, int year){
super(wrapped_statistics);
this.year = year;
- this.golfer = golfer;
- }
-
- @Override
- public int get_score(){
- int baseStats = super.get_score();
- return baseStats;
}
@Override
- public double get_distance(){
- double baseStats = super.get_distance();
- return baseStats;
+ public Round[] getRounds(){
+ return Arrays.stream(super.getRounds())
+ .filter(round -> round.getDateTime().getYear() == year)
+ .toArray(Round[]::new);
}
}