diff options
| author | Jacob Shimp <jrs9538@g.rit.edu> | 2025-10-03 20:31:51 -0400 |
|---|---|---|
| committer | Jacob Shimp <jrs9538@g.rit.edu> | 2025-10-03 20:31:51 -0400 |
| commit | b4919667c3455d8b517df6a72b7d37e0734d9155 (patch) | |
| tree | 90ebac20004e24d1ea5bbec1477204cc7e3cea17 /src/main/java/design/model/statistics | |
| parent | 19101e44d4e658650b535eb14692446b098215e3 (diff) | |
| download | designproject-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')
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); } } |
