diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RaceLogAttachOnTrackedRaceTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RaceLogAttachOnTrackedRaceTest.java index f5ebcade7a9..80eb691ef57 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RaceLogAttachOnTrackedRaceTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RaceLogAttachOnTrackedRaceTest.java @@ -39,7 +39,7 @@ public class RaceLogAttachOnTrackedRaceTest { } @Override - public RaceLog getRaceLog() { + public RaceLog getRaceLog(Serializable identifier) { return raceLog; } } @@ -61,7 +61,7 @@ public class RaceLogAttachOnTrackedRaceTest { column.setTrackedRace(defaultFleet, trackedRace); - assertSame(column.getRaceLog(defaultFleet), trackedRace.getRaceLog()); + assertSame(column.getRaceLog(defaultFleet), trackedRace.getRaceLog(column.getRaceLogIdentifier(defaultFleet))); } @Test @@ -74,7 +74,7 @@ public class RaceLogAttachOnTrackedRaceTest { column.setTrackedRace(fleet, trackedRace); column.setTrackedRace(fleet, null); - assertNull(trackedRace.getRaceLog()); + assertNull(trackedRace.getRaceLog(column.getRaceLogIdentifier(fleet))); } @Test @@ -88,8 +88,8 @@ public class RaceLogAttachOnTrackedRaceTest { column.setTrackedRace(aFleet, trackedRace); - assertSame(column.getRaceLog(aFleet), trackedRace.getRaceLog()); - assertNotSame(column.getRaceLog(bFleet), trackedRace.getRaceLog()); + assertSame(column.getRaceLog(aFleet), trackedRace.getRaceLog(column.getRaceLogIdentifier(aFleet))); + assertNotSame(column.getRaceLog(bFleet), trackedRace.getRaceLog(column.getRaceIdentifier(bFleet))); } @Test @@ -104,8 +104,8 @@ public class RaceLogAttachOnTrackedRaceTest { column.setTrackedRace(fleet, firstRace); column.setTrackedRace(fleet, secondRace); - assertNull(firstRace.getRaceLog()); - assertSame(column.getRaceLog(fleet), secondRace.getRaceLog()); + assertNull(firstRace.getRaceLog(column.getRaceLogIdentifier(fleet))); + assertSame(column.getRaceLog(fleet), secondRace.getRaceLog(column.getRaceLogIdentifier(fleet))); } } 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 f241bbfa778..c3a8cc858dc 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 @@ -753,7 +753,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public RaceLog getRaceLog() { + public RaceLog getRaceLog(Serializable identifier) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java index e31b38f9e8b..0f45b8df200 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java @@ -490,7 +490,7 @@ public class MockedTrackedRaceWithStartTimeAndRanks implements TrackedRace { } @Override - public RaceLog getRaceLog() { + public RaceLog getRaceLog(Serializable identifier) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java index 1c5ba9d2b9e..f1cf614e411 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java @@ -6,6 +6,7 @@ import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.util.impl.RaceColumnListeners; @@ -158,5 +159,12 @@ public interface RaceColumn extends Named { * If null, the {@link #getFactor() factor} defaults to 1 for non-medal and {@link #DEFAULT_MEDAL_RACE_FACTOR} for * medal races. Otherwise, the explicit factor is used. */ - Double getExplicitFactor(); + Double getExplicitFactor(); + + /** + * Returns the race log identifier associated with this fleet and race log + * @param fleet + * @return + */ + RaceLogIdentifier getRaceLogIdentifier(Fleet fleet); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 22db0f1f126..7beadaf56b8 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -26,6 +26,7 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem private final Map raceIdentifiers; private final Map raceLogs; + /** * holds the race log identifer template needed to create the appropriate RaceLogIdentifer that is constructed from the * parent object name, name of this raceColumn and the name of a fleet of this raceColumn to access the RaceLog in the @@ -56,6 +57,11 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem public RaceLog getRaceLog(Fleet fleet) { return raceLogs.get(fleet); } + + @Override + public RaceLogIdentifier getRaceLogIdentifier(Fleet fleet) { + return new RaceLogIdentifierImpl(raceLogsIdentifierTemplate, getName(), fleet); + } @Override public TrackedRace getTrackedRace(Fleet fleet) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java index 867847adb37..379c7482274 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java @@ -166,4 +166,9 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R public boolean isTransient() { return false; } + + @Override + public RaceLogIdentifier getRaceLogIdentifier(Fleet fleet) { + return null; + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java index 126986f75c4..caeef494255 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java @@ -499,7 +499,7 @@ public interface TrackedRace extends Serializable { * Returns the attached race log event track for this race if any. * Otherwise null. */ - RaceLog getRaceLog(); + RaceLog getRaceLog(Serializable identifier); /** * a setter for the listener on course design changes. The listener is mostly part of the tracking provider adapter. 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 a104dbbdf1e..3f0f880cb38 100755 --- 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 @@ -666,11 +666,12 @@ DynamicTrackedRace, GPSTrackListener { @Override public void attachRaceLog(RaceLog raceLog) { super.attachRaceLog(raceLog); - logListener.addTo(attachedRaceLog); + logListener.addTo(raceLog); } @Override public void detachRaceLog(Serializable identifier) { + RaceLog attachedRaceLog = attachedRaceLogs.get(identifier); if (attachedRaceLog != null) { logListener.removeFrom(attachedRaceLog); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 7b92eca563a..cffccdc17b2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -221,7 +221,6 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { private transient CombinedWindTrackImpl combinedWindTrack; - protected transient RaceLog attachedRaceLog; protected transient HashMap attachedRaceLogs; /** @@ -2347,8 +2346,8 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { } @Override - public RaceLog getRaceLog() { - return attachedRaceLog; + public RaceLog getRaceLog(Serializable identifier) { + return attachedRaceLogs.get(identifier); } @Override 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 1f6aa88dad6..6aff8583e1a 100644 --- 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 @@ -754,7 +754,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public RaceLog getRaceLog() { + public RaceLog getRaceLog(Serializable identifier) { // TODO Auto-generated method stub return null; }