Improved the ManeuverRetrievalProcessor so that maneuvers with a time point equal to the start of a leg aren't retrieved twice

This commit is contained in:
Lennart Hensler committed 2018-07-22 19:37:52 +02:00
1 parent 811d1a630f
commit bdecac1b13
1 file changed
+10
@@ -9,6 +9,7 @@ import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext;
import com.sap.sailing.datamining.impl.data.ManeuverWithContext;
import com.sap.sailing.datamining.impl.data.TrackedLegOfCompetitorWithSpecificTimePointWithContext;
import com.sap.sailing.datamining.shared.ManeuverSettings;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.tracking.Maneuver;
import com.sap.sailing.domain.tracking.ManeuverCurveBoundaries;
@@ -36,6 +37,9 @@ public class ManeuverRetrievalProcessor
TimePoint finishTime = element.getTrackedLegOfCompetitor().getFinishTime();
if (finishTime != null) {
Iterable<Maneuver> maneuvers = null;
if (!isLastLeg(element)) {
finishTime = finishTime.minus(1);
}
try {
maneuvers = element.getTrackedLegOfCompetitor().getManeuvers(finishTime, false);
} catch (NoWindException e) {
@@ -66,6 +70,12 @@ public class ManeuverRetrievalProcessor
return maneuversWithContext;
}
private boolean isLastLeg(HasTrackedLegOfCompetitorContext element) {
Waypoint finishWaypoint = element.getTrackedLegContext().getTrackedRaceContext().getRace().getCourse().getLastWaypoint();
Waypoint toWaypoint = element.getTrackedLegOfCompetitor().getLeg().getTo();
return finishWaypoint.equals(toWaypoint);
}
private boolean isManeuverCompliantWithSettings(Maneuver previousManeuver,
ManeuverWithContext currentManeuverWithContext, Maneuver nextManeuver) {
boolean mainCurveAnalysis = settings.isMainCurveAnalysis();