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 fe15690b418..1c6edc43c64 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 @@ -40,6 +40,7 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.RacesHandle; 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.WindStore; @@ -78,6 +79,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements private final WindStore windStore; private final Set races; private final DynamicTrackedRegatta trackedRegatta; + private TrackedRaceStatus lastStatus; /** * paramURL, liveURI and storedURI for TracTrac connection @@ -408,45 +410,42 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements @Override public void stopped() { logger.info("stopped TracTrac tracking for "+getRaces()); + lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 1.0); + updateStatusOfTrackedRaces(); + } + + private void updateStatusOfTrackedRaces() { for (RaceDefinition race : getRaces()) { - DynamicTrackedRace trackedRace = getTrackedRegatta().getExistingTrackedRace(race); - if (trackedRace != null) { - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 1.0)); - } + updateStatusOfTrackedRace(race); + } + } + + private void updateStatusOfTrackedRace(RaceDefinition race) { + DynamicTrackedRace trackedRace = getTrackedRegatta().getExistingTrackedRace(race); + if (trackedRace != null) { + trackedRace.setStatus(lastStatus); } } @Override public void storedDataBegin() { logger.info("Stored data begin for race(s) "+getRaces()); - for (RaceDefinition race : getRaces()) { - DynamicTrackedRace trackedRace = getTrackedRegatta().getExistingTrackedRace(race); - if (trackedRace != null) { - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0)); - } - } + lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0); + updateStatusOfTrackedRaces(); } @Override public void storedDataEnd() { logger.info("Stored data end for race(s) "+getRaces()); - for (RaceDefinition race : getRaces()) { - DynamicTrackedRace trackedRace = getTrackedRegatta().getExistingTrackedRace(race); - if (trackedRace != null) { - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.TRACKING, 1)); - } - } + lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.TRACKING, 1); + updateStatusOfTrackedRaces(); } @Override public void storedDataProgress(float progress) { logger.info("Stored data progress for race(s) "+getRaces()+": "+progress); - for (RaceDefinition race : getRaces()) { - DynamicTrackedRace trackedRace = getTrackedRegatta().getExistingTrackedRace(race); - if (trackedRace != null) { - trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, progress)); - } - } + lastStatus = new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, progress); + updateStatusOfTrackedRaces(); } @Override @@ -462,6 +461,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements @Override public void addRaceDefinition(RaceDefinition race) { races.add(race); + updateStatusOfTrackedRace(race); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRegattaImpl.java index f5c7ed402ff..171f60a6b65 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRegattaImpl.java @@ -28,9 +28,7 @@ public class DynamicTrackedRegattaImpl extends TrackedRegattaImpl implements Dyn public DynamicTrackedRace createTrackedRace(RaceDefinition raceDefinition, WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed, DynamicRaceDefinitionSet raceDefinitionSetToUpdate) { - DynamicTrackedRace result = (DynamicTrackedRace) super.createTrackedRace(raceDefinition, windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind, + return (DynamicTrackedRace) super.createTrackedRace(raceDefinition, windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed, raceDefinitionSetToUpdate); - addTrackedRace(result); - return result; } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRegattaImpl.java index 09ddf543ead..8f91e856c35 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRegattaImpl.java @@ -173,6 +173,7 @@ public class TrackedRegattaImpl implements TrackedRegatta { logger.log(Level.INFO, "Creating DynamicTrackedRaceImpl for RaceDefinition " + raceDefinition.getName()); DynamicTrackedRaceImpl result = new DynamicTrackedRaceImpl(this, raceDefinition, windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed); + addTrackedRace(result); if (raceDefinitionSetToUpdate != null) { raceDefinitionSetToUpdate.addRaceDefinition(raceDefinition); }