Merge branch 'master' into bug2522

This commit is contained in:
Axel Uhl committed 2016-10-17 11:28:07 +02:00
commit 5a429b4097
18 files changed
+1622 -23

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
@@ -1774,11 +1774,12 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
public void finishedTimeChanged(TimePoint oldFinishedTime, TimePoint newFinishedTime) {
// no action required; the update signaled by this call is implicit; the race log
// updates that led to this change are replicated separately
scheduler.execute(()->
// Notify interested users:
notificationService.notifyUserOnBoatClassRaceChangesStateToFinished(trackedRace.getRace().getBoatClass(), trackedRace,
getMostAppropriateLeaderboard(), getMostAppropriateRaceColumn(), getMostAppropriateFleet()));
if (newFinishedTime.after(MillisecondsTimePoint.now().minus(Duration.ONE_HOUR))) {
scheduler.execute(()->
// Notify interested users:
notificationService.notifyUserOnBoatClassRaceChangesStateToFinished(trackedRace.getRace().getBoatClass(), trackedRace,
getMostAppropriateLeaderboard(), getMostAppropriateRaceColumn(), getMostAppropriateFleet()));
}
}
@Override
@@ -1838,7 +1839,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
replicate(new UpdateMarkPassings(getRaceIdentifier(), competitor, markPassings));
final MarkPassing last = Util.last(markPassings);
if (last != null && last.getWaypoint() == trackedRace.getRace().getCourse().getLastWaypoint() &&
trackedRace.getStatus().getStatus() != TrackedRaceStatusEnum.LOADING) {
trackedRace.getStatus().getStatus() != TrackedRaceStatusEnum.LOADING &&
last.getTimePoint().after(MillisecondsTimePoint.now().minus(Duration.ONE_HOUR))) {
scheduler.execute(() ->
// Notify interested users:
notificationService.notifyUserOnCompetitorPassesFinish(competitor, trackedRace,