fixed competitor/boat assignment replication

This commit is contained in:
fmittag committed 2015-09-14 17:42:03 +02:00
1 parent e8dd259df6
commit b02fb48d55
6 files changed
+66 -5

No files matched your search

@@ -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
@@ -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();
}
}
@@ -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);
}
}
@@ -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);
@@ -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();
}
}
/**
@@ -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;
}
}