mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 18:33:54 +00:00
provided an untested implementation of receiveTimingData for SwissTiming connector
This commit is contained in:
1 parent
b38242f251
commit
22e340cd93
4 files changed
+44
-2
No files matched your search
+5
-1
@@ -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);
|
||||
}
|
||||
+7
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+17
-1
@@ -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<?>) {
|
||||
|
||||
Reference in new issue
Block a user