diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/NotRevokableException.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/NotRevokableException.java index 74586ba7cda..05dbb4e6946 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/NotRevokableException.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/NotRevokableException.java @@ -1,6 +1,8 @@ package com.sap.sailing.domain.common.abstractlog; -public class NotRevokableException extends Exception { +import java.io.Serializable; + +public class NotRevokableException extends Exception implements Serializable { private static final long serialVersionUID = 6825451915706047105L; public NotRevokableException() { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NoCorrespondingServiceRegisteredException.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NoCorrespondingServiceRegisteredException.java index daad2f61a18..a11c4000567 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NoCorrespondingServiceRegisteredException.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NoCorrespondingServiceRegisteredException.java @@ -1,6 +1,8 @@ package com.sap.sailing.domain.common.racelog.tracking; -public class NoCorrespondingServiceRegisteredException extends RuntimeException { +import java.io.Serializable; + +public class NoCorrespondingServiceRegisteredException extends RuntimeException implements Serializable { public String type; public String serviceInterface; private static final long serialVersionUID = -358955216089477585L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NotDenotedForRaceLogTrackingException.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NotDenotedForRaceLogTrackingException.java index badfccb5523..6c72bd1993f 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NotDenotedForRaceLogTrackingException.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/NotDenotedForRaceLogTrackingException.java @@ -1,6 +1,8 @@ package com.sap.sailing.domain.common.racelog.tracking; -public class NotDenotedForRaceLogTrackingException extends Exception { +import java.io.Serializable; + +public class NotDenotedForRaceLogTrackingException extends Exception implements Serializable { private static final long serialVersionUID = 6721038282862173471L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/TransformationException.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/TransformationException.java index 0a63c6d8b5e..ebda5cb5fcb 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/TransformationException.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/tracking/TransformationException.java @@ -1,8 +1,9 @@ package com.sap.sailing.domain.common.racelog.tracking; import java.io.IOException; +import java.io.Serializable; -public class TransformationException extends IOException { +public class TransformationException extends IOException implements Serializable { private static final long serialVersionUID = -7795777645371428971L; public TransformationException() { diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index 8a370be0420..3ab820063b7 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -359,7 +359,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { String regattaName = (String) dbLeaderboard.get(FieldNames.REGATTA_NAME.name()); if (groupForMetaLeaderboard != null) { result = new LeaderboardGroupMetaLeaderboard(groupForMetaLeaderboard, - loadScoringScheme(dbLeaderboard), resultDiscardingRule, getRegattaLogStore()); + loadScoringScheme(dbLeaderboard), resultDiscardingRule); groupForMetaLeaderboard.setOverallLeaderboard(result); } else if (regattaName == null) { result = loadFlexibleLeaderboard(dbLeaderboard, resultDiscardingRule); diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 4050125cbb6..23082e5033b 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -917,8 +917,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { /* displayGroupsInReverseOrder */ false, Arrays.asList(new Leaderboard[] { leaderboardHighPoint10LastBreaksTie })); LeaderboardGroupMetaLeaderboard leaderboardHighPointESSOverall = new LeaderboardGroupMetaLeaderboard( leaderboardGroup, new HighPointExtremeSailingSeriesOverall(), - new ThresholdBasedResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), - EmptyRegattaLogStore.INSTANCE); + new ThresholdBasedResultDiscardingRuleImpl(/* discarding thresholds */ new int[0])); assertEquals(16, leaderboardHighPointESSOverall.getCompetitorsFromBestToWorst(later).size()); assertEquals(new Double(10), leaderboardHighPointESSOverall.getTotalPoints(competitors[0], later)); assertEquals(new Double(9), leaderboardHighPointESSOverall.getTotalPoints(competitors[1], later)); @@ -975,7 +974,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("Leaderboard Group", "Leaderboard Group", /* displayName */ null, false, Arrays.asList(leaderboard1, leaderboard2, leaderboard3)); leaderboardGroup.setOverallLeaderboard(new LeaderboardGroupMetaLeaderboard(leaderboardGroup, new HighPointExtremeSailingSeriesOverall(), - new ThresholdBasedResultDiscardingRuleImpl(new int[0]), EmptyRegattaLogStore.INSTANCE)); + new ThresholdBasedResultDiscardingRuleImpl(new int[0]))); leaderboardGroup.getOverallLeaderboard().setSuppressed(c[1], true); leaderboardGroup.getOverallLeaderboard().setSuppressed(c[2], true); List rankedCompetitors = leaderboardGroup.getOverallLeaderboard().getCompetitorsFromBestToWorst(later); @@ -1096,7 +1095,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("Leaderboard Group ESS Overall", "Leaderboard Group", /* displayName */ null, false, Arrays.asList(leaderboard1, leaderboard2)); leaderboardGroup.setOverallLeaderboard(new LeaderboardGroupMetaLeaderboard(leaderboardGroup, new HighPointExtremeSailingSeriesOverall(), - new ThresholdBasedResultDiscardingRuleImpl(new int[0]), EmptyRegattaLogStore.INSTANCE)); + new ThresholdBasedResultDiscardingRuleImpl(new int[0]))); leaderboardGroup.getOverallLeaderboard().setSuppressed(c[c.length-1], true); // ranking must match the regatta ranks - as for 11 competitors the ranking is random // in the faulty implementation we test with many iterations to make sure that diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OfflineSerializationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OfflineSerializationTest.java index 6389a6c86c7..7e1dc83fbd8 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OfflineSerializationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OfflineSerializationTest.java @@ -44,7 +44,6 @@ import com.sap.sailing.domain.leaderboard.impl.HighPoint; import com.sap.sailing.domain.leaderboard.impl.LeaderboardGroupImpl; import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl; import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; -import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore; import com.sap.sse.common.Duration; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; @@ -132,7 +131,7 @@ public class OfflineSerializationTest extends AbstractSerializationTest { LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("LeaderboardGroup", "Test Leaderboard Group", /* displayName */ null, /* displayGroupsInReverseOrder */ false, Arrays.asList(new Leaderboard[] { leaderboard })); final LeaderboardGroupMetaLeaderboard overallLeaderboard = new LeaderboardGroupMetaLeaderboard(leaderboardGroup, new HighPoint(), - new ThresholdBasedResultDiscardingRuleImpl(new int[0]), EmptyRegattaLogStore.INSTANCE); + new ThresholdBasedResultDiscardingRuleImpl(new int[0])); leaderboardGroup.setOverallLeaderboard(overallLeaderboard); final double FACTOR = 2.0; overallLeaderboard.getRaceColumnByName("Test Leaderboard").setFactor(FACTOR); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/DoesNotHaveRegattaLogException.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/DoesNotHaveRegattaLogException.java new file mode 100644 index 00000000000..fd2b99540e5 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/DoesNotHaveRegattaLogException.java @@ -0,0 +1,7 @@ +package com.sap.sailing.domain.leaderboard; + +import java.io.Serializable; + +public class DoesNotHaveRegattaLogException extends Exception implements Serializable { + private static final long serialVersionUID = 963948633131929332L; +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/FlexibleLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/FlexibleLeaderboard.java index 041df9131e0..f5b736a8be2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/FlexibleLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/FlexibleLeaderboard.java @@ -21,7 +21,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; * @author Axel Uhl (D043530) * */ -public interface FlexibleLeaderboard extends Leaderboard, Renamable { +public interface FlexibleLeaderboard extends Leaderboard, Renamable, HasRegattaLog { /** * Moves the column with the name name up. * @param name The name of the column to move. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRegattaLog.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRegattaLog.java new file mode 100644 index 00000000000..9ecac12628e --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRegattaLog.java @@ -0,0 +1,20 @@ +package com.sap.sailing.domain.leaderboard; + +import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; +import com.sap.sailing.domain.base.Regatta; + +/** + * Not all leaderboards can have {@link RegattaLog}s attached. Only such + * that do should implement this interface. + * + * @author Fredrik Teschke + * + */ +public interface HasRegattaLog { + /** + * @return The RegattaLog associated with this {@code Leaderboard}. Where this log actually lives may be different + * for different {@code Leaderboard} implementations (i.e. a {@link RegattaLeaderboard} returns the {@code RegattaLog} + * of its {@link Regatta#getRegattaLog Regatta}, whereas a {@link FlexibleLeaderboard} creates its own {@code RegattaLog}). + */ + RegattaLog getRegattaLog(); +} \ No newline at end of file diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java index d03858038b3..d2f0bcc4713 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java @@ -6,7 +6,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutionException; -import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.DomainFactory; @@ -14,7 +13,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.LeaderboardBase; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; -import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; @@ -510,11 +508,4 @@ public interface Leaderboard extends LeaderboardBase { InterruptedException, ExecutionException; NumberOfCompetitorsInLeaderboardFetcher getNumberOfCompetitorsInLeaderboardFetcher(); - - /** - * @return The RegattaLog associated with this {@code Leaderboard}. Where this log actually lives may be different - * for different {@code Leaderboard} implementations (i.e. a {@link RegattaLeaderboard} returns the {@code RegattaLog} - * of its {@link Regatta#getRegattaLog Regatta}, whereas a {@link FlexibleLeaderboard} creates its own {@code RegattaLog}). - */ - RegattaLog getRegattaLog(); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/RegattaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/RegattaLeaderboard.java index 9aaa700dd13..b7a78aa1e18 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/RegattaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/RegattaLeaderboard.java @@ -3,6 +3,6 @@ package com.sap.sailing.domain.leaderboard; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.Renamable; -public interface RegattaLeaderboard extends Leaderboard, Renamable { +public interface RegattaLeaderboard extends Leaderboard, Renamable, HasRegattaLog { Regatta getRegatta(); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java index 2ba4367e0f9..8b2910943b0 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java @@ -12,7 +12,6 @@ import java.util.Map; import java.util.Set; import java.util.WeakHashMap; -import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -26,7 +25,6 @@ import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.leaderboard.impl.AbstractSimpleLeaderboardImpl; -import com.sap.sailing.domain.regattalog.RegattaLogStore; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @@ -54,7 +52,6 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI private final Fleet metaFleet; private final ScoringScheme scoringScheme; private final String name; - private final RegattaLog regattaLog; /** * Weak hash maps cannot be serialized. Therefore, this field is serialized as a {@link HashMap} in {@link #writeObject(ObjectOutputStream)} @@ -94,14 +91,13 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI } public AbstractMetaLeaderboard(String name, ScoringScheme scoringScheme, - ThresholdBasedResultDiscardingRule resultDiscardingRule, RegattaLogStore regattaLogStore) { + ThresholdBasedResultDiscardingRule resultDiscardingRule) { super(resultDiscardingRule); metaFleet = new FleetImpl("MetaFleet"); this.scoringScheme = scoringScheme; this.name = name; columnsForLeaderboards = new WeakHashMap<>(); scoreCorrectionChangeForwardersByLeaderboard = new WeakHashMap(); - regattaLog = regattaLogStore.getRegattaLog(name, /*ignoreCache*/ true); } @Override @@ -228,10 +224,4 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI public String getName() { return name; } - - @Override - public RegattaLog getRegattaLog() { - return regattaLog; - } - } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/FlexibleMetaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/FlexibleMetaLeaderboard.java index 0dcd836ef9c..04b8d549869 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/FlexibleMetaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/FlexibleMetaLeaderboard.java @@ -7,7 +7,6 @@ import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.regattalog.RegattaLogStore; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; @@ -19,8 +18,8 @@ public class FlexibleMetaLeaderboard extends AbstractMetaLeaderboard { private final NamedReentrantReadWriteLock leaderboardsLock; public FlexibleMetaLeaderboard(String name, ScoringScheme scoringScheme, - ThresholdBasedResultDiscardingRule resultDiscardingRule, RegattaLogStore regattaLogStore) { - super(name, scoringScheme, resultDiscardingRule, regattaLogStore); + ThresholdBasedResultDiscardingRule resultDiscardingRule) { + super(name, scoringScheme, resultDiscardingRule); leaderboards = new ArrayList(); leaderboardsLock = new NamedReentrantReadWriteLock("leaderboards collection of "+FlexibleMetaLeaderboard.class.getSimpleName()+" "+getName(), /* fair */ false); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java index 899703dc780..73860657959 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java @@ -11,7 +11,6 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.LeaderboardGroupListener; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.regattalog.RegattaLogStore; import com.sap.sailing.domain.tracking.TrackedRace; /** @@ -39,9 +38,8 @@ public class LeaderboardGroupMetaLeaderboard extends AbstractMetaLeaderboard imp private final LeaderboardGroup leaderboardGroup; public LeaderboardGroupMetaLeaderboard(LeaderboardGroup leaderboardGroup, ScoringScheme scoringScheme, - ThresholdBasedResultDiscardingRule resultDiscardingRule, RegattaLogStore regattaLogStore) { - super(leaderboardGroup.getName() + " " + LeaderboardNameConstants.OVERALL, scoringScheme, resultDiscardingRule, - regattaLogStore); + ThresholdBasedResultDiscardingRule resultDiscardingRule) { + super(leaderboardGroup.getName() + " " + LeaderboardNameConstants.OVERALL, scoringScheme, resultDiscardingRule); this.leaderboardGroup = leaderboardGroup; leaderboardGroup.addLeaderboardGroupListener(this); registerAsScoreCorrectionChangeForwarderAndRaceColumnListenerOnAllLeaderboards(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 66bd0a3fa3f..85d13565ec8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -40,6 +40,7 @@ import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; +import com.sap.sailing.domain.leaderboard.DoesNotHaveRegattaLogException; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapter; import com.sap.sailing.domain.tracking.TrackedRace; @@ -463,8 +464,8 @@ public interface SailingService extends RemoteService { * Get the competitors registered in this leaderboard. Does not automatically include the competitors * {@link #getCompetitorRegistrations(String, String, String) registered for the racelog}. */ - Collection getCompetitorRegistrations(String leaderboardName); - + Collection getCompetitorRegistrations(String leaderboardName) throws DoesNotHaveRegattaLogException; + void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); Collection getMarksInRaceLog(String leaderboardName, String raceColumnName, String fleetName); @@ -539,7 +540,8 @@ public interface SailingService extends RemoteService { */ RaceDTO setStartTimeReceivedForRace(RaceIdentifier raceIdentifier, Date newStartTimeReceived); - void setCompetitorRegistrations(String leaderboardName, Set competitors); + void setCompetitorRegistrations(String leaderboardName, Set competitors) + throws DoesNotHaveRegattaLogException; /** * A leaderboard may be situated under multiple events (connected via a leaderboardgroup). diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 0491657f8e3..ab88c907c29 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -198,7 +198,9 @@ import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFact import com.sap.sailing.domain.igtimiadapter.Account; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.IgtimiConnectionFactory; +import com.sap.sailing.domain.leaderboard.DoesNotHaveRegattaLogException; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; +import com.sap.sailing.domain.leaderboard.HasRegattaLog; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; @@ -4694,8 +4696,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return getRaceLog(triple.getA(), triple.getB(), triple.getC()); } - private RegattaLog getRegattaLog(String leaderboardName) { - return getService().getLeaderboardByName(leaderboardName).getRegattaLog(); + private RegattaLog getRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException { + Leaderboard l = getService().getLeaderboardByName(leaderboardName); + if (! (l instanceof HasRegattaLog)) { + throw new DoesNotHaveRegattaLogException(); + } + return ((HasRegattaLog) l).getRegattaLog(); } private RaceLog getRaceLog(String leaderboardName, String raceColumnName, String fleetName) { @@ -4712,7 +4718,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Collection getCompetitorRegistrations(String leaderboardName) { + public Collection getCompetitorRegistrations(String leaderboardName) + throws DoesNotHaveRegattaLogException { return convertToCompetitorDTOs( new RegisteredCompetitorsAnalyzer<>( getRegattaLog(leaderboardName)).analyze()); @@ -4735,7 +4742,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void setCompetitorRegistrations(String leaderboardName, Set competitorDTOs) { + public void setCompetitorRegistrations(String leaderboardName, Set competitorDTOs) + throws DoesNotHaveRegattaLogException { RegattaLog regattaLog = getRegattaLog(leaderboardName); Set competitors = new HashSet(); for (CompetitorDTO dto : competitorDTOs) { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboardGroups.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboardGroups.java index 8f83aa8e09c..d0a685d870c 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboardGroups.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboardGroups.java @@ -49,7 +49,6 @@ import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; -import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore; import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.server.RacingEventService; @@ -99,8 +98,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe final LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl(groupName, groupDescription, /* displayName */ null, false, leaderboards); final Leaderboard overallLeaderboard = new LeaderboardGroupMetaLeaderboard(leaderboardGroup, - new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0]), - EmptyRegattaLogStore.INSTANCE); + new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0])); leaderboardGroup.setOverallLeaderboard(overallLeaderboard); mongoObjectFactory.storeLeaderboardGroup(leaderboardGroup); @@ -207,8 +205,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe final LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl(groupName, groupDescription, /* displayName */ null, false, leaderboards); final Leaderboard overallLeaderboard = new LeaderboardGroupMetaLeaderboard(leaderboardGroup, - new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0]), - EmptyRegattaLogStore.INSTANCE); + new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0])); leaderboardGroup.setOverallLeaderboard(overallLeaderboard); overallLeaderboard.setSuppressed(wolfgang, true); mongoObjectFactory.storeLeaderboardGroup(leaderboardGroup); @@ -264,8 +261,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe final LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl(groupName, groupDescription, /* displayName */ null, false, leaderboards); final Leaderboard overallLeaderboard = new LeaderboardGroupMetaLeaderboard(leaderboardGroup, - new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0]), - EmptyRegattaLogStore.INSTANCE); + new HighPointExtremeSailingSeriesOverall(), new ThresholdBasedResultDiscardingRuleImpl(new int[0])); leaderboardGroup.setOverallLeaderboard(overallLeaderboard); overallLeaderboard.setSuppressed(wolfgang, true); overallLeaderboard.setSuppressed(hasso, true); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 64890cb0483..76129308d94 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -2097,7 +2097,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes private void addOverallLeaderboardToLeaderboardGroup(LeaderboardGroup leaderboardGroup, ScoringScheme scoringScheme, int[] discardThresholds) { Leaderboard overallLeaderboard = new LeaderboardGroupMetaLeaderboard(leaderboardGroup, scoringScheme, - new ThresholdBasedResultDiscardingRuleImpl(discardThresholds), getRegattaLogStore()); + new ThresholdBasedResultDiscardingRuleImpl(discardThresholds)); leaderboardGroup.setOverallLeaderboard(overallLeaderboard); addLeaderboard(overallLeaderboard); updateStoredLeaderboard(overallLeaderboard);