mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
fixed competitor/boat assignment replication
This commit is contained in:
1 parent
e8dd259df6
commit
b02fb48d55
6 files changed
+66
-5
No files matched your search
+3
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.tracking;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseListener;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
@@ -40,6 +41,8 @@ public interface RaceChangeListener extends CourseListener {
|
||||
|
||||
void startTimeReceivedChanged(TimePoint startTimeReceived);
|
||||
|
||||
void competitorToBoatAssigmentChanged(Competitor competitor, Boat boat);
|
||||
|
||||
/**
|
||||
* Fired when the {@link TrackedRace#getStartOfRace() start of race} time point has changed for the tracked race
|
||||
* observed by this listener. There can be several reasons for this to happen, among them the setting of the start
|
||||
|
||||
+6
-1
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
@@ -113,5 +114,9 @@ public abstract class AbstractRaceChangeListener implements RaceChangeListener {
|
||||
public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) {
|
||||
defaultAction();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void competitorToBoatAssigmentChanged(Competitor competitor, Boat boat) {
|
||||
defaultAction();
|
||||
}
|
||||
}
|
||||
+5
@@ -410,6 +410,10 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
notifyListeners(listener -> listener.startOfRaceChanged(oldStartOfRace, newStartOfRace));
|
||||
}
|
||||
|
||||
private void notifyListenersCompetitorToBoatAssignmentChanged(Competitor competitor, Boat boat) {
|
||||
notifyListeners(listener -> listener.competitorToBoatAssigmentChanged(competitor, boat));
|
||||
}
|
||||
|
||||
private void notifyListenersWaypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) {
|
||||
notifyListeners(listener -> listener.waypointAdded(zeroBasedIndex, waypointThatGotAdded));
|
||||
}
|
||||
@@ -831,5 +835,6 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
@Override
|
||||
public void setBoatForCompetitor(Competitor competitor, Boat boat) {
|
||||
super.setBoatForCompetitor(competitor, boat);
|
||||
notifyListenersCompetitorToBoatAssignmentChanged(competitor, boat);
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -98,15 +98,15 @@ public class TrackRaceBoatCompetitorMetadataReplicationTest extends AbstractServ
|
||||
public void testStartTrackingRaceReplication() throws Exception {
|
||||
final String boat1CompetitorName = "CYC";
|
||||
final String boat1Name = "Boot 1";
|
||||
final String boat1Color = "#ff0000";
|
||||
final String boat1Color = "#FF0000";
|
||||
|
||||
final String boat2CompetitorName = "SVI";
|
||||
final String boat2Name = "Boot 2";
|
||||
final String boat2Color = "#ffff00";
|
||||
final String boat2Color = "#FFFF00";
|
||||
|
||||
final String boat3CompetitorName = "BCCÜ";
|
||||
final String boat3CompetitorName = "BYCÜ";
|
||||
final String boat3Name = "Boot 3";
|
||||
final String boat3Color = "#ff00ff";
|
||||
final String boat3Color = "#FF00FF";
|
||||
|
||||
startTracking();
|
||||
Thread.sleep(5000);
|
||||
|
||||
+8
@@ -58,6 +58,7 @@ import com.sap.sailing.domain.abstractlog.race.state.RaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.ReadonlyRaceStateImpl;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
import com.sap.sailing.domain.base.CompetitorStore.CompetitorUpdateListener;
|
||||
@@ -195,6 +196,7 @@ import com.sap.sailing.server.operationaltransformation.RenameEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.SetDataImportDeleteProgressFromMapTimer;
|
||||
import com.sap.sailing.server.operationaltransformation.TrackRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateCompetitor;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateCompetitorToBoatAssignment;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateEndOfTracking;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateMarkPassings;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackDurationOperation;
|
||||
@@ -1733,6 +1735,11 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
replicate(new UpdateMarkPassings(getRaceIdentifier(), competitor, markPassings));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void competitorToBoatAssigmentChanged(Competitor competitor, Boat boat) {
|
||||
replicate(new UpdateCompetitorToBoatAssignment(getRaceIdentifier(), competitor, boat));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) {
|
||||
replicate(new UpdateWindAveragingTime(getRaceIdentifier(), newMillisecondsOverWhichToAverage));
|
||||
@@ -1741,6 +1748,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
private RegattaAndRaceIdentifier getRaceIdentifier() {
|
||||
return trackedRace.getRaceIdentifier();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class UpdateCompetitorToBoatAssignment extends AbstractRaceOperation<Void> {
|
||||
private static final long serialVersionUID = 3852565541729661410L;
|
||||
private final Competitor competitor;
|
||||
private final Boat boat;
|
||||
|
||||
public UpdateCompetitorToBoatAssignment(RegattaAndRaceIdentifier raceIdentifier, Competitor competitor, Boat boat) {
|
||||
super(raceIdentifier);
|
||||
this.competitor = competitor;
|
||||
this.boat = boat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier());
|
||||
trackedRace.setBoatForCompetitor(competitor, boat);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user