mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-03 10:53:49 +00:00
fixed mark passings update again
This commit is contained in:
1 parent
d29669dbfa
commit
d2278008d0
1 file changed
+18
-15
+18
-15
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.tractracadapter.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
@@ -66,25 +67,26 @@ public class MarkPassingReceiver extends AbstractReceiverWithQueue<RaceCompetito
|
||||
DynamicTrackedRace trackedRace = trackedEvent.getTrackedRace(getDomainFactory().getRaceDefinition(event
|
||||
.getA().getRace()));
|
||||
Course course = trackedRace.getRace().getCourse();
|
||||
Iterable<Waypoint> waypoints = course.getWaypoints();
|
||||
Map<com.sap.sailing.domain.base.ControlPoint, MarkPassing> passingsByControlPoint = new HashMap<com.sap.sailing.domain.base.ControlPoint, MarkPassing>();
|
||||
Iterator<Waypoint> waypointsIter = course.getWaypoints().iterator();
|
||||
Map<Waypoint, MarkPassing> passingsByWaypoint = new HashMap<Waypoint, MarkPassing>();
|
||||
// Note: the entries always describe all mark passings for the competitor so far in the current race in order
|
||||
for (MarkPassingsData.Entry passing : event.getB().getPassings()) {
|
||||
ControlPoint controlPointPassed = passing.getControlPoint();
|
||||
com.sap.sailing.domain.base.ControlPoint domainControlPoint = getDomainFactory().getControlPoint(controlPointPassed);
|
||||
Waypoint passed = findWaypointForControlPoint(trackedRace, waypoints, domainControlPoint,
|
||||
Waypoint passed = findWaypointForControlPoint(trackedRace, waypointsIter, domainControlPoint,
|
||||
getDomainFactory().getCompetitor(event.getA().getCompetitor()));
|
||||
if (passed != null) {
|
||||
TimePoint time = new MillisecondsTimePoint(passing.getTimestamp());
|
||||
MarkPassing markPassing = getDomainFactory().createMarkPassing(event.getA().getCompetitor(), passed, time);
|
||||
passingsByControlPoint.put(domainControlPoint, markPassing);
|
||||
TimePoint time = new MillisecondsTimePoint(passing.getTimestamp());
|
||||
MarkPassing markPassing = getDomainFactory().createMarkPassing(event.getA().getCompetitor(), passed,
|
||||
time);
|
||||
passingsByWaypoint.put(passed, markPassing);
|
||||
} else {
|
||||
logger.warning("Didn't find waypoint in course "+course+" for mark passing around "+passing.getControlPoint());
|
||||
}
|
||||
}
|
||||
List<MarkPassing> markPassings = new ArrayList<MarkPassing>();
|
||||
for (Waypoint waypoint : waypoints) {
|
||||
MarkPassing passing = passingsByControlPoint.get(waypoint.getControlPoint());
|
||||
for (Waypoint waypoint : course.getWaypoints()) {
|
||||
MarkPassing passing = passingsByWaypoint.get(waypoint);
|
||||
if (passing != null) {
|
||||
markPassings.add(passing);
|
||||
}
|
||||
@@ -92,15 +94,16 @@ public class MarkPassingReceiver extends AbstractReceiverWithQueue<RaceCompetito
|
||||
trackedRace.updateMarkPassings(getDomainFactory().getCompetitor(event.getA().getCompetitor()), markPassings);
|
||||
}
|
||||
|
||||
private Waypoint findWaypointForControlPoint(TrackedRace trackedRace, Iterable<Waypoint> waypoints,
|
||||
/**
|
||||
* Starts searching in <code>waypointsIter</code> for a waypoint that has the given <code>controlPoint</code>.
|
||||
* The <code>waypointsIter</code> is advanced to that point.
|
||||
*/
|
||||
private Waypoint findWaypointForControlPoint(TrackedRace trackedRace, Iterator<Waypoint> waypointsIter,
|
||||
com.sap.sailing.domain.base.ControlPoint domainControlPoint, Competitor competitor) {
|
||||
for (Waypoint waypoint : waypoints) {
|
||||
MarkPassing oldMarkPassing = trackedRace.getMarkPassing(competitor, waypoint);
|
||||
while (waypointsIter.hasNext()) {
|
||||
Waypoint waypoint = waypointsIter.next();
|
||||
if (waypoint.getControlPoint() == domainControlPoint) {
|
||||
if (oldMarkPassing == null) {
|
||||
// didn't yet go around this waypoint; this must be the one
|
||||
return waypoint;
|
||||
}
|
||||
return waypoint;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in new issue
Block a user