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 b5ae03faea4..82b1174361f 100644 --- 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 @@ -149,7 +149,7 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; -import com.sap.sailing.server.operationaltransformation.CreateLeaderboard; +import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; import com.sap.sailing.server.operationaltransformation.DisconnectLeaderboardColumnFromTrackedRace; import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnDown; @@ -256,12 +256,16 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS result.name = leaderboard.getName(); result.competitorDisplayNames = new HashMap(); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { - RegattaAndRaceIdentifier raceIdentifier = null; - if (raceColumn.getTrackedRace(fleet) != null) { + for (Fleet fleet : raceColumn.getFleets()) { + RegattaAndRaceIdentifier raceIdentifier = null; TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); - raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedEvent().getRegatta().getName(), trackedRace.getRace().getName()); + if (trackedRace != null) { + raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedEvent().getRegatta() + .getName(), trackedRace.getRace().getName()); + } + result.addRace(raceColumn.getName(), fleet.getName(), raceColumn.isMedalRace(), + raceIdentifier, /* StrippedRaceDTO */ null); } - result.addRace(raceColumn.getName(), fleetName, raceColumn.isMedalRace(), raceIdentifier, /* StrippedRaceDTO */ null); } result.rows = new HashMap(); result.hasCarriedPoints = leaderboard.hasCarriedPoints(); @@ -1145,7 +1149,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS @Override public LeaderboardDTO createLeaderboard(String leaderboardName, int[] discardThresholds) { - return createStrippedLeaderboardDTO(getService().apply(new CreateLeaderboard(leaderboardName, discardThresholds)), false); + return createStrippedLeaderboardDTO(getService().apply(new CreateFlexibleLeaderboard(leaderboardName, discardThresholds)), false); } @Override @@ -1182,11 +1186,15 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS for (Leaderboard leaderboard : leaderboards.values()) { Iterable races = leaderboard.getRaceColumns(); for (RaceColumn raceInLeaderboard : races) { - TrackedRace trackedRace = raceInLeaderboard.getTrackedRace(fleet); - RaceDefinition trackedRaceDef = trackedRace != null ? trackedRace.getRace() : null; - if (trackedRaceDef != null && trackedRaceDef.getName().equals(race.name)) { - results.add(createStrippedLeaderboardDTO(leaderboard, false)); - break; + for (Fleet fleet : raceInLeaderboard.getFleets()) { + TrackedRace trackedRace = raceInLeaderboard.getTrackedRace(fleet); + if (trackedRace != null) { + RaceDefinition trackedRaceDef = trackedRace.getRace(); + if (trackedRaceDef.getName().equals(race.name)) { + results.add(createStrippedLeaderboardDTO(leaderboard, false)); + break; + } + } } } } @@ -1202,9 +1210,9 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS * If withAdditionalData is true, additional data (like location and race dates) will be loaded. */ private LeaderboardDTO createStrippedLeaderboardDTO(Leaderboard leaderboard, boolean withAdditionalData) { - LeaderboardDTO dto = new LeaderboardDTO(); - dto.name = leaderboard.getName(); - dto.competitorDisplayNames = new HashMap(); + LeaderboardDTO leaderboardDTO = new LeaderboardDTO(); + leaderboardDTO.name = leaderboard.getName(); + leaderboardDTO.competitorDisplayNames = new HashMap(); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { RegattaAndRaceIdentifier raceIdentifier = null; StrippedRaceDTO race = null; @@ -1213,7 +1221,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedEvent().getRegatta().getName(), trackedRace.getRace().getName()); if (withAdditionalData) { - //Getting the places of the race + // Getting the places of the race Pair startAndFinish = getStartFinishPlacemarksForTrackedRace(trackedRace); PlacemarkOrderDTO racePlaces = new PlacemarkOrderDTO(); if (startAndFinish.getA() != null) { @@ -1233,11 +1241,11 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS race.endOfRace = trackedRace.getEndOfRace() == null ? null : trackedRace.getEndOfRace().asDate(); } } - dto.addRace(raceColumn.getName(), fleetName, raceColumn.isMedalRace(), raceIdentifier, race); + leaderboardDTO.addRace(raceColumn.getName(), fleetName, raceColumn.isMedalRace(), raceIdentifier, race); } - dto.hasCarriedPoints = leaderboard.hasCarriedPoints(); - dto.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces(); - return dto; + leaderboardDTO.hasCarriedPoints = leaderboard.hasCarriedPoints(); + leaderboardDTO.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces(); + return leaderboardDTO; } private Pair getStartFinishPlacemarksForTrackedRace(TrackedRace race) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInLeaderboardDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInLeaderboardDTO.java index 1afbf03982b..e51df815224 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInLeaderboardDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInLeaderboardDTO.java @@ -60,7 +60,6 @@ public class RaceInLeaderboardDTO implements IsSerializable { /** * Returns an object with data (e.g. start date or places) for the RaceInLeaderboardDTO. Is null, if * the method {@link RaceInLeaderboardDTO#isTrackedRace(String)} returns false. - * @param fleetName TODO * * @return An Object with additional data, or null if the race isn't tracked */ diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ServerReplicationTest.java index 265db894b48..ebc146cd2a7 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ServerReplicationTest.java @@ -26,7 +26,7 @@ import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.server.operationaltransformation.AddRegatta; import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; -import com.sap.sailing.server.operationaltransformation.CreateLeaderboard; +import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; public class ServerReplicationTest extends AbstractServerReplicationTest { @@ -45,7 +45,7 @@ public class ServerReplicationTest extends AbstractServerReplicationTest { final String leaderboardName = "My new leaderboard"; assertNull(replica.getLeaderboardByName(leaderboardName)); final int[] discardThresholds = new int[] { 17, 23 }; - CreateLeaderboard createTestLeaderboard = new CreateLeaderboard(leaderboardName, discardThresholds); + CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, discardThresholds); assertNull(master.getLeaderboardByName(leaderboardName)); master.apply(createTestLeaderboard); final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java index 6cae8981dc6..0d6ffc917c9 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java @@ -37,7 +37,7 @@ import com.sap.sailing.server.OperationExecutionListener; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; -import com.sap.sailing.server.operationaltransformation.CreateLeaderboard; +import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { @@ -113,7 +113,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { @Test public void testReassignmentToLeaderboardReplication() throws Exception { final String leaderboardName = "Test Leaderboard"; - Leaderboard masterLeaderboard = master.apply(new CreateLeaderboard(leaderboardName, new int[0])); + Leaderboard masterLeaderboard = master.apply(new CreateFlexibleLeaderboard(leaderboardName, new int[0])); final String columnName = "R1"; RaceColumn masterColumn = master.apply(new AddColumnToLeaderboard(columnName, leaderboardName, /* medalRace */ false)); final Fleet defaultFleet = masterLeaderboard.getFleet(null); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/LeaderboardDiscardingRulesTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/LeaderboardDiscardingRulesTest.java index 4fc767f9e58..3b194732f1a 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/LeaderboardDiscardingRulesTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/LeaderboardDiscardingRulesTest.java @@ -25,7 +25,7 @@ public class LeaderboardDiscardingRulesTest { @Test public void testDiscardingRoules() { racingEventService.removeLeaderboard(LEADERBOARDNAME); - racingEventService.addLeaderboard(LEADERBOARDNAME, new int[] { 1, 4 }); + racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 1, 4 }); Leaderboard leaderboard = racingEventService.getLeaderboardByName(LEADERBOARDNAME); assertNotNull(leaderboard); int[] discardingRoulesNew = new int[] { 1, 5 }; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/OperationalTransformationTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/OperationalTransformationTest.java index 9c3987c14fc..89cf67846e4 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/OperationalTransformationTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/OperationalTransformationTest.java @@ -20,7 +20,7 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; -import com.sap.sailing.server.operationaltransformation.CreateLeaderboard; +import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.OperationalTransformer; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; @@ -49,7 +49,7 @@ public class OperationalTransformationTest { @Test public void testAddLeaderboard() { - RacingEventServiceOperation addLeaderboardOp = new CreateLeaderboard(LEADERBOARDNAME, new int[] { 5 }); + RacingEventServiceOperation addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 5 }); server.apply(addLeaderboardOp); server.waitForNotRunning(); replica.waitForNotRunning(); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index 2d50dc9f0fb..ff5574f9e46 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -231,7 +231,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch * * @return the leaderboard created */ - Leaderboard addLeaderboard(String name, int[] discardThresholds); + Leaderboard addFlexibleLeaderboard(String name, int[] discardThresholds); void removeLeaderboard(String leaderboardName); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java index 78650325156..1dd3e9a22b9 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java @@ -5,7 +5,7 @@ import java.io.Serializable; import com.sap.sailing.operationaltransformation.Operation; import com.sap.sailing.operationaltransformation.Transformer; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; -import com.sap.sailing.server.operationaltransformation.CreateLeaderboard; +import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnDown; import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; @@ -56,9 +56,9 @@ public interface RacingEventServiceOperation extends Operation transformRenameLeaderboardColumnServerOp(RenameLeaderboardColumn renameLeaderboardColumnServerOp); - RacingEventServiceOperation transformAddLeaderboardClientOp(CreateLeaderboard addLeaderboard); + RacingEventServiceOperation transformAddLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard); - RacingEventServiceOperation transformAddLeaderboardServerOp(CreateLeaderboard addLeaderboard); + RacingEventServiceOperation transformAddLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard); RacingEventServiceOperation transformRemoveLeaderboardClientOp(RemoveLeaderboard removeLeaderboard); 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 046143b1ca0..52d3e279907 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 @@ -175,7 +175,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen courseListeners = new HashMap(); // Add one default leaderboard that aggregates all races currently tracked by this service. // This is more for debugging purposes than for anything else. - addLeaderboard(DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, new int[] { 5, 8 }); + addFlexibleLeaderboard(DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, new int[] { 5, 8 }); loadStoredLeaderboardsAndGroups(); } @@ -198,7 +198,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen } @Override - public Leaderboard addLeaderboard(String name, int[] discardThresholds) { + public Leaderboard addFlexibleLeaderboard(String name, int[] discardThresholds) { Leaderboard result = new FlexibleLeaderboardImpl(name, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl( discardThresholds)); synchronized (leaderboardsByName) { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRacingEventServiceOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRacingEventServiceOperation.java index 0748145c8e1..80d82543fc0 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRacingEventServiceOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRacingEventServiceOperation.java @@ -48,12 +48,12 @@ public abstract class AbstractRacingEventServiceOperation implements } @Override - public RacingEventServiceOperation transformAddLeaderboardClientOp(CreateLeaderboard addLeaderboard) { + public RacingEventServiceOperation transformAddLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard) { return addLeaderboard; } @Override - public RacingEventServiceOperation transformAddLeaderboardServerOp(CreateLeaderboard addLeaderboard) { + public RacingEventServiceOperation transformAddLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard) { return addLeaderboard; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java similarity index 75% rename from java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboard.java rename to java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java index ed5a4374ade..c20d7054e02 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java @@ -4,18 +4,18 @@ import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; -public class CreateLeaderboard extends AbstractLeaderboardOperation { +public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation { private static final long serialVersionUID = 891352705068098580L; private final int[] discardThresholds; - public CreateLeaderboard(String leaderboardName, int[] discardThresholds) { + public CreateFlexibleLeaderboard(String leaderboardName, int[] discardThresholds) { super(leaderboardName); this.discardThresholds = discardThresholds; } @Override public Leaderboard internalApplyTo(RacingEventService toState) { - return toState.addLeaderboard(getLeaderboardName(), discardThresholds); + return toState.addFlexibleLeaderboard(getLeaderboardName(), discardThresholds); } @Override