mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-22 20:13:52 +00:00
test case that creates race with RaceLogTrackingAdapter
This commit is contained in:
1 parent
9e3541582d
commit
0e6c4f2fad
7 files changed
+222
-30
No files matched your search
+1
-4
@@ -11,11 +11,9 @@ import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.impl.RaceLogRaceTracker;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public interface RaceLogTrackingAdapter {
|
||||
@@ -26,8 +24,7 @@ public interface RaceLogTrackingAdapter {
|
||||
*/
|
||||
RacesHandle addRace(RacingEventService service,
|
||||
RegattaIdentifier regattaToAddTo, Leaderboard leaderboard,
|
||||
RaceColumn raceColumn, Fleet fleet, RaceLogStore raceLogStore,
|
||||
WindStore windStore, long timeoutInMilliseconds)
|
||||
RaceColumn raceColumn, Fleet fleet, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException, Exception;
|
||||
|
||||
|
||||
+5
-3
@@ -12,6 +12,7 @@ import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.RaceNotCreatedException;
|
||||
import com.sap.sailing.domain.racelog.tracking.analyzing.impl.RaceInformationFinder;
|
||||
import com.sap.sailing.domain.racelog.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -45,13 +46,13 @@ public class RaceLogConnectivityParams implements RaceTrackingConnectivityParame
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore) throws Exception {
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore) {
|
||||
return createRaceTracker(regatta, trackedRegattaRegistry, windStore, gpsFixStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore) throws Exception {
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore) {
|
||||
if (regatta == null) {
|
||||
BoatClass boatClass = new RaceInformationFinder(raceLog).analyze().getB();
|
||||
regatta = service.getOrCreateDefaultRegatta("RaceLog-tracking default Regatta", boatClass.getName(), UUID.randomUUID());
|
||||
@@ -59,7 +60,8 @@ public class RaceLogConnectivityParams implements RaceTrackingConnectivityParame
|
||||
if (regatta == null) {
|
||||
throw new RaceNotCreatedException("No regatta for race-log tracked race");
|
||||
}
|
||||
return new RaceLogRaceTracker(trackedRegattaRegistry.getOrCreateTrackedRegatta(regatta), this, windStore, gpsFixStore);
|
||||
DynamicTrackedRegatta trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(regatta);
|
||||
return new RaceLogRaceTracker(trackedRegatta, this, windStore, gpsFixStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+21
-13
@@ -318,6 +318,10 @@ public class RaceLogRaceTracker extends BaseRaceLogEventVisitor implements RaceT
|
||||
|
||||
Iterable<Sideline> sidelines = Collections.<Sideline>emptyList();
|
||||
|
||||
//set race definition, so race is linked to leaderboard automatically
|
||||
regatta.getRegatta().addRace(raceDef);
|
||||
raceColumn.setRaceIdentifier(fleet, regatta.getRegatta().getRaceIdentifier(raceDef));
|
||||
|
||||
trackedRace = regatta.createTrackedRace(raceDef, sidelines, windStore, gpsFixStore, params.getDelayToLiveInMillis(),
|
||||
WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, boatClass.getApproximateManeuverDurationInMilliseconds(),
|
||||
null);
|
||||
@@ -346,22 +350,26 @@ public class RaceLogRaceTracker extends BaseRaceLogEventVisitor implements RaceT
|
||||
@Override
|
||||
public void fixReceived(DeviceIdentifier device, GPSFix fix) {
|
||||
TimePoint timePoint = fix.getTimePoint();
|
||||
for (DeviceMapping<Mark> mapping : markMappingsByDevices.get(device)) {
|
||||
Mark mark = mapping.getMappedTo();
|
||||
if (mapping.getTimeRange().includes(timePoint)) {
|
||||
trackedRace.recordFix(mark, fix);
|
||||
if (markMappingsByDevices.get(device) != null) {
|
||||
for (DeviceMapping<Mark> mapping : markMappingsByDevices.get(device)) {
|
||||
Mark mark = mapping.getMappedTo();
|
||||
if (mapping.getTimeRange().includes(timePoint)) {
|
||||
trackedRace.recordFix(mark, fix);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (DeviceMapping<Competitor> mapping : competitorMappingsByDevices.get(device)) {
|
||||
Competitor comp = mapping.getMappedTo();
|
||||
if (mapping.getTimeRange().includes(timePoint)) {
|
||||
if (fix instanceof GPSFixMoving) {
|
||||
trackedRace.recordFix(comp, (GPSFixMoving) fix);
|
||||
} else {
|
||||
logger.log(Level.WARNING,
|
||||
String.format("Could not add fix for competitor (%s) in race (%s), as it is no GPSFixMoving",
|
||||
comp, params.getRaceLog()));
|
||||
if (competitorMappingsByDevices.get(device) != null) {
|
||||
for (DeviceMapping<Competitor> mapping : competitorMappingsByDevices.get(device)) {
|
||||
Competitor comp = mapping.getMappedTo();
|
||||
if (mapping.getTimeRange().includes(timePoint)) {
|
||||
if (fix instanceof GPSFixMoving) {
|
||||
trackedRace.recordFix(comp, (GPSFixMoving) fix);
|
||||
} else {
|
||||
logger.log(Level.WARNING,
|
||||
String.format("Could not add fix for competitor (%s) in race (%s), as it is no GPSFixMoving",
|
||||
comp, params.getRaceLog()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-3
@@ -26,7 +26,6 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.NotDenotableForTrackingException;
|
||||
import com.sap.sailing.domain.racelog.tracking.RaceLogTrackingAdapter;
|
||||
import com.sap.sailing.domain.racelog.tracking.RaceLogTrackingState;
|
||||
@@ -34,7 +33,6 @@ import com.sap.sailing.domain.racelog.tracking.RaceNotCreatedException;
|
||||
import com.sap.sailing.domain.racelog.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter {
|
||||
@@ -50,7 +48,7 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter {
|
||||
|
||||
@Override
|
||||
public RacesHandle addRace(RacingEventService service, RegattaIdentifier regattaToAddTo, Leaderboard leaderboard,
|
||||
RaceColumn raceColumn, Fleet fleet, RaceLogStore raceLogStore, WindStore windStore, long timeoutInMilliseconds)
|
||||
RaceColumn raceColumn, Fleet fleet, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, RaceNotCreatedException, Exception {
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
Regatta regatta = service.getRegatta(regattaToAddTo);
|
||||
|
||||
Reference in new issue
Block a user