provided an untested implementation of receiveTimingData for SwissTiming connector

This commit is contained in:
Axel Uhl committed 2011-11-15 13:32:16 +01:00
1 parent b38242f251
commit 22e340cd93
4 files changed
+44 -2

No files matched your search

@@ -7,8 +7,10 @@ import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.TimePoint;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.swisstimingadapter.impl.DomainFactoryImpl;
import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.MarkPassing;
import difflib.PatchFailedException;
@@ -27,7 +29,9 @@ public interface DomainFactory {
GPSFixMoving createGPSFix(TimePoint timePointOfTransmission, Fix fix);
Competitor getCompetitorByBoatID(String sailNumber);
Competitor getCompetitorByBoatID(String boatID);
void updateCourseWaypoints(Course courseToUpdate, Iterable<Mark> marks) throws PatchFailedException;
MarkPassing createMarkPassing(String raceID, String boatID, Waypoint waypoint, TimePoint timePoint);
}
@@ -37,7 +37,9 @@ import com.sap.sailing.domain.swisstimingadapter.MessageType;
import com.sap.sailing.domain.swisstimingadapter.Race;
import com.sap.sailing.domain.swisstimingadapter.StartList;
import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl;
import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
import com.sap.sailing.util.CourseAsWaypointList;
import com.sap.sailing.util.Util;
@@ -212,4 +214,9 @@ public class DomainFactoryImpl implements DomainFactory {
}
}
@Override
public MarkPassing createMarkPassing(String raceID, String boatID, Waypoint waypoint, TimePoint timePoint) {
return new MarkPassingImpl(timePoint, waypoint, getCompetitorByBoatID(boatID));
}
}
@@ -8,6 +8,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Logger;
import com.sap.sailing.domain.base.Buoy;
@@ -16,6 +17,8 @@ import com.sap.sailing.domain.base.Distance;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.TimePoint;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.swisstimingadapter.Course;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingadapter.Fix;
@@ -34,11 +37,13 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tracking.GPSFix;
import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.RaceHandle;
import com.sap.sailing.domain.tracking.RaceTracker;
import com.sap.sailing.domain.tracking.TrackedEventRegistry;
import com.sap.sailing.domain.tracking.WindStore;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.util.Util;
import com.sap.sailing.util.Util.Triple;
import difflib.PatchFailedException;
@@ -172,7 +177,18 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
@Override
public void receivedTimingData(String raceID, String boatID,
List<Triple<Integer, Integer, Long>> markIndicesRanksAndTimesSinceStartInMilliseconds) {
// TODO implement receivedTimingData; generate MarkPassing objects and update tracked race accordingly
assert this.raceID.equals(raceID);
TreeMap<Integer, MarkPassing> markPassingsByMarkIndex = new TreeMap<Integer, MarkPassing>();
for (Triple<Integer, Integer, Long> markIndexRankAndTimeSinceStartInMilliseconds : markIndicesRanksAndTimesSinceStartInMilliseconds) {
Waypoint waypoint = Util.get(trackedRace.getRace().getCourse().getWaypoints(),
markIndexRankAndTimeSinceStartInMilliseconds.getA());
MillisecondsTimePoint timePoint = new MillisecondsTimePoint(trackedRace.getStart().asMillis()
+ markIndexRankAndTimeSinceStartInMilliseconds.getC());
MarkPassing markPassing = domainFactory.createMarkPassing(raceID, boatID, waypoint, timePoint);
markPassingsByMarkIndex.put(markIndexRankAndTimeSinceStartInMilliseconds.getA(), markPassing);
}
Competitor competitor = domainFactory.getCompetitorByBoatID(boatID);
trackedRace.updateMarkPassings(competitor, markPassingsByMarkIndex.values());
}
@Override
@@ -2,6 +2,7 @@ package com.sap.sailing.util;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class Util {
public static <T> int size(Iterable<T> i) {
@@ -17,6 +18,20 @@ public class Util {
return result;
}
}
public static <T> T get(Iterable<T> iterable, int i) {
if (iterable instanceof List<?>) {
List<T> l = (List<T>) iterable;
return l.get(i);
} else {
Iterator<T> iter = iterable.iterator();
T result = iter.next();
for (int j=0; j<i; j++) {
result = iter.next();
}
return result;
}
}
public static <T> boolean contains(Iterable<T> ts, T t) {
if (ts instanceof Collection<?>) {