fix for bug 3955: apply scores from RaceLog only if explicit or no MaxPointsReason is set; adjusted test; formerly failing test passes now

Change-Id: Idf2085e122eb0b30c86be0c254f360407c1819f9
This commit is contained in:
Axel Uhl committed 2016-10-14 12:55:04 +02:00
1 parent d3e84161f0
commit aeeb3cedbe
2 files changed
+22 -14

No files matched your search

@@ -143,9 +143,17 @@ public class RaceLogScoringReplicator implements RaceColumnListener {
if (positioningList != null) {
for (CompetitorResult positionedCompetitor : positioningList) {
Competitor competitor = service.getBaseDomainFactory().getExistingCompetitorById(positionedCompetitor.getCompetitorId());
int rankByRaceCommittee = getRankInPositioningListByRaceCommittee(positionedCompetitor);
correctScoreInLeaderboard(leaderboard, raceColumn, timePoint, numberOfCompetitorsInRace,
competitor, rankByRaceCommittee, positionedCompetitor.getScore());
// The score is updated when explicitly provided or when no penalty was set;
// in turn, this means that when a penalty is set and no score is explicitly provided,
// it is up to the scoring scheme to infer a penalty score for the MaxPointsReason.
// See also bug 3955.
if (positionedCompetitor.getScore() != null
|| positionedCompetitor.getMaxPointsReason() == null
|| positionedCompetitor.getMaxPointsReason().equals(MaxPointsReason.NONE)) {
int rankByRaceCommittee = getRankInPositioningListByRaceCommittee(positionedCompetitor);
correctScoreInLeaderboard(leaderboard, raceColumn, timePoint, numberOfCompetitorsInRace, competitor,
rankByRaceCommittee, positionedCompetitor.getScore());
}
setMaxPointsReasonInLeaderboardIfNecessary(leaderboard, raceColumn, timePoint, positionedCompetitor.getMaxPointsReason(), competitor);
}
// Since the metadata update is used by the Sailing suite to determine the final state of a race, it has to