diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java index 758d023ca27..617aece3891 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.logging.Logger; import com.maptrack.client.io.TypeController; +import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.TimePoint; @@ -15,6 +16,7 @@ import com.sap.sailing.domain.base.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedEvent; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.util.Util.Triple; import com.tractrac.clientmodule.ControlPoint; @@ -70,7 +72,8 @@ public class MarkPassingReceiver extends AbstractReceiverWithQueue waypoints, com.sap.sailing.domain.base.ControlPoint domainControlPoint) { + private Waypoint findWaypointForControlPoint(TrackedRace trackedRace, Iterable waypoints, + com.sap.sailing.domain.base.ControlPoint domainControlPoint, Competitor competitor) { for (Waypoint waypoint : waypoints) { + MarkPassing oldMarkPassing = trackedRace.getMarkPassing(competitor, waypoint); if (waypoint.getControlPoint() == domainControlPoint) { - return waypoint; + if (oldMarkPassing == null) { + // didn't yet go around this waypoint; this must be the one + return waypoint; + } } } return null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index 8d5bbb6144a..38ea2540960 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -83,21 +83,22 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener getCompetitorTracksOrderedByRank(TimePoint timePoint) { synchronized (competitorTracksOrderedByRank) { - List rankecCompetitorList = competitorTracksOrderedByRank.get(timePoint); - if (rankecCompetitorList == null) { - rankecCompetitorList = new ArrayList(); + List rankedCompetitorList = competitorTracksOrderedByRank.get(timePoint); + if (rankedCompetitorList == null) { + rankedCompetitorList = new ArrayList(); for (TrackedLegOfCompetitor competitorLeg : getTrackedLegsOfCompetitors()) { - rankecCompetitorList.add(competitorLeg); + rankedCompetitorList.add(competitorLeg); } - Collections.sort(rankecCompetitorList, new WindwardToGoComparator(this, timePoint)); - competitorTracksOrderedByRank.put(timePoint, Collections.unmodifiableList(rankecCompetitorList)); - if (Util.size(getTrackedLegsOfCompetitors()) != rankecCompetitorList.size()) { + Collections.sort(rankedCompetitorList, new WindwardToGoComparator(this, timePoint)); + rankedCompetitorList = Collections.unmodifiableList(rankedCompetitorList); + competitorTracksOrderedByRank.put(timePoint, rankedCompetitorList); + if (Util.size(getTrackedLegsOfCompetitors()) != rankedCompetitorList.size()) { logger.warning("Number of competitors in leg (" + Util.size(getTrackedLegsOfCompetitors()) + ") differs from number of competitors in race (" + Util.size(getTrackedRace().getRace().getCompetitors()) + ")"); } } - return rankecCompetitorList; + return rankedCompetitorList; } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/ModeratorApp.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/ModeratorApp.java index 88ec958e683..2e3ffb2a01b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/ModeratorApp.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/ModeratorApp.java @@ -182,7 +182,6 @@ public class ModeratorApp extends Servlet { private void showRace(HttpServletRequest req, HttpServletResponse resp) throws IOException, InterruptedException { long start = System.currentTimeMillis(); - Event event = getEvent(req); TrackedRace trackedRace = getTrackedRace(req); if (trackedRace == null) { resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Race not found"); @@ -242,7 +241,7 @@ public class ModeratorApp extends Servlet { } JSONArray jsonCompetitors = new JSONArray(); Map ranks = leg.getRanks(timePoint); - for (Competitor competitor : event.getCompetitors()) { + for (Competitor competitor : trackedRace.getRace().getCompetitors()) { JSONObject jsonCompetitorInLeg = new JSONObject(); TrackedLegOfCompetitor trackedLegOfCompetitor = leg.getTrackedLeg(competitor); if (trackedLegOfCompetitor != null) {