Merge branch 'master' into ribdashboard

This commit is contained in:
Axel Uhl committed 2015-10-02 18:18:09 +02:00
commit 822266764a
5 files changed
+22 -18

No files matched your search

@@ -263,7 +263,7 @@ public interface Leaderboard extends LeaderboardBase, HasRaceColumns {
* Sums up the {@link #getTotalPoints(Competitor, TrackedRace, TimePoint) total points} of <code>competitor</code>
* across all races tracked by this leaderboard, respecting the {@link RaceColumn#isStartsWithZeroScore()} property.
*/
Double getTotalPoints(Competitor competitor, TimePoint timePoint) throws NoWindException;
Double getTotalPoints(Competitor competitor, TimePoint timePoint);
/**
* Sums up the {@link #getTotalPoints(Competitor, RaceColumn, TimePoint) total points} of <code>competitor</code>
@@ -12,7 +12,6 @@ import java.util.Set;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
import com.sap.sailing.domain.tracking.TrackedRace;
@@ -182,8 +181,7 @@ public abstract class AbstractScoringSchemeImpl implements ScoringScheme {
}
@Override
public int compareByLatestRegattaInMetaLeaderboard(Leaderboard leaderboard, Competitor o1, Competitor o2,
TimePoint timePoint) throws NoWindException {
public int compareByLatestRegattaInMetaLeaderboard(Leaderboard leaderboard, Competitor o1, Competitor o2, TimePoint timePoint) {
return 0;
}
}
@@ -517,13 +517,13 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
}
@Override
public Double getTotalPoints(Competitor competitor, TimePoint timePoint) throws NoWindException {
public Double getTotalPoints(Competitor competitor, TimePoint timePoint) {
return getTotalPoints(competitor, getRaceColumns(), timePoint);
}
@Override
public Double getTotalPoints(Competitor competitor, final Iterable<RaceColumn> raceColumnsToConsider,
TimePoint timePoint) throws NoWindException {
TimePoint timePoint) {
// when a column with isStartsWithZeroScore() is found, only reset score if the competitor scored in any race from there on
boolean needToResetScoreUponNextNonEmptyEntry = false;
double result = getCarriedPoints(competitor);
@@ -721,11 +721,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
public Map<Competitor, Double> call() {
Map<Competitor, Double> totalPointsSumPerCompetitorInColumn = new HashMap<>();
for (Competitor competitor : getCompetitors()) {
try {
totalPointsSumPerCompetitorInColumn.put(competitor, getTotalPoints(competitor, finalRaceColumnsToConsider, timePoint));
} catch (NoWindException e) {
throw new NoWindError(e);
}
totalPointsSumPerCompetitorInColumn.put(competitor, getTotalPoints(competitor, finalRaceColumnsToConsider, timePoint));
}
synchronized (result) {
return totalPointsSumPerCompetitorInColumn;
@@ -107,8 +107,7 @@ public class HighPointExtremeSailingSeriesOverall extends HighPoint {
* @throws NoWindException
*/
@Override
public int compareByLatestRegattaInMetaLeaderboard(Leaderboard leaderboard,
Competitor o1, Competitor o2, TimePoint timePoint) throws NoWindException {
public int compareByLatestRegattaInMetaLeaderboard(Leaderboard leaderboard, Competitor o1, Competitor o2, TimePoint timePoint) {
assert leaderboard instanceof MetaLeaderboard;
// compare by last regatta if this leaderboard is a meta leaderboard
final int result;
@@ -110,10 +110,11 @@ public class LeaderboardTotalRankComparator implements Comparator<Competitor> {
for (RaceColumn raceColumn : getLeaderboard().getRaceColumns()) {
needToResetO1ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore();
needToResetO2ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore();
if (getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o1, timePoint)
&& getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o2, timePoint)) {
int preemptiveColumnResult = 0;
final Double o1Score = totalPointsCache.get(new Util.Pair<Competitor, RaceColumn>(o1, raceColumn));
final boolean o1ValidInTotalScore = getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o1, timePoint);
final boolean o2ValidInTotalScore = getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o2, timePoint);
final Double o1Score;
if (o1ValidInTotalScore) {
o1Score = totalPointsCache.get(new Util.Pair<Competitor, RaceColumn>(o1, raceColumn));
if (o1Score != null) {
o1Scores.add(new Util.Pair<RaceColumn, Double>(raceColumn, o1Score));
if (needToResetO1ScoreUponNextValidResult) {
@@ -122,7 +123,12 @@ public class LeaderboardTotalRankComparator implements Comparator<Competitor> {
}
o1ScoreSum += o1Score;
}
final Double o2Score = totalPointsCache.get(new Util.Pair<Competitor, RaceColumn>(o2, raceColumn));
} else {
o1Score = null;
}
final Double o2Score;
if (o2ValidInTotalScore) {
o2Score = totalPointsCache.get(new Util.Pair<Competitor, RaceColumn>(o2, raceColumn));
if (o2Score != null) {
o2Scores.add(new Util.Pair<RaceColumn, Double>(raceColumn, o2Score));
if (needToResetO2ScoreUponNextValidResult) {
@@ -131,6 +137,11 @@ public class LeaderboardTotalRankComparator implements Comparator<Competitor> {
}
o2ScoreSum += o2Score;
}
} else {
o2Score = null;
}
if (o1ValidInTotalScore && o2ValidInTotalScore) {
int preemptiveColumnResult = 0;
if (raceColumn.isMedalRace()) {
// only count the score for the medal race score if it wasn't a carry-forward column
if (!raceColumn.isCarryForward()) {