diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index c44f296b777..3f0daa9a470 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -1173,7 +1173,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { double scoreInFinalRace = 10.0; for (Competitor rankedCompetitor : leaderboard.getCompetitorsFromBestToWorst(f1Column, later)) { assertEquals(scoreInFinalRace, leaderboard.getTotalPoints(rankedCompetitor, f1Column, later), 0.000001); - scoreInFinalRace = Math.max(scoreInFinalRace-1, 0); + scoreInFinalRace = Math.max(scoreInFinalRace-1, 1); } double lastScore = Double.MAX_VALUE; // assert that only the points matter for ranking; not the fleet assignment diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java index 6721861622e..b3a60a85a37 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java @@ -26,11 +26,21 @@ public abstract class HighPointFirstGetsFixedScore extends HighPoint { @Override public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { - Double result; + final int effectiveRank; + final Double result; + int competitorFleetOrdering; if (rank == 0) { + effectiveRank = 0; + } else if (raceColumn.hasSplitFleetContiguousScoring() && (competitorFleetOrdering=raceColumn.getFleetOfCompetitor(competitor).getOrdering()) != 0) { + int numberOfCompetitorsInBetterFleets = getNumberOfCompetitorsInBetterFleets(raceColumn, competitorFleetOrdering); + effectiveRank = rank + numberOfCompetitorsInBetterFleets; + } else { + effectiveRank = rank; + } + if (effectiveRank == 0) { result = null; } else { - result = Math.max(1.0, (double) (scoreForRaceWinner - rank + 1)); + result = Math.max(1.0, (double) (scoreForRaceWinner - effectiveRank + 1)); } return result; }