continued with ORC PCS ranking metric implementation

Change-Id: I50ebc4b26e11ac518468d2fbe9882e65dbf4be72
This commit is contained in:
Axel Uhl committed 2019-09-11 18:30:25 +02:00
1 parent 7654059dbf
commit e2d04668a3
3 files changed
+24 -8

No files matched your search

@@ -1,8 +1,10 @@
package com.sap.sailing.domain.abstractlog.orc;
import java.io.Serializable;
import com.sap.sailing.domain.abstractlog.Revokable;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
//TODO Implementation and decision whether the scratch boat should be set for a whole regatta or per race
public interface ORCScratchBoatEvent extends RaceLogEvent {
public interface ORCScratchBoatEvent extends RaceLogEvent, Revokable {
Serializable getCompetitorId();
}
@@ -1,9 +1,8 @@
package com.sap.sailing.domain.abstractlog.orc.impl;
package com.sap.sailing.domain.abstractlog.orc;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCLegDataEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLog;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogAnalyzer;
@@ -21,9 +20,9 @@ import com.sap.sse.common.Distance;
* @author Axel Uhl (D043530)
*
*/
public class ORCLegDataAnalyzer extends RaceLogAnalyzer<Map<Integer, ORCPerformanceCurveLeg>> {
public class RaceLogORCLegDataAnalyzer extends RaceLogAnalyzer<Map<Integer, ORCPerformanceCurveLeg>> {
public ORCLegDataAnalyzer(RaceLog raceLog) {
public RaceLogORCLegDataAnalyzer(RaceLog raceLog) {
super(raceLog);
}
@@ -46,5 +45,4 @@ public class ORCLegDataAnalyzer extends RaceLogAnalyzer<Map<Integer, ORCPerforma
}
return result;
}
}
@@ -6,8 +6,10 @@ import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
import com.sap.sailing.domain.abstractlog.orc.ORCCertificateAssignmentEvent;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCCertificateAssignmentEvent;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCCertificateAssignmentFinder;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCLegDataAnalyzer;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCLegDataEvent;
import com.sap.sailing.domain.abstractlog.orc.RegattaLogORCCertificateAssignmentEvent;
import com.sap.sailing.domain.abstractlog.orc.RegattaLogORCCertificateAssignmentFinder;
@@ -24,6 +26,7 @@ import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.orc.ORCCertificate;
import com.sap.sailing.domain.common.orc.ORCPerformanceCurveCourse;
import com.sap.sailing.domain.common.orc.ORCPerformanceCurveLeg;
import com.sap.sailing.domain.ranking.AbstractRankingMetric;
import com.sap.sailing.domain.ranking.RankingMetric;
import com.sap.sailing.domain.tracking.TrackedLeg;
@@ -113,6 +116,11 @@ public class ORCPerformanceCurveRankingMetric extends AbstractRankingMetric {
};
}
/**
* To be called if the set of logs attached to the {@link #getTrackedRace() tracked race} changes or any of those
* logs sees a {@link ORCCertificateAssignmentEvent} being added. As a result, the {@link #certificates} map is
* replaced by a new one that has the updated mapping of boats to their certificates.
*/
private void updateCertificatesFromLogs() {
final Map<Boat, ORCCertificate> newCertificates = new HashMap<>();
for (final RegattaLog regattaLog : getTrackedRace().getAttachedRegattaLogs()) {
@@ -123,6 +131,14 @@ public class ORCPerformanceCurveRankingMetric extends AbstractRankingMetric {
}
certificates = newCertificates;
}
private void updateCourseFromRaceLogs() {
final Map<Integer, ORCPerformanceCurveLeg> legsWithDefinitions = new HashMap<>();
for (final RaceLog raceLog : getTrackedRace().getAttachedRaceLogs()) {
legsWithDefinitions.putAll(new RaceLogORCLegDataAnalyzer(raceLog).analyze());
}
// TODO continue here, taking only those definitions up to the true number of legs in the race's course and fill the blanks with tracked leg adapters
}
@Override
public Comparator<Competitor> getRaceRankingComparator(TimePoint timePoint, WindLegTypeAndLegBearingCache cache) {