From a523f790d36a1d207aba00dcc91c327b76c1a455 Mon Sep 17 00:00:00 2001 From: Papick Garcia Taboada Date: Wed, 4 May 2016 15:21:56 +0200 Subject: [PATCH] Moving update status to status event programming model with source --- .../impl/RaceLogRaceTracker.java | 7 ++--- .../impl/SwissTimingRaceTrackerImpl.java | 9 ++++--- .../SwissTimingReplayToDomainAdapter.java | 7 ++--- .../domain/test/OnlineTracTracBasedTest.java | 9 ++++--- .../domain/test/mock/MockedTrackedRace.java | 2 +- .../impl/TracTracRaceTrackerImpl.java | 6 +++-- .../domain/tracking/DynamicTrackedRace.java | 2 +- .../domain/tracking/TrackingDataLoader.java | 1 - .../impl/AbstractTrackingDataLoaderImpl.java | 26 ------------------- .../tracking/impl/DynamicTrackedRaceImpl.java | 2 +- .../gwt/ui/test/MockedTrackedRace.java | 2 +- .../UpdateTrackedRaceStatus.java | 5 ++-- 12 files changed, 30 insertions(+), 48 deletions(-) delete mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractTrackingDataLoaderImpl.java diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java index 4ba6a532a21..a5502f25989 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java @@ -65,6 +65,7 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.RaceHandle; import com.sap.sailing.domain.tracking.RaceTracker; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; @@ -84,7 +85,7 @@ import difflib.PatchFailedException; * * @author Fredrik Teschke */ -public class RaceLogRaceTracker implements RaceTracker { +public class RaceLogRaceTracker implements RaceTracker, TrackingDataLoader { private static final String LOGGER_AND_LOGAUTHOR_NAME = RaceLogRaceTracker.class.getName(); private static final Logger logger = Logger.getLogger(LOGGER_AND_LOGAUTHOR_NAME); @@ -178,7 +179,7 @@ public class RaceLogRaceTracker implements RaceTracker { // mark passing calculator is automatically stopped, when the race status is set to {@link // TrackedRaceStatusEnum#FINISHED} - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 100)); + trackedRace.onStatusChanged(this, new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 100)); // remove listeners on logs for (Entry, Object> visitor : visitors.entrySet()) { @@ -315,7 +316,7 @@ public class RaceLogRaceTracker implements RaceTracker { trackedRace = regatta.createTrackedRace(raceDef, sidelines, windStore, gpsFixStore, params.getDelayToLiveInMillis(), WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, boatClass.getApproximateManeuverDurationInMilliseconds(), null, /*useMarkPassingCalculator*/ true, raceLogResolver); - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.TRACKING, 0)); + trackedRace.onStatusChanged(this, new TrackedRaceStatusImpl(TrackedRaceStatusEnum.TRACKING, 0)); raceLogGPSFixTracker = new RaceLogGPSFixTracker(regatta, trackedRace, gpsFixStore); logger.info(String.format("Started tracking race-log race (%s)", raceLog)); diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java index d450b1651f8..15b83f9cf52 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java @@ -60,6 +60,7 @@ import com.sap.sailing.domain.tracking.RaceTracker; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; @@ -69,7 +70,8 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.PatchFailedException; -public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implements SwissTimingRaceTracker, SailMasterListener { +public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl + implements SwissTimingRaceTracker, SailMasterListener, TrackingDataLoader { private static final Logger logger = Logger.getLogger(SwissTimingRaceTrackerImpl.class.getName()); private final SailMasterConnector connector; @@ -146,6 +148,7 @@ public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implemen this.delayToLiveInMillis = delayToLiveInMillis; this.competitorsByBoatId = new HashMap(); this.useInternalMarkPassingAlgorithm = useInternalMarkPassingAlgorithm; + } @Override @@ -161,7 +164,7 @@ public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implemen public void stop(boolean preemptive) throws MalformedURLException, IOException, InterruptedException { if (isTrackedRaceStillReachable()) { TrackedRaceStatus newStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 1.0); - trackedRace.setStatus(newStatus); + trackedRace.onStatusChanged(this, newStatus); } connector.removeSailMasterListener(this); } @@ -416,7 +419,7 @@ public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implemen } else { newStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, progress); } - trackedRace.setStatus(newStatus); + trackedRace.onStatusChanged(this, newStatus); } } diff --git a/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java b/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java index 096cbb03e87..4c4b53a1ae7 100755 --- a/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java +++ b/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java @@ -48,6 +48,7 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; @@ -70,7 +71,7 @@ import difflib.PatchFailedException; * @author Axel Uhl (D043530) * */ -public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter { +public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter implements TrackingDataLoader { private static final int THRESHOLD_FOR_EARLIEST_MARK_PASSING_BEFORE_START_IN_MILLIS = 30000; private static final Logger logger = Logger.getLogger(SwissTimingReplayToDomainAdapter.class.getName()); @@ -322,7 +323,7 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter { WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, /* time over which to average speed: */ race.getBoatClass().getApproximateManeuverDurationInMilliseconds(), /* raceDefinitionSetToUpdate */ null, useInternalMarkPassingAlgorithm, raceLogResolver); - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0)); + trackedRace.onStatusChanged(this, new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0)); TimePoint bestStartTimeKnownSoFar = bestStartTimePerRaceID.get(currentRaceID); if (bestStartTimeKnownSoFar != null) { trackedRace.setStartTimeReceived(bestStartTimeKnownSoFar); @@ -392,7 +393,7 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter { } else { newStatus = TrackedRaceStatusEnum.LOADING; } - trackedRace.setStatus(new TrackedRaceStatusImpl(newStatus, progress)); + trackedRace.onStatusChanged(this, new TrackedRaceStatusImpl(newStatus, progress)); } } } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java index 730b08055cc..4674b49dfe7 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java @@ -34,6 +34,7 @@ import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore; import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; @@ -63,7 +64,7 @@ import com.tractrac.subscription.lib.api.event.IStoredDataEvent; * @author Axel Uhl (d043530) * */ -public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest { +public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest implements TrackingDataLoader { private final Logger logger = Logger.getLogger(OnlineTracTracBasedTest.class.getName()); private DomainFactoryImpl domainFactory; private Regatta domainEvent; @@ -137,20 +138,20 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest { logger.info("Stored data begin"); lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0); if (getTrackedRace() != null) { - getTrackedRace().setStatus(lastStatus); + getTrackedRace().onStatusChanged(OnlineTracTracBasedTest.this, lastStatus); } break; case End: logger.info("Stored data end"); lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.TRACKING, 1); if (getTrackedRace() != null) { - getTrackedRace().setStatus(lastStatus); + getTrackedRace().onStatusChanged(OnlineTracTracBasedTest.this, lastStatus); } break; case Progress: lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, storedDataEvent.getProgress()); if (getTrackedRace() != null) { - getTrackedRace().setStatus(lastStatus); + getTrackedRace().onStatusChanged(OnlineTracTracBasedTest.this, lastStatus); } break; default: diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index 60379c221f2..052110eb39b 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -812,7 +812,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public void setStatus(TrackingDataLoader loader, TrackedRaceStatus status) { + public void onStatusChanged(TrackingDataLoader loader, TrackedRaceStatus status) { } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java index dc74e7f3e35..fac488c9b26 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java @@ -41,6 +41,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; @@ -69,7 +70,8 @@ import com.tractrac.subscription.lib.api.event.ILiveDataEvent; import com.tractrac.subscription.lib.api.event.IStoredDataEvent; import com.tractrac.subscription.lib.api.race.IRacesListener; -public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements IConnectionStatusListener, TracTracRaceTracker, DynamicRaceDefinitionSet { +public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl + implements IConnectionStatusListener, TracTracRaceTracker, DynamicRaceDefinitionSet, TrackingDataLoader { private static final Logger logger = Logger.getLogger(TracTracRaceTrackerImpl.class.getName()); /** @@ -601,7 +603,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements } else { status = lastStatus; } - trackedRace.setStatus(status); + trackedRace.onStatusChanged(this, status); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java index e8da871dcc3..ba065f0c376 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java @@ -162,7 +162,7 @@ public interface DynamicTrackedRace extends TrackedRace { void setStatus(TrackedRaceStatus newStatus); - void setStatus(TrackingDataLoader loader, TrackedRaceStatus status); + void onStatusChanged(TrackingDataLoader source, TrackedRaceStatus status); /** * whenever a new course design is published by the race committee and the appropriate event occurs in the race log, diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackingDataLoader.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackingDataLoader.java index c146a800092..2a180f354ba 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackingDataLoader.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackingDataLoader.java @@ -2,6 +2,5 @@ package com.sap.sailing.domain.tracking; public interface TrackingDataLoader { - TrackedRaceStatus getStatus(); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractTrackingDataLoaderImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractTrackingDataLoaderImpl.java deleted file mode 100644 index 33bece8c28a..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractTrackingDataLoaderImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sap.sailing.domain.tracking.impl; - -import com.sap.sailing.domain.tracking.DynamicTrackedRace; -import com.sap.sailing.domain.tracking.TrackedRaceStatus; -import com.sap.sailing.domain.tracking.TrackingDataLoader; - -public abstract class AbstractTrackingDataLoaderImpl implements TrackingDataLoader { - - private final DynamicTrackedRace trackedRace; - private TrackedRaceStatus status; - - protected AbstractTrackingDataLoaderImpl(DynamicTrackedRace trackedRace) { - this.trackedRace = trackedRace; - } - - protected void updateStatus(TrackedRaceStatus status) { - this.status = status; - this.trackedRace.setStatus(this, status); - } - - @Override - public TrackedRaceStatus getStatus() { - return status; - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java index 714496574af..e1db280b7e5 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java @@ -187,7 +187,7 @@ DynamicTrackedRace, GPSTrackListener { } @Override - public void setStatus(TrackingDataLoader loader, TrackedRaceStatus status) { + public void onStatusChanged(TrackingDataLoader source, TrackedRaceStatus status) { // FIXME implement loader status aggregation } diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java index e42aba51125..f12ec73b7da 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java @@ -569,7 +569,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public void setStatus(TrackingDataLoader loader, TrackedRaceStatus status) { + public void onStatusChanged(TrackingDataLoader loader, TrackedRaceStatus status) { } @Override diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java index 339b7baa51e..c5613a291cc 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java @@ -3,10 +3,11 @@ package com.sap.sailing.server.operationaltransformation; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRaceStatus; +import com.sap.sailing.domain.tracking.TrackingDataLoader; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; -public class UpdateTrackedRaceStatus extends AbstractRaceOperation { +public class UpdateTrackedRaceStatus extends AbstractRaceOperation implements TrackingDataLoader { private static final long serialVersionUID = 5847067037829132465L; private final TrackedRaceStatus newStatus; @@ -18,7 +19,7 @@ public class UpdateTrackedRaceStatus extends AbstractRaceOperation { @Override public Void internalApplyTo(RacingEventService toState) throws Exception { DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); - trackedRace.setStatus(newStatus); + trackedRace.onStatusChanged(this, newStatus); return null; }