mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-18 02:00:58 +00:00
bug 3742: don't assign a competitor points in a MetaLeaderboard if it has no score in the underlying column leaderboard
Change-Id: I1e16044e0fd3196a187edd48a23e424deaa1d428
This commit is contained in:
1 parent
50364849bc
commit
b9d8b4827a
5 files changed
+29
-7
No files matched your search
@@ -269,7 +269,7 @@ public interface Leaderboard extends LeaderboardBase, HasRaceColumns {
|
||||
* competitor doesn't appear in any of the race column's attached tracked races. A 0.0 score is returned
|
||||
* if the competitor's result for <code>race</code> is discarded.
|
||||
*/
|
||||
Double getNetPoints(Competitor competitor, RaceColumn race, TimePoint timePoint) throws NoWindException;
|
||||
Double getNetPoints(Competitor competitor, RaceColumn race, TimePoint timePoint);
|
||||
|
||||
/**
|
||||
* Tells whether the contribution of <code>raceColumn</code> is discarded in the current leaderboard's standings for
|
||||
@@ -568,4 +568,10 @@ public interface Leaderboard extends LeaderboardBase, HasRaceColumns {
|
||||
BoatClass getBoatClass();
|
||||
|
||||
LeaderboardType getLeaderboardType();
|
||||
|
||||
/**
|
||||
* Tells if there is at least one non-{@code null} score for the given {@code competitor} in the
|
||||
* leaderboard.
|
||||
*/
|
||||
boolean hasScores(Competitor competitor, TimePoint timePoint);
|
||||
}
|
||||
+9
@@ -1118,4 +1118,13 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasScores(Competitor competitor, TimePoint timePoint) {
|
||||
for (final RaceColumn raceColumn : getRaceColumns()) {
|
||||
if (getTotalPoints(competitor, raceColumn, timePoint) != null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -425,13 +425,13 @@ public abstract class AbstractSimpleLeaderboardImpl extends AbstractLeaderboardW
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getNetPoints(Competitor competitor, RaceColumn raceColumn, TimePoint timePoint) throws NoWindException {
|
||||
public Double getNetPoints(Competitor competitor, RaceColumn raceColumn, TimePoint timePoint) {
|
||||
return getNetPoints(competitor, raceColumn, getRaceColumns(), timePoint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getNetPoints(Competitor competitor, RaceColumn raceColumn,
|
||||
Iterable<RaceColumn> raceColumnsToConsider, TimePoint timePoint) throws NoWindException {
|
||||
Iterable<RaceColumn> raceColumnsToConsider, TimePoint timePoint) {
|
||||
final Set<RaceColumn> discardedRaceColumns = getResultDiscardingRule()
|
||||
.getDiscardedRaceColumns(competitor, this, raceColumnsToConsider, timePoint);
|
||||
return getNetPoints(competitor, raceColumn, timePoint, discardedRaceColumns);
|
||||
|
||||
+1
-1
@@ -280,7 +280,7 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr
|
||||
return getFullLeaderboard().getMaxPointsReason(competitor, race, timePoint);
|
||||
}
|
||||
|
||||
public Double getNetPoints(Competitor competitor, RaceColumn race, TimePoint timePoint) throws NoWindException {
|
||||
public Double getNetPoints(Competitor competitor, RaceColumn race, TimePoint timePoint) {
|
||||
return getFullLeaderboard().getNetPoints(competitor, race, timePoint);
|
||||
}
|
||||
|
||||
|
||||
+10
-3
@@ -171,9 +171,16 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI
|
||||
|
||||
@Override
|
||||
public int getTrackedRank(Competitor competitor, RaceColumn race, TimePoint timePoint) {
|
||||
final List<Competitor> competitorsFromBestToWorst = ((MetaLeaderboardColumn) race).getLeaderboard().getCompetitorsFromBestToWorst(timePoint);
|
||||
Util.removeAll(getSuppressedCompetitors(), competitorsFromBestToWorst);
|
||||
return competitorsFromBestToWorst.indexOf(competitor)+1;
|
||||
final Leaderboard leaderboard = ((MetaLeaderboardColumn) race).getLeaderboard();
|
||||
final int result;
|
||||
if (leaderboard.hasScores(competitor, timePoint)) {
|
||||
final List<Competitor> competitorsFromBestToWorst = leaderboard.getCompetitorsFromBestToWorst(timePoint);
|
||||
Util.removeAll(getSuppressedCompetitors(), competitorsFromBestToWorst);
|
||||
result = competitorsFromBestToWorst.indexOf(competitor)+1;
|
||||
} else {
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user