added leg ranking comparator to the RankingMetric design

This commit is contained in:
Axel Uhl committed 2015-04-20 18:24:07 +02:00
1 parent 21ac8177c2
commit 40767d0d2a
2 files changed
+19 -8

No files matched your search

@@ -4,32 +4,39 @@ import java.util.Comparator;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache;
import com.sap.sailing.domain.tracking.WindPositionMode;
import com.sap.sailing.domain.tracking.impl.RaceRankComparator;
import com.sap.sailing.domain.tracking.impl.WindwardToGoComparator;
import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
public class OneDesignRankingMetric implements RankingMetric<Distance> {
@Override
public Comparator<Competitor> getRankingComparator(TrackedRace trackedRace, Competitor competitor, TimePoint timePoint, WindLegTypeAndLegBearingCache cache) {
public Comparator<Competitor> getRaceRankingComparator(TrackedRace trackedRace, TimePoint timePoint, WindLegTypeAndLegBearingCache cache) {
return new RaceRankComparator(trackedRace, timePoint, cache);
}
@Override
public Comparator<TrackedLegOfCompetitor> getLegRankingComparator(TrackedLeg trackedLeg,
TimePoint timePoint, WindLegTypeAndLegBearingCache cache) {
return new WindwardToGoComparator(trackedLeg, timePoint, cache);
}
@Override
public Duration getTimeToImprove(TrackedRace trackedRace, Competitor trailing, Competitor leading,
TimePoint timePoint, WindLegTypeAndLegBearingCache cache) {
// TODO find the last leg both competitors have already started and compute the gap in that leg;
int i=0;
final Duration result;
// TODO find the last leg both competitors have already started and compute the gap in that leg;
final TrackedLegOfCompetitor tlocTrailing = null;
if (tlocTrailing != null) {
result = tlocTrailing.getGapToLeader(timePoint, leading, WindPositionMode.LEG_MIDDLE, cache);
} else {
result = null;
}
return null;
return result;
}
}
@@ -3,6 +3,8 @@ package com.sap.sailing.domain.ranking;
import java.util.Comparator;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache;
import com.sap.sailing.domain.tracking.impl.NoCachingWindLegTypeAndLegBearingCache;
@@ -31,12 +33,14 @@ import com.sap.sse.common.TimePoint;
* @param <T>
*/
public interface RankingMetric<T extends Comparable<T>> {
default Comparator<Competitor> getRankingComparator(TrackedRace trackedRace, Competitor competitor, TimePoint timePoint) {
return getRankingComparator(trackedRace, competitor, timePoint, new NoCachingWindLegTypeAndLegBearingCache());
default Comparator<Competitor> getRankingComparator(TrackedRace trackedRace, TimePoint timePoint) {
return getRaceRankingComparator(trackedRace, null, new NoCachingWindLegTypeAndLegBearingCache());
}
Comparator<Competitor> getRankingComparator(TrackedRace trackedRace, Competitor competitor, TimePoint timePoint, WindLegTypeAndLegBearingCache cache);
Comparator<Competitor> getRaceRankingComparator(TrackedRace trackedRace, TimePoint timePoint, WindLegTypeAndLegBearingCache cache);
Comparator<TrackedLegOfCompetitor> getLegRankingComparator(TrackedLeg trackedLeg, TimePoint timePoint, WindLegTypeAndLegBearingCache cache);
/**
* Calculates the time that the <code>trailing</code> competitor needs to "catch up" to reach the <code>leading</code> competitor,
* measured in the <code>trailing</code> competitor's "time system." For one-design ranking this will be the gap based on the