mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
# moved CourseDesignChanged Listener and Log Listener code to DynamicTrackedRace and its Impl
This commit is contained in:
1 parent
57e47e3172
commit
97ca5034fc
6 files changed
+120
-111
No files matched your search
-7
@@ -6,7 +6,6 @@ import java.util.List;
|
||||
import java.util.NavigableSet;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Leg;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
@@ -495,12 +494,6 @@ public class MockedTrackedRaceWithStartTimeAndRanks implements TrackedRace {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCourseDesignChangedByRaceCommittee(CourseBase courseDesign) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCourseDesignChangedListener(CourseDesignChangedListener listener) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
+8
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.tracking;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
@@ -78,4 +79,11 @@ public interface DynamicTrackedRace extends TrackedRace {
|
||||
void setRaceIsKnownToStartUpwind(boolean raceIsKnownToStartUpwind);
|
||||
|
||||
void setStatus(TrackedRaceStatus newStatus);
|
||||
|
||||
/**
|
||||
* whenever a new course design is published by the race committee and the appropriate event occures in the race log, this method is
|
||||
* called to propagate the course design to the tracking provider.
|
||||
* @param courseDesign the new course design to be published
|
||||
*/
|
||||
void onCourseDesignChangedByRaceCommittee(CourseBase courseDesign);
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import java.util.SortedSet;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Leg;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
@@ -496,13 +495,6 @@ public interface TrackedRace extends Serializable {
|
||||
* Otherwise <code>null</code>.
|
||||
*/
|
||||
RaceLog getRaceLog();
|
||||
|
||||
/**
|
||||
* whenever a new course design is published by the race committee and the appropriate event occures in the race log, this method is
|
||||
* called to propagate the course design to the tracking provider.
|
||||
* @param courseDesign the new course design to be published
|
||||
*/
|
||||
void onCourseDesignChangedByRaceCommittee(CourseBase courseDesign);
|
||||
|
||||
/**
|
||||
* a setter for the listener on course design changes. The listener is mostly part of the tracking provider adapter.
|
||||
|
||||
+25
@@ -27,6 +27,8 @@ import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.tracking.CourseDesignChangedListener;
|
||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -55,12 +57,17 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
private boolean raceIsKnownToStartUpwind;
|
||||
|
||||
private boolean delayToLiveInMillisFixed;
|
||||
|
||||
private transient DynamicTrackedRaceLogListener logListener;
|
||||
|
||||
private transient CourseDesignChangedListener courseDesignChangedListener;
|
||||
|
||||
public DynamicTrackedRaceImpl(TrackedRegatta trackedRegatta, RaceDefinition race,
|
||||
WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed,
|
||||
long delayForCacheInvalidationOfWindEstimation) {
|
||||
super(trackedRegatta, race, windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed,
|
||||
delayForCacheInvalidationOfWindEstimation);
|
||||
this.logListener = new DynamicTrackedRaceLogListener(this);
|
||||
this.raceIsKnownToStartUpwind = race.getBoatClass().typicallyStartsUpwind();
|
||||
if (!raceIsKnownToStartUpwind) {
|
||||
Set<WindSource> windSourcesToExclude = new HashSet<WindSource>();
|
||||
@@ -653,6 +660,24 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
public boolean raceIsKnownToStartUpwind() {
|
||||
return raceIsKnownToStartUpwind;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attachRaceLog(RaceLog raceLog) {
|
||||
super.attachRaceLog(raceLog);
|
||||
attachedRaceLog.addListener(logListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detachRaceLog() {
|
||||
attachedRaceLog.removeListener(logListener);
|
||||
logListener.detach();
|
||||
super.detachRaceLog();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCourseDesignChangedListener(CourseDesignChangedListener listener) {
|
||||
this.courseDesignChangedListener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCourseDesignChangedByRaceCommittee(CourseBase newCourseDesign) {
|
||||
|
||||
+86
-82
@@ -1,82 +1,86 @@
|
||||
package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
public class TrackedRaceLogListener implements RaceLogEventVisitor {
|
||||
|
||||
private TrackedRace trackedRace;
|
||||
|
||||
public TrackedRaceLogListener(TrackedRace trackedRace) {
|
||||
this.trackedRace = trackedRace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFlagEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPassChangeEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogRaceStatusEvent event) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartTimeEvent event) {
|
||||
((DynamicTrackedRace) trackedRace).setStartTimeReceived(event.getStartTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseAreaChangedEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseDesignChangedEvent event) {
|
||||
trackedRace.onCourseDesignChangedByRaceCommittee(event.getCourseDesign());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningListChangedEvent event) {
|
||||
// do nothing (wait for RaceLogFinishPositioningConfirmedEvent to perform score corrections)
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningConfirmedEvent event) {
|
||||
// do nothing score correction is handled by the leaderboard
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPathfinderEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogGateLineOpeningTimeEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartProcedureChangedEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
|
||||
public class DynamicTrackedRaceLogListener implements RaceLogEventVisitor {
|
||||
|
||||
private DynamicTrackedRace trackedRace;
|
||||
|
||||
public DynamicTrackedRaceLogListener(DynamicTrackedRace trackedRace) {
|
||||
this.trackedRace = trackedRace;
|
||||
}
|
||||
|
||||
public void detach() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFlagEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPassChangeEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogRaceStatusEvent event) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartTimeEvent event) {
|
||||
trackedRace.setStartTimeReceived(event.getStartTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseAreaChangedEvent event) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseDesignChangedEvent event) {
|
||||
trackedRace.onCourseDesignChangedByRaceCommittee(event.getCourseDesign());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningListChangedEvent event) {
|
||||
// do nothing (wait for RaceLogFinishPositioningConfirmedEvent to perform score corrections)
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningConfirmedEvent event) {
|
||||
// do nothing score correction is handled by the leaderboard
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPathfinderEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogGateLineOpeningTimeEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartProcedureChangedEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
}
|
||||
+1
-14
@@ -71,7 +71,6 @@ import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.impl.HyperbolicTimeDifferenceWeigher;
|
||||
import com.sap.sailing.domain.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.tracking.CourseDesignChangedListener;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
@@ -221,11 +220,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
||||
|
||||
private transient CombinedWindTrackImpl combinedWindTrack;
|
||||
|
||||
private transient RaceLog attachedRaceLog;
|
||||
|
||||
private transient TrackedRaceLogListener raceLogListener;
|
||||
|
||||
protected transient CourseDesignChangedListener courseDesignChangedListener;
|
||||
protected transient RaceLog attachedRaceLog;
|
||||
|
||||
/**
|
||||
* The time delay to the current point in time in milliseconds.
|
||||
@@ -277,7 +272,6 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
||||
this.startToNextMarkCacheInvalidationListeners = new ConcurrentHashMap<Mark, TrackedRaceImpl.StartToNextMarkCacheInvalidationListener>();
|
||||
this.maneuverCache = createManeuverCache();
|
||||
this.markTracks = new ConcurrentHashMap<Mark, GPSFixTrack<Mark, GPSFix>>();
|
||||
this.raceLogListener = new TrackedRaceLogListener(this);
|
||||
this.crossTrackErrorCache = new CrossTrackErrorCache(this);
|
||||
int i = 0;
|
||||
for (Waypoint waypoint : race.getCourse().getWaypoints()) {
|
||||
@@ -2338,12 +2332,10 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
||||
@Override
|
||||
public void attachRaceLog(RaceLog raceLog) {
|
||||
this.attachedRaceLog = raceLog;
|
||||
attachedRaceLog.addListener(raceLogListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detachRaceLog() {
|
||||
this.attachedRaceLog.removeListener(raceLogListener);
|
||||
this.attachedRaceLog = null;
|
||||
}
|
||||
|
||||
@@ -2352,11 +2344,6 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
||||
return attachedRaceLog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCourseDesignChangedListener(CourseDesignChangedListener listener) {
|
||||
this.courseDesignChangedListener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Distance getDistanceToStartLine(Competitor competitor, TimePoint timePoint) {
|
||||
Waypoint startWaypoint = getRace().getCourse().getFirstWaypoint();
|
||||
|
||||
Reference in new issue
Block a user