Merge remote-tracking branch 'origin/bug1163'

This commit is contained in:
fmittag committed 2015-07-25 17:36:01 +02:00
commit fff96ae306
12 files changed
+39 -53

No files matched your search

@@ -1,8 +1,6 @@
package com.sap.sailing.domain.common;
public interface LeaderboardNameConstants {
static final String DEFAULT_LEADERBOARD_NAME = "Default Leaderboard";
static final String OVERALL = "Overall";
static final String DEFAULT_FLEET_NAME = "Default";
@@ -44,7 +44,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String competitor();
String competitors();
String competitorsSelected(int selectedCompetitorsCount, int competitorsCount);
String defaultLeaderboard();
String noSuchLeaderboard();
String leaderboardConfiguration();
String newDotDotDot();
@@ -32,7 +32,6 @@ carry=Accumulated
competitor=Competitor
competitors=Competitors
competitorsSelected={0}/{1} competitors selected.
defaultLeaderboard=Default Leaderboard
noSuchLeaderboard=No such leaderboard
leaderboardConfiguration=Leaderboard Configuration
newDotDotDot=New...
@@ -32,7 +32,6 @@ carry=übertr.
competitor=Team
competitors=Teams
competitorsSelected={0}/{1} Teams ausgewählt.
defaultLeaderboard=Alle Ergebnisse
noSuchLeaderboard=Rangliste nicht gefunden
leaderboardConfiguration=Ranglisten-Konfiguration
newDotDotDot=Neu...
@@ -32,7 +32,6 @@ carry=Суммарная
competitor=Участник
competitors=Участники
competitorsSelected={0}/{1} Участники.
defaultLeaderboard=Таблица лидеров по умолчанию
noSuchLeaderboard=Такая таблица лидеров отсутствует
leaderboardConfiguration=Форма таблицы лидеров
newDotDotDot=Новый...
@@ -1051,7 +1051,6 @@ polarSheetMinimumConfidenceMeasure=Minimum confidence measure
operator=operator
tractracUsername=TracTrac username
webWindSourceTypeName=Manual
defaultLeaderboard=Default Leaderboard
raceIsLive=Race {0} is live
sapSailingAnalytics=航行分析
trackWind=Track Wind
@@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.server.gateway.AbstractJsonHttpServlet;
@@ -21,8 +20,7 @@ public class LeaderboardsJsonGetServlet extends AbstractJsonHttpServlet {
JSONArray jsonLeaderboards = new JSONArray();
Map<String, Leaderboard> leaderboards = getService().getLeaderboards();
for (String leaderboardName : leaderboards.keySet()) {
if(!leaderboardName.equals(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME))
jsonLeaderboards.add(leaderboardName);
jsonLeaderboards.add(leaderboardName);
}
setJsonResponseHeader(resp);
jsonLeaderboards.writeJSONString(resp.getWriter());
@@ -51,7 +51,6 @@ import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.MaxPointsReason;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.Position;
@@ -106,9 +105,7 @@ public class LeaderboardsResource extends AbstractSailingServerResource {
JSONArray jsonLeaderboards = new JSONArray();
Map<String, Leaderboard> leaderboards = getService().getLeaderboards();
for (String leaderboardName : leaderboards.keySet()) {
if (!leaderboardName.equals(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME)) {
jsonLeaderboards.add(leaderboardName);
}
jsonLeaderboards.add(leaderboardName);
}
String json = jsonLeaderboards.toJSONString();
return Response.ok(json, MediaType.APPLICATION_JSON).build();
@@ -22,11 +22,12 @@ import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.impl.CourseImpl;
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
import com.sap.sailing.domain.base.impl.RegattaImpl;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.RegattaName;
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.operationaltransformation.AddDefaultRegatta;
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard;
@@ -34,6 +35,8 @@ import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
import com.sap.sse.common.Util;
public class ServerReplicationTest extends AbstractServerReplicationTest {
private static final String LEADERBOARDNAME = "TESTLEADERBOARD";
@Test
public void testBasicInitialLoad() throws Exception {
assertNotSame(master, replica);
@@ -63,15 +66,18 @@ public class ServerReplicationTest extends AbstractServerReplicationTest {
@Test
public void testLeaderboardRemovalReplication() throws InterruptedException {
final String leaderboardName = LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME;
assertNotNull(replica.getLeaderboardByName(leaderboardName));
assertNotNull(master.getLeaderboardByName(leaderboardName));
RemoveLeaderboard removeDefaultLeaderboard = new RemoveLeaderboard(leaderboardName);
RacingEventServiceOperation<FlexibleLeaderboard> addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME,null, new int[] { 5 },
new LowPoint(), null);
master.apply(addLeaderboardOp);
Thread.sleep(1000); // wait 1s for JMS to deliver the message and the message to be applied
assertNotNull(replica.getLeaderboardByName(LEADERBOARDNAME));
assertNotNull(master.getLeaderboardByName(LEADERBOARDNAME));
RemoveLeaderboard removeDefaultLeaderboard = new RemoveLeaderboard(LEADERBOARDNAME);
master.apply(removeDefaultLeaderboard);
final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName);
final Leaderboard masterLeaderboard = master.getLeaderboardByName(LEADERBOARDNAME);
assertNull(masterLeaderboard);
Thread.sleep(1000); // wait 1s for JMS to deliver the message and the message to be applied
final Leaderboard replicaLeaderboard = replica.getLeaderboardByName(leaderboardName);
final Leaderboard replicaLeaderboard = replica.getLeaderboardByName(LEADERBOARDNAME);
assertNull(replicaLeaderboard);
}
@@ -20,7 +20,6 @@ import org.junit.Test;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.WindSourceType;
@@ -114,6 +113,13 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
@Test
public void testStartTrackingRaceReplication() throws Exception {
final String leaderboardName = "Test Leaderboard";
Leaderboard masterLeaderboard = master.apply(new CreateFlexibleLeaderboard(leaderboardName, null, new int[0], new LowPoint(), null));
final String columnName = "R1";
master.apply(new AddColumnToLeaderboard(columnName, leaderboardName, /* medalRace */ false));
final Fleet defaultFleet = masterLeaderboard.getFleet(null);
master.apply(new ConnectTrackedRaceToLeaderboardColumn(leaderboardName, columnName, defaultFleet.getName(),
new RegattaNameAndRaceName("Academy Tracking 2011 (STG)", "weym470may122011")));
startTracking();
Thread.sleep(1000);
TrackedRace replicaTrackedRace = replica.getTrackedRace(raceIdentifier);
@@ -121,10 +127,10 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
assertNotSame(masterTrackedRace, replicaTrackedRace);
assertNotSame(masterTrackedRace.getRace(), replicaTrackedRace.getRace());
assertEquals(Util.size(masterTrackedRace.getRace().getCompetitors()), Util.size(replicaTrackedRace.getRace().getCompetitors()));
Leaderboard replicaDefaultLeaderboard = replica.getLeaderboardByName(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
RaceColumn column = replicaDefaultLeaderboard.getRaceColumnByName(replicaTrackedRace.getRace().getName());
Leaderboard replicaLeaderboard = replica.getLeaderboardByName(leaderboardName);
RaceColumn column = replicaLeaderboard.getRaceColumnByName(columnName);
assertNotNull(column);
assertSame(replicaTrackedRace, column.getTrackedRace(replicaDefaultLeaderboard.getFleet(null)));
assertSame(replicaTrackedRace, column.getTrackedRace(replicaLeaderboard.getFleet(null)));
}
@Test
@@ -10,7 +10,6 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
@@ -57,18 +56,21 @@ public class OperationalTransformationTest {
server.waitForNotRunning();
replica.waitForNotRunning();
Map<String, Leaderboard> replicaLeaderboards = racingEventServiceReplica.getLeaderboards();
assertEquals(2, replicaLeaderboards.size()); // expected to include the default leaderboard
assertEquals(new HashSet<String>(Arrays.asList(new String[] { LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, LEADERBOARDNAME })),
assertEquals(1, replicaLeaderboards.size());
assertEquals(new HashSet<String>(Arrays.asList(new String[] { LEADERBOARDNAME })),
replicaLeaderboards.keySet());
assertEquals(racingEventServiceServer.getLeaderboards().keySet(), replicaLeaderboards.keySet());
}
@Test
public void testAddColumnToLeaderboardOnServerAndRemoveLeaderboardOnClient() throws InterruptedException {
RacingEventServiceOperation<FlexibleLeaderboard> addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME,null, new int[] { 5 },
new LowPoint(), null);
server.apply(addLeaderboardOp);
RacingEventServiceOperation<RaceColumn> addLeaderboardColumn = new AddColumnToLeaderboard(
"newColumn", LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, /* medalRace */ true);
"newColumn", LEADERBOARDNAME, /* medalRace */ true);
server.apply(addLeaderboardColumn);
RacingEventServiceOperation<Void> removeDefaultLeaderboard = new RemoveLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
RacingEventServiceOperation<Void> removeDefaultLeaderboard = new RemoveLeaderboard(LEADERBOARDNAME);
replica.apply(removeDefaultLeaderboard);
replica.waitForNotRunning();
server.waitForNotRunning();
@@ -78,17 +80,20 @@ public class OperationalTransformationTest {
@Test
public void testAddOneColumnOnEachSideThenMoveOneUpOnServerAndRemoveLeaderboardOnClient() throws InterruptedException {
RacingEventServiceOperation<FlexibleLeaderboard> addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME,null, new int[] { 5 },
new LowPoint(), null);
server.apply(addLeaderboardOp);
RacingEventServiceOperation<RaceColumn> addLeaderboardColumnOnServer = new AddColumnToLeaderboard(
"newColumn1", LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, /* medalRace */ true);
"newColumn1", LEADERBOARDNAME, /* medalRace */ true);
server.apply(addLeaderboardColumnOnServer);
RacingEventServiceOperation<RaceColumn> addLeaderboardColumnOnReplica = new AddColumnToLeaderboard(
"newColumn2", LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, /* medalRace */ true);
"newColumn2", LEADERBOARDNAME, /* medalRace */ true);
replica.apply(addLeaderboardColumnOnReplica);
replica.waitForNotRunning();
server.waitForNotRunning();
RacingEventServiceOperation<Void> moveUpNewColumn2 = new MoveLeaderboardColumnUp(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, "newColumn2");
RacingEventServiceOperation<Void> moveUpNewColumn2 = new MoveLeaderboardColumnUp(LEADERBOARDNAME, "newColumn2");
server.apply(moveUpNewColumn2);
RacingEventServiceOperation<Void> removeDefaultLeaderboard = new RemoveLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
RacingEventServiceOperation<Void> removeDefaultLeaderboard = new RemoveLeaderboard(LEADERBOARDNAME);
replica.apply(removeDefaultLeaderboard);
replica.waitForNotRunning();
server.waitForNotRunning();
@@ -91,7 +91,6 @@ import com.sap.sailing.domain.base.impl.RegattaImpl;
import com.sap.sailing.domain.base.impl.RemoteSailingServerReferenceImpl;
import com.sap.sailing.domain.common.DataImportProgress;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.RegattaIdentifier;
@@ -594,11 +593,6 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
this.configurationMap = new DeviceConfigurationMapImpl();
this.serviceFinderFactory = serviceFinderFactory;
// Add one default leaderboard that aggregates all races currently tracked by this service.
// This is more for debugging purposes than for anything else.
addFlexibleLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, null, new int[] { 5, 8 },
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), null);
final Iterable<Pair<Event, Boolean>> loadedEventsWithRequireStoreFlag = loadStoredEvents();
loadStoredRegattas();
loadRaceIDToRegattaAssociations();
@@ -659,10 +653,6 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
}
// TODO clear user store? See bug 2430.
this.competitorStore.clear();
// Add one default leaderboard that aggregates all races currently tracked by this service.
// This is more for debugging purposes than for anything else.
addFlexibleLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, null, new int[] { 5, 8 },
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), null);
}
@Override
@@ -1597,12 +1587,6 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
trackedRace.getMillisecondsOverWhichToAverageSpeed());
replicate(op);
linkRaceToConfiguredLeaderboardColumns(trackedRace);
final FlexibleLeaderboard defaultLeaderboard = (FlexibleLeaderboard) leaderboardsByName
.get(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
if (defaultLeaderboard != null) {
String columnName = trackedRace.getRace().getName();
defaultLeaderboard.addRace(trackedRace, columnName, /* medalRace */false);
}
TrackedRaceReplicator trackedRaceReplicator = new TrackedRaceReplicator(trackedRace);
trackedRaceReplicators.put(trackedRace, trackedRaceReplicator);
trackedRace.addListener(trackedRaceReplicator, /* fire wind already loaded */true, true);
@@ -1826,9 +1810,6 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
}
for (RaceDefinition race : regatta.getAllRaces()) {
stopTrackingWind(regatta, race);
// remove from default leaderboard
FlexibleLeaderboard defaultLeaderboard = (FlexibleLeaderboard) getLeaderboardByName(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
defaultLeaderboard.removeRaceColumn(race.getName());
}
}
}