mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-22 20:13:52 +00:00
Enabled replication for SensorFixTrack and SensorFixes
This commit is contained in:
1 parent
5875db842f
commit
4718ae59ee
6 files changed
+69
-4
No files matched your search
Executable → Regular
+5
@@ -10,6 +10,7 @@ import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.SensorFix;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
|
||||
@@ -54,4 +55,8 @@ public interface RaceChangeListener extends CourseListener {
|
||||
void windSourcesToExcludeChanged(Iterable<? extends WindSource> windSourcesToExclude);
|
||||
|
||||
void statusChanged(TrackedRaceStatus newStatus, TrackedRaceStatus oldStatus);
|
||||
|
||||
void trackAdded(DynamicSensorFixTrack<Competitor, ?> track);
|
||||
|
||||
void fixAdded(Competitor competitor, String trackName, SensorFix fix);
|
||||
}
|
||||
+1
-1
@@ -4,6 +4,6 @@ import com.sap.sailing.domain.common.tracking.SensorFix;
|
||||
|
||||
public interface SensorFixTrackListener<ItemType, FixType extends SensorFix> extends TrackListener {
|
||||
|
||||
void fixReceived(FixType fix, ItemType item, boolean firstFixInTrack);
|
||||
void fixReceived(FixType fix, ItemType item, String trackName, boolean firstFixInTrack);
|
||||
|
||||
}
|
||||
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java
Executable → Regular
+12
@@ -9,6 +9,8 @@ import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.SensorFix;
|
||||
import com.sap.sailing.domain.tracking.DynamicSensorFixTrack;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RaceChangeListener;
|
||||
import com.sap.sailing.domain.tracking.TrackedRaceStatus;
|
||||
@@ -113,4 +115,14 @@ public abstract class AbstractRaceChangeListener implements RaceChangeListener {
|
||||
public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) {
|
||||
defaultAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trackAdded(DynamicSensorFixTrack<Competitor, ?> track) {
|
||||
defaultAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fixAdded(Competitor competitor, String trackName, SensorFix fix) {
|
||||
defaultAction();
|
||||
}
|
||||
}
|
||||
+30
@@ -52,6 +52,7 @@ import com.sap.sailing.domain.tracking.GPSTrackListener;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RaceAbortedListener;
|
||||
import com.sap.sailing.domain.tracking.RaceChangeListener;
|
||||
import com.sap.sailing.domain.tracking.SensorFixTrackListener;
|
||||
import com.sap.sailing.domain.tracking.StartTimeChangedListener;
|
||||
import com.sap.sailing.domain.tracking.TrackFactory;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
@@ -61,6 +62,7 @@ import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.concurrent.LockUtil;
|
||||
import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
|
||||
@@ -486,6 +488,14 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
private void notifyListeners(Competitor competitor, Map<Waypoint, MarkPassing> oldMarkPassings, Iterable<MarkPassing> markPassings) {
|
||||
notifyListeners(listener -> listener.markPassingReceived(competitor, oldMarkPassings, markPassings));
|
||||
}
|
||||
|
||||
private void notifyListeners(DynamicSensorFixTrack<Competitor, ?> track) {
|
||||
notifyListeners(listener -> listener.trackAdded(track));
|
||||
}
|
||||
|
||||
private void notifyListeners(Competitor competitor, String trackName, SensorFix fix) {
|
||||
notifyListeners(listener -> listener.fixAdded(competitor, trackName, fix));
|
||||
}
|
||||
|
||||
/**
|
||||
* A mark passing produced from a {@link RaceLogFinishPositioningConfirmedEvent} where a
|
||||
@@ -1053,4 +1063,24 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
public void addSensorTrack(Competitor competitor, String trackName, DynamicSensorFixTrack<Competitor, ?> track) {
|
||||
super.addSensorTrack(competitor, trackName, track);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <FixT extends SensorFix> void addSensorTrackInternal(Pair<Competitor, String> key,
|
||||
DynamicSensorFixTrack<Competitor, FixT> track) {
|
||||
super.addSensorTrackInternal(key, track);
|
||||
track.addListener(new SensorFixTrackListener<Competitor, FixT>() {
|
||||
private static final long serialVersionUID = 6143309919537011377L;
|
||||
|
||||
@Override
|
||||
public boolean isTransient() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fixReceived(FixT fix, Competitor item, String trackName, boolean firstFixInTrack) {
|
||||
notifyListeners(item, trackName, fix);
|
||||
}
|
||||
});
|
||||
notifyListeners(track);
|
||||
}
|
||||
}
|
||||
+7
-3
@@ -4089,8 +4089,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
||||
TrackT result = getTrackInternal(key);
|
||||
if (result == null) {
|
||||
result = newTrackFactory.get();
|
||||
// TODO add listener (replicate fix) and replicate track
|
||||
sensorTracks.put(key, result);
|
||||
addSensorTrackInternal(key, result);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
@@ -4108,12 +4107,17 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
||||
+ competitor.getName() + "; trackName: " + trackName);
|
||||
}
|
||||
} else {
|
||||
// TODO add
|
||||
this.addSensorTrackInternal(key, track);
|
||||
}
|
||||
} finally {
|
||||
LockUtil.unlockAfterWrite(sensorTracksLock);
|
||||
}
|
||||
}
|
||||
|
||||
protected <FixT extends SensorFix> void addSensorTrackInternal(Pair<Competitor, String> key,
|
||||
DynamicSensorFixTrack<Competitor, FixT> track) {
|
||||
sensorTracks.put(key, track);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <TrackT extends SensorFixTrack<Competitor, ?>> TrackT getTrackInternal(Pair<Competitor, String> key) {
|
||||
|
||||
+14
@@ -109,6 +109,7 @@ import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.SensorFix;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
@@ -145,6 +146,7 @@ import com.sap.sailing.domain.regattalike.HasRegattaLike;
|
||||
import com.sap.sailing.domain.regattalike.IsRegattaLike;
|
||||
import com.sap.sailing.domain.regattalike.LeaderboardThatHasRegattaLike;
|
||||
import com.sap.sailing.domain.regattalog.RegattaLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicSensorFixTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.EmptyTrackedRegattaListener;
|
||||
@@ -186,6 +188,8 @@ import com.sap.sailing.server.operationaltransformation.CreateOrUpdateDeviceConf
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.DataImportFailed;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorSensorFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorSensorFixTrack;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFixForExistingTrack;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFixForNewMarkTrack;
|
||||
@@ -1703,6 +1707,16 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) {
|
||||
replicate(new UpdateWindAveragingTime(getRaceIdentifier(), newMillisecondsOverWhichToAverage));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trackAdded(DynamicSensorFixTrack<Competitor, ?> track) {
|
||||
replicate(new RecordCompetitorSensorFixTrack(getRaceIdentifier(), track));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fixAdded(Competitor competitor, String trackName, SensorFix fix) {
|
||||
replicate(new RecordCompetitorSensorFix(getRaceIdentifier(), competitor, trackName, fix));
|
||||
}
|
||||
|
||||
private RegattaAndRaceIdentifier getRaceIdentifier() {
|
||||
return trackedRace.getRaceIdentifier();
|
||||
|
||||
Reference in new issue
Block a user