From b19e43de2d6c7eca6c4b599eb8eb1958ed6b6a73 Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 5 Nov 2014 17:23:34 +0100 Subject: [PATCH 001/113] fixed navigation for race viewer links --- .../place/event/EventPlaceNavigator.java | 2 +- .../event/TabletAndDesktopEventView.java | 6 +- .../regattaraces/EventRegattaRacesRace.java | 61 +++++-------------- .../regattaraces/EventRegattaRacesRace.ui.xml | 8 +-- 4 files changed, 21 insertions(+), 56 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlaceNavigator.java index 517fe93bbdc..f3f33b0ec56 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlaceNavigator.java @@ -11,7 +11,7 @@ public interface EventPlaceNavigator { void goToSchedule(); void goToMedia(); void goToRegattaRaces(LeaderboardGroupDTO leaderboardGroup, StrippedLeaderboardDTO leaderboard, RaceGroupDTO raceGroup); - void openRaceViewer(StrippedLeaderboardDTO leaderboard, RaceDTO race); + String getRaceViewerURL(StrippedLeaderboardDTO leaderboard, RaceDTO race); void openOverallLeaderboardViewer(LeaderboardGroupDTO leaderboardGroup); void openLeaderboardViewer(LeaderboardGroupDTO leaderboardGroup, StrippedLeaderboardDTO leaderboard); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventView.java index 2a6ebb82a9a..8f063bd1395 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventView.java @@ -141,11 +141,9 @@ public class TabletAndDesktopEventView extends Composite implements EventView, E currentInternalPlace = new EventPlace(event.id.toString(), EventNavigationTabs.Media, null); } - @Override - public void openRaceViewer(StrippedLeaderboardDTO leaderboard, RaceDTO race) { + public String getRaceViewerURL(StrippedLeaderboardDTO leaderboard, RaceDTO race) { RegattaAndRaceIdentifier raceIdentifier = race.getRaceIdentifier(); - String link = EntryPointLinkFactory.createRaceBoardLink(createRaceBoardLinkParameters(leaderboard.name, raceIdentifier)); - Window.open(link, "_blank", ""); + return EntryPointLinkFactory.createRaceBoardLink(createRaceBoardLinkParameters(leaderboard.name, raceIdentifier)); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java index 2de72063241..d29a4f4747c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.home.client.place.event.regattaraces; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.SpanElement; @@ -10,10 +9,9 @@ import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.i18n.shared.DateTimeFormat; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.EventListener; -import com.google.gwt.user.client.ui.UIObject; +import com.google.gwt.user.client.ui.Anchor; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -22,12 +20,12 @@ import com.sap.sailing.gwt.home.client.place.event.EventPlaceNavigator; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.player.Timer; -public class EventRegattaRacesRace extends UIObject { +public class EventRegattaRacesRace extends Composite { private static EventRegattaRacesRaceUiBinder uiBinder = GWT.create(EventRegattaRacesRaceUiBinder.class); private enum SimpleRaceStates { NOT_TRACKED, TRACKED, TRACKED_AND_LIVE, TRACKED_BUT_NOT_SCHEDULED }; - interface EventRegattaRacesRaceUiBinder extends UiBinder { + interface EventRegattaRacesRaceUiBinder extends UiBinder { } @UiField DivElement fleetColor; @@ -41,8 +39,8 @@ public class EventRegattaRacesRace extends UIObject { @UiField DivElement raceNotScheduledDiv; @UiField DivElement watchRaceDiv; @UiField DivElement analyzeRaceDiv; - @UiField AnchorElement watchRaceLink; - @UiField AnchorElement analyzeRaceLink; + @UiField Anchor watchRaceLink; + @UiField Anchor analyzeRaceLink; @UiField DivElement raceWinnerDiv; @UiField SpanElement raceWinner; @@ -64,25 +62,21 @@ public class EventRegattaRacesRace extends UIObject { private final DateTimeFormat raceTimeFormat = DateTimeFormat.getFormat("EEE, h:mm a"); - private final StrippedLeaderboardDTO leaderboard; private final FleetDTO fleet; private final RaceColumnDTO raceColumn; private final RaceDTO race; - private final EventPlaceNavigator pageNavigator; private final Timer timerForClientServerOffset; private Element[] allConditionalElements; public EventRegattaRacesRace(StrippedLeaderboardDTO leaderboard, FleetDTO fleet, RaceColumnDTO raceColumn, Timer timerForClientServerOffset, EventPlaceNavigator pageNavigator) { - this.leaderboard = leaderboard; this.fleet = fleet; this.raceColumn = raceColumn; - this.pageNavigator = pageNavigator; this.timerForClientServerOffset = timerForClientServerOffset; race = raceColumn.getRace(fleet); EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); + initWidget(uiBinder.createAndBindUi(this)); allConditionalElements = new Element[] {raceWinnerDiv, raceLeaderDiv, watchRaceDiv, analyzeRaceDiv, raceNotTrackedDiv, raceNotScheduledDiv, raceFeaturesDiv, legProgressDiv, raceFlagDiv, windStatusDiv }; @@ -94,35 +88,14 @@ public class EventRegattaRacesRace extends UIObject { raceName.setInnerText(raceColumn.getName()); raceName2.setInnerText(raceColumn.getName()); - registerEvents(); + if(race != null && race.trackedRace != null) { + String raceViewerURL = pageNavigator.getRaceViewerURL(leaderboard, race); + analyzeRaceLink.setHref(raceViewerURL); + watchRaceLink.setHref(raceViewerURL); + } + updateUI(); } - - private void registerEvents() { - Event.sinkEvents(analyzeRaceLink, Event.ONCLICK); - Event.setEventListener(analyzeRaceLink, new EventListener() { - @Override - public void onBrowserEvent(Event event) { - switch (DOM.eventGetType(event)) { - case Event.ONCLICK: - openRaceViewer(); - break; - } - } - }); - - Event.sinkEvents(watchRaceLink, Event.ONCLICK); - Event.setEventListener(watchRaceLink, new EventListener() { - @Override - public void onBrowserEvent(Event event) { - switch (DOM.eventGetType(event)) { - case Event.ONCLICK: - openRaceViewer(); - break; - } - } - }); - } private SimpleRaceStates getSimpleRaceState() { SimpleRaceStates simpleRaceState = SimpleRaceStates.NOT_TRACKED; @@ -227,10 +200,4 @@ public class EventRegattaRacesRace extends UIObject { el.getStyle().setVisibility(Visibility.VISIBLE); el.getStyle().setDisplay(Display.INLINE_BLOCK); } - - private void openRaceViewer() { - if(race != null && race.trackedRace != null) { - pageNavigator.openRaceViewer(leaderboard, race); - } - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml index cc5d5c7e260..30d6c699608 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml @@ -5,7 +5,7 @@ -
+
@@ -45,11 +45,11 @@
- +
- +
-
+ From 030129629a2a5487cfa9384a6cd6021a76765463 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Nov 2014 09:21:22 +0100 Subject: [PATCH 002/113] renamed com.sap.sailing.operationaltransformation to com.sap.sse.operationaltransformation --- .../META-INF/MANIFEST.MF | 5 ++--- .../META-INF/MANIFEST.MF | 2 +- java/com.sap.sailing.server/META-INF/MANIFEST.MF | 2 +- .../.classpath | 0 .../.gitignore | 0 .../.project | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 0 .../.settings/org.eclipse.pde.core.prefs | 0 .../META-INF/MANIFEST.MF | 4 ++-- .../build.properties | 0 .../pom.xml | 2 +- .../test/OperationalTransformationTest.java | 0 .../operationaltransformation/test/util/Base64.java | 0 .../.classpath | 0 .../.gitignore | 0 .../.project | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../OperationalTransformationTest.launch | 0 .../build.properties | 0 .../docs/JupiterCollaborationSystem_Nichols.pdf | Bin .../pom.xml | 2 +- .../ClientServerOperationPair.java | 0 .../operationaltransformation/Operation.java | 0 .../OperationWithTransformationSupport.java | 0 .../OperationalTransformer.java | 0 .../sap/sailing/operationaltransformation/Peer.java | 0 .../sailing/operationaltransformation/PeerImpl.java | 0 .../operationaltransformation/Transformer.java | 0 .../UnmergedOperationsQueue.java | 0 .../sailing/operationaltransformation/package.html | 0 java/pom.xml | 6 +++--- 31 files changed, 14 insertions(+), 15 deletions(-) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/.classpath (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/.gitignore (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/.project (87%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/.settings/org.eclipse.jdt.core.prefs (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/.settings/org.eclipse.pde.core.prefs (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/META-INF/MANIFEST.MF (63%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/build.properties (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/pom.xml (84%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java (100%) rename java/{com.sap.sailing.operationaltransformation.test => com.sap.sse.operationaltransformation.test}/src/com/sap/sailing/operationaltransformation/test/util/Base64.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/.classpath (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/.gitignore (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/.project (88%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/META-INF/MANIFEST.MF (81%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/OperationalTransformationTest.launch (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/build.properties (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/docs/JupiterCollaborationSystem_Nichols.pdf (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/pom.xml (85%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/Operation.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/Peer.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/PeerImpl.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/Transformer.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java (100%) rename java/{com.sap.sailing.operationaltransformation => com.sap.sse.operationaltransformation}/src/com/sap/sailing/operationaltransformation/package.html (100%) diff --git a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF index 42ca2119c67..f9a79e3a750 100644 --- a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF @@ -13,9 +13,8 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.server.gateway, com.sap.sailing.domain.common, com.sap.sailing.domain, - com.sap.sailing.operationaltransformation, - com.sap.sailing.domain.persistence, - com.sap.sailing.domain.shared.android;bundle-version="1.0.0", + com.sap.sse.operationaltransformation, + com.sap.sailing.domain.shared.android, com.sap.sse.common Bundle-ClassPath: . Web-ContextPath: /replication diff --git a/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF index f6d2e5a7c65..d84e41d4b8e 100644 --- a/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF @@ -11,7 +11,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.swisstimingadapter, com.sap.sailing.domain.common, com.sap.sailing.expeditionconnector, - com.sap.sailing.operationaltransformation, + com.sap.sse.operationaltransformation, com.sap.sse.mongodb, com.tractrac.clientmodule;bundle-version="2.0.0", com.mongodb.driver;bundle-version="2.6.2", diff --git a/java/com.sap.sailing.server/META-INF/MANIFEST.MF b/java/com.sap.sailing.server/META-INF/MANIFEST.MF index 1acdf927547..ae20e242cc1 100644 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -20,7 +20,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.persistence, com.sap.sailing.domain.common, com.sap.sailing.udpconnector, - com.sap.sailing.operationaltransformation, + com.sap.sse.operationaltransformation, com.sap.sailing.domain.shared.android, com.sap.sailing.server.gateway.serialization, com.sap.sse.common diff --git a/java/com.sap.sailing.operationaltransformation.test/.classpath b/java/com.sap.sse.operationaltransformation.test/.classpath similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/.classpath rename to java/com.sap.sse.operationaltransformation.test/.classpath diff --git a/java/com.sap.sailing.operationaltransformation.test/.gitignore b/java/com.sap.sse.operationaltransformation.test/.gitignore similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/.gitignore rename to java/com.sap.sse.operationaltransformation.test/.gitignore diff --git a/java/com.sap.sailing.operationaltransformation.test/.project b/java/com.sap.sse.operationaltransformation.test/.project similarity index 87% rename from java/com.sap.sailing.operationaltransformation.test/.project rename to java/com.sap.sse.operationaltransformation.test/.project index 6862ab0d5e4..a84668a3775 100755 --- a/java/com.sap.sailing.operationaltransformation.test/.project +++ b/java/com.sap.sse.operationaltransformation.test/.project @@ -1,6 +1,6 @@ - com.sap.sailing.operationaltransformation.test + com.sap.sse.operationaltransformation.test diff --git a/java/com.sap.sailing.operationaltransformation.test/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse.operationaltransformation.test/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/.settings/org.eclipse.jdt.core.prefs rename to java/com.sap.sse.operationaltransformation.test/.settings/org.eclipse.jdt.core.prefs diff --git a/java/com.sap.sailing.operationaltransformation.test/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sse.operationaltransformation.test/.settings/org.eclipse.pde.core.prefs similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/.settings/org.eclipse.pde.core.prefs rename to java/com.sap.sse.operationaltransformation.test/.settings/org.eclipse.pde.core.prefs diff --git a/java/com.sap.sailing.operationaltransformation.test/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF similarity index 63% rename from java/com.sap.sailing.operationaltransformation.test/META-INF/MANIFEST.MF rename to java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF index 187c48c4720..911559cc367 100644 --- a/java/com.sap.sailing.operationaltransformation.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF @@ -1,9 +1,9 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Test -Bundle-SymbolicName: com.sap.sailing.operationaltransformation.test +Bundle-SymbolicName: com.sap.sse.operationaltransformation.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.junit4;bundle-version="4.8.2" -Fragment-Host: com.sap.sailing.operationaltransformation +Fragment-Host: com.sap.sse.operationaltransformation diff --git a/java/com.sap.sailing.operationaltransformation.test/build.properties b/java/com.sap.sse.operationaltransformation.test/build.properties similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/build.properties rename to java/com.sap.sse.operationaltransformation.test/build.properties diff --git a/java/com.sap.sailing.operationaltransformation.test/pom.xml b/java/com.sap.sse.operationaltransformation.test/pom.xml similarity index 84% rename from java/com.sap.sailing.operationaltransformation.test/pom.xml rename to java/com.sap.sse.operationaltransformation.test/pom.xml index 196b2060aca..b1e63c6b624 100644 --- a/java/com.sap.sailing.operationaltransformation.test/pom.xml +++ b/java/com.sap.sse.operationaltransformation.test/pom.xml @@ -7,6 +7,6 @@ com.sap.sailing 1.0.0-SNAPSHOT - com.sap.sailing.operationaltransformation.test + com.sap.sse.operationaltransformation.test eclipse-test-plugin diff --git a/java/com.sap.sailing.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java rename to java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java diff --git a/java/com.sap.sailing.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java rename to java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java diff --git a/java/com.sap.sailing.operationaltransformation/.classpath b/java/com.sap.sse.operationaltransformation/.classpath similarity index 100% rename from java/com.sap.sailing.operationaltransformation/.classpath rename to java/com.sap.sse.operationaltransformation/.classpath diff --git a/java/com.sap.sailing.operationaltransformation/.gitignore b/java/com.sap.sse.operationaltransformation/.gitignore similarity index 100% rename from java/com.sap.sailing.operationaltransformation/.gitignore rename to java/com.sap.sse.operationaltransformation/.gitignore diff --git a/java/com.sap.sailing.operationaltransformation/.project b/java/com.sap.sse.operationaltransformation/.project similarity index 88% rename from java/com.sap.sailing.operationaltransformation/.project rename to java/com.sap.sse.operationaltransformation/.project index e44b105a85d..4cc2424411f 100755 --- a/java/com.sap.sailing.operationaltransformation/.project +++ b/java/com.sap.sse.operationaltransformation/.project @@ -1,6 +1,6 @@ - com.sap.sailing.operationaltransformation + com.sap.sse.operationaltransformation diff --git a/java/com.sap.sailing.operationaltransformation/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF similarity index 81% rename from java/com.sap.sailing.operationaltransformation/META-INF/MANIFEST.MF rename to java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF index 906d3ce31f2..f3593bd9dc3 100644 --- a/java/com.sap.sailing.operationaltransformation/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Operational transformation -Bundle-SymbolicName: com.sap.sailing.operationaltransformation +Bundle-SymbolicName: com.sap.sse.operationaltransformation Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/java/com.sap.sailing.operationaltransformation/OperationalTransformationTest.launch b/java/com.sap.sse.operationaltransformation/OperationalTransformationTest.launch similarity index 100% rename from java/com.sap.sailing.operationaltransformation/OperationalTransformationTest.launch rename to java/com.sap.sse.operationaltransformation/OperationalTransformationTest.launch diff --git a/java/com.sap.sailing.operationaltransformation/build.properties b/java/com.sap.sse.operationaltransformation/build.properties similarity index 100% rename from java/com.sap.sailing.operationaltransformation/build.properties rename to java/com.sap.sse.operationaltransformation/build.properties diff --git a/java/com.sap.sailing.operationaltransformation/docs/JupiterCollaborationSystem_Nichols.pdf b/java/com.sap.sse.operationaltransformation/docs/JupiterCollaborationSystem_Nichols.pdf similarity index 100% rename from java/com.sap.sailing.operationaltransformation/docs/JupiterCollaborationSystem_Nichols.pdf rename to java/com.sap.sse.operationaltransformation/docs/JupiterCollaborationSystem_Nichols.pdf diff --git a/java/com.sap.sailing.operationaltransformation/pom.xml b/java/com.sap.sse.operationaltransformation/pom.xml similarity index 85% rename from java/com.sap.sailing.operationaltransformation/pom.xml rename to java/com.sap.sse.operationaltransformation/pom.xml index 5c0f916afb7..eca4c1390b6 100644 --- a/java/com.sap.sailing.operationaltransformation/pom.xml +++ b/java/com.sap.sse.operationaltransformation/pom.xml @@ -7,6 +7,6 @@ com.sap.sailing 1.0.0-SNAPSHOT - com.sap.sailing.operationaltransformation + com.sap.sse.operationaltransformation eclipse-plugin diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html b/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html similarity index 100% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html rename to java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html diff --git a/java/pom.xml b/java/pom.xml index 72de8ff10d5..a97bd1f9132 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -25,10 +25,12 @@ com.sap.sse.security.test com.sap.sse.security.ui com.sap.sse.security.userstore.mongodb + com.sap.sse.operationaltransformation + com.sap.sse.operationaltransformation.test + com.sap.sse.common.test com.sap.sailing.domain.common com.sap.sailing.domain.shared.android com.sap.sailing.domain - com.sap.sailing.operationaltransformation com.sap.sailing.geocoding com.sap.sailing.datamining com.sap.sailing.datamining.shared @@ -79,10 +81,8 @@ com.sap.sailing.server.trackfiles com.sap.sailing.feature.runtime com.sap.sailing.gwt.ui - com.sap.sse.common.test com.sap.sailing.domain.test com.sap.sailing.domain.shared.android.test - com.sap.sailing.operationaltransformation.test com.sap.sailing.geocoding.test com.sap.sailing.domain.swisstimingadapter.test com.sap.sailing.domain.swisstimingreplayadapter.test From 94383f92d642f9aad4834d0056a03e3683ebbbc7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Nov 2014 17:22:39 +0100 Subject: [PATCH 003/113] started to refactor replication by generalizing the object input stream that resolves objects through a cache; uncompileable! --- .../sap/sailing/domain/base/BoatClass.java | 2 +- .../sap/sailing/domain/base/Competitor.java | 2 +- .../sap/sailing/domain/base/CourseArea.java | 2 +- ...mainFactory.java => IsManagedByCache.java} | 4 +- .../src/com/sap/sailing/domain/base/Mark.java | 2 +- .../sap/sailing/domain/base/Nationality.java | 2 +- .../com/sap/sailing/domain/base/Waypoint.java | 2 +- .../DeviceConfigurationMatcher.java | 4 +- .../impl/DeviceConfigurationMatcherMulti.java | 4 +- .../DeviceConfigurationMatcherSingle.java | 4 +- .../domain/base/impl/CourseAreaImpl.java | 4 +- .../domain/base/impl/NationalityImpl.java | 4 +- .../tracking/RegisterCompetitorEvent.java | 4 +- ...utStreamResolvingAgainstDomainFactory.java | 4 +- .../leaderboard/impl/DefaultFleetImpl.java | 6 +- .../DelayedLeaderboardCorrectionsImpl.java | 6 +- .../DummyMarkPassingWithTimePointOnly.java | 4 +- .../test/AbstractServerReplicationTest.java | 2 +- .../META-INF/MANIFEST.MF | 5 +- .../server/replication/Replicable.java | 53 ++++++++++++++++ ...bjectInputStreamResolvingAgainstCache.java | 60 +++++++++++++++++++ .../impl/ReplicationServiceImpl.java | 2 +- .../server/replication/impl/Replicator.java | 2 +- .../META-INF/MANIFEST.MF | 4 +- 24 files changed, 150 insertions(+), 38 deletions(-) rename java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/{IsManagedBySharedDomainFactory.java => IsManagedByCache.java} (81%) create mode 100755 java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java create mode 100755 java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java index c1bfbe481c0..4cf2c58c30b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java @@ -5,7 +5,7 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.TimePoint; import com.sap.sse.common.Named; -public interface BoatClass extends Named, IsManagedBySharedDomainFactory { +public interface BoatClass extends Named, IsManagedByCache { /** * The distance returned by this method should be appropriate for use in * {@link TrackedRace#approximate(Competitor, Distance, TimePoint, TimePoint)} so that penalty circles and other diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java index 5d3b4d1d2e7..ce5101f8b8f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java @@ -5,7 +5,7 @@ import com.sap.sailing.domain.common.WithID; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.common.Named; -public interface Competitor extends Named, WithID, IsManagedBySharedDomainFactory { +public interface Competitor extends Named, WithID, IsManagedByCache { @Connector(messageKey="Team", ordinal=9) Team getTeam(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java index cbed3e691cd..a4feb8e54f1 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java @@ -12,6 +12,6 @@ import com.sap.sse.common.Named; * @author Axel Uhl (D043530) * */ -public interface CourseArea extends Named, WithID, IsManagedBySharedDomainFactory { +public interface CourseArea extends Named, WithID, IsManagedByCache { UUID getId(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java similarity index 81% rename from java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java rename to java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java index 2d2833e8dd5..96358c8835e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java @@ -13,6 +13,6 @@ package com.sap.sailing.domain.base; * @author Axel Uhl (D043530) * */ -public interface IsManagedBySharedDomainFactory { - IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory); +public interface IsManagedByCache { + IsManagedByCache resolve(SharedDomainFactory domainFactory); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java index acdc25c24f1..3d15f66ea56 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java @@ -11,7 +11,7 @@ import com.sap.sailing.domain.common.WithID; * @author Axel Uhl (D043530) * */ -public interface Mark extends WithID, ControlPoint, IsManagedBySharedDomainFactory { +public interface Mark extends WithID, ControlPoint, IsManagedByCache { public String getColor(); public String getShape(); public String getPattern(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java index b2c09c8bc4f..700287943e7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java @@ -4,7 +4,7 @@ import com.sap.sailing.domain.common.CountryCode; import com.sap.sse.common.Named; import com.sap.sse.datamining.shared.annotations.Dimension; -public interface Nationality extends Named, WithImage, IsManagedBySharedDomainFactory { +public interface Nationality extends Named, WithImage, IsManagedByCache { @Dimension(messageKey="NationalityAcronym") String getThreeLetterIOCAcronym(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java index cf9f7cbf82f..07a30560c58 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java @@ -13,7 +13,7 @@ import com.sap.sse.common.Named; * @author Axel Uhl (d043530) * */ -public interface Waypoint extends Named, WithID, IsManagedBySharedDomainFactory { +public interface Waypoint extends Named, WithID, IsManagedByCache { ControlPoint getControlPoint(); Iterable getMarks(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java index e5faab2f50b..a28d0d0cfb6 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base.configuration; import java.io.Serializable; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMapImpl; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; @@ -15,7 +15,7 @@ import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherTyp *

The rank (see {@link DeviceConfigurationMatcher#getMatchingRank()}) is used as a priority when multiple matchers * are matching a {@link DeviceConfigurationIdentifier} (see also {@link DeviceConfigurationMapImpl}) (lower wins).

*/ -public interface DeviceConfigurationMatcher extends IsManagedBySharedDomainFactory, Serializable { +public interface DeviceConfigurationMatcher extends IsManagedByCache, Serializable { /** * Returns the kind of matching used by this matcher. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java index 8bde8674115..bcbd8bad639 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; @@ -55,7 +55,7 @@ public class DeviceConfigurationMatcherMulti implements DeviceConfigurationMatch } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), clientIdentifiers); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java index 429a180a1f9..3450f0e80e3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.base.configuration.impl; import java.io.Serializable; import java.util.Arrays; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; @@ -51,7 +51,7 @@ public class DeviceConfigurationMatcherSingle implements DeviceConfigurationMatc } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), Arrays.asList(clientIdentifier)); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java index 2584d86b401..24ad2679b45 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.base.impl; import java.util.UUID; import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sse.common.impl.NamedImpl; @@ -23,7 +23,7 @@ public class CourseAreaImpl extends NamedImpl implements CourseArea { } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateCourseArea(id, getName()); } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java index e57a9eca655..d705cb9c427 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base.impl; import java.io.InputStream; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.CountryCode; @@ -44,7 +44,7 @@ public class NationalityImpl implements Nationality { } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateNationality(getThreeLetterIOCAcronym()); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java index 06470d41647..bf999010552 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.tracking; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.Revokable; @@ -11,7 +11,7 @@ import com.sap.sailing.domain.racelog.Revokable; * * A dummy {@link Competitor} implementation with only an {@link Competitor#getId() id} may be used, * if the competitor is known to already exist on the server, as it is - * {@link IsManagedBySharedDomainFactory#resolve(com.sap.sailing.domain.base.SharedDomainFactory) resolved} + * {@link IsManagedByCache#resolve(com.sap.sailing.domain.base.SharedDomainFactory) resolved} * on arrival. * @author Fredrik Teschke * diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java index a8419ea6e64..1236ab6db6f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java @@ -48,8 +48,8 @@ public abstract class ObjectInputStreamResolvingAgainstDomainFactory extends Obj @Override protected Object resolveObject(Object o) { Object result; - if (o instanceof IsManagedBySharedDomainFactory) { - result = ((IsManagedBySharedDomainFactory) o).resolve(getDomainFactory()); + if (o instanceof IsManagedByCache) { + result = ((IsManagedByCache) o).resolve(getDomainFactory()); } else { result = o; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java index 34635a370c2..5f9e936fc26 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java @@ -1,11 +1,11 @@ package com.sap.sailing.domain.leaderboard.impl; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.common.LeaderboardNameConstants; -public class DefaultFleetImpl extends FleetImpl implements IsManagedBySharedDomainFactory { +public class DefaultFleetImpl extends FleetImpl implements IsManagedByCache { private static final long serialVersionUID = 6233489616955255401L; @@ -14,7 +14,7 @@ public class DefaultFleetImpl extends FleetImpl implements IsManagedBySharedDoma } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return FlexibleLeaderboardImpl.defaultFleet; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java index b505bf62b6c..3698172c3e6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java @@ -12,7 +12,7 @@ import java.util.Set; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorFactory; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.SharedDomainFactory; @@ -41,7 +41,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; * @author Axel Uhl (d043530) * */ -public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorrections, IsManagedBySharedDomainFactory { +public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorrections, IsManagedByCache { private static final long serialVersionUID = 8824782847677232275L; // deprecated structures that key corrections by name; to be removed once all databases have been migrated @@ -457,7 +457,7 @@ public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorr } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { this.competitorFactory = domainFactory; return this; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java index 95e1b281fc7..447a582196f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorChangeListener; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.Team; import com.sap.sailing.domain.base.Waypoint; @@ -56,7 +56,7 @@ public class DummyMarkPassingWithTimePointOnly implements MarkPassing { } @Override - public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return this; } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index fa2528b8e4c..b350881238c 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -263,7 +263,7 @@ public abstract class AbstractServerReplicationTest { masterReplicationService.registerReplica(replicaDescriptor); registerReplicaUuidForMaster(replicaDescriptor.getUuid().toString(), master); QueueingConsumer consumer = master.getConsumer(); - final Replicator replicator = new Replicator(master, this, startReplicatorSuspended, consumer, DomainFactory.INSTANCE); + final Replicator replicator = new Replicator(master, this, startReplicatorSuspended, consumer); new Thread(replicator).start(); return replicator; } diff --git a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF index f9a79e3a750..dad66979c26 100644 --- a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF @@ -12,10 +12,9 @@ Export-Package: com.sap.sailing.server.replication, Require-Bundle: com.sap.sailing.server, com.sap.sailing.server.gateway, com.sap.sailing.domain.common, - com.sap.sailing.domain, - com.sap.sse.operationaltransformation, com.sap.sailing.domain.shared.android, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.operationaltransformation Bundle-ClassPath: . Web-ContextPath: /replication Import-Package: com.rabbitmq.client;version="2.8.4", diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java new file mode 100755 index 00000000000..32e7dd76bd2 --- /dev/null +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -0,0 +1,53 @@ +package com.sap.sailing.server.replication; + +import java.io.InputStream; +import java.io.ObjectInputStream; + +import org.osgi.framework.BundleContext; + +import com.sap.sailing.domain.common.WithID; + +/** + * Represents a replicable part of an application. Such a replicable part is usually holder of the application state and + * central transaction / operation processing unit. Processing {@link Operation operations} generally happens by + * {@link Operation#applyTo(Object) applying} operations to this replicable. As such, this replicable plays the + * role of the toState argument in the {@link Operation#applyTo(Object)} method calls.

+ * + * In addition to being the operation processor, a replicable must be able to serialize its state for the initial + * load of a replica, and it must be able to initialize its state from this serialized form.

+ * + * For operation and initial load serialization, a replicable must provide a specialized {@link ObjectInputStream} that + * ensures that on the receiving end there are no two Java object copies representing the same domain object where this + * matters. This is particularly important for objects with mutable state that otherwise may run inconsistent when only + * one of the multiple copies gets modified. Typically, the object input stream uses some sort of cache and overrides + * the {@link ObjectInputStream#resolveObject} method, and the types whose objects are de-serialized need to co-operate by + * implementing a marker interface telling the specialized object input stream to use the cache when resolving objects + * of that type.

+ * + * Several {@link Replicable} instances can share the same replication service and the same set of replication channels. + * In order to participate in replication, {@link Replicable} objects need to be registered as OSGi services for the + * {@link Replicable} interface. The replication service will dynamically discover the {@link Replicable} objects when + * initial load is requested and when an {@link Operation} is received. The initial load streams as well as each replication + * operation need to identify the {@link Replicable} they refer to. This identification is added as an OSGi service registry + * parameter that is used during service discovery. + * + * @author Axel Uhl (D043530) + * + */ +public interface Replicable extends WithID { + /** + * The name of the property to use in the properties dictionary in a call to + * {@link BundleContext#registerService(Class, Object, java.util.Dictionary)} when registering a {@link Replicable}. + * The value to provide for this property is the {@link Object#toString()} serialization of the {@link #getId()} + * result for the {@link Replicable} object. + */ + final String OSGi_Service_Registry_ID_Property_Name = "ID"; + + /** + * Produces an object input stream that can choose to resolve objects against a cache so that duplicate instances + * are avoided. + */ + ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is); + + +} diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java new file mode 100755 index 00000000000..ed76422dd81 --- /dev/null +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -0,0 +1,60 @@ +package com.sap.sailing.server.replication.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectStreamClass; + +import com.sap.sailing.domain.base.IsManagedByCache; + +/** + * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed + * to the constructor. Additionally, class loading is managed using the current thread's context class loader which is + * required in and works well for OSGi environments. + *

+ * + * Create an instance of this class using + * {@link DomainFactory#createObjectInputStreamResolvingAgainstThisFactory(InputStream)}. + * + * @param the cache type used for resolving objects + * + * @author Axel Uhl (D043530) + * + */ +public abstract class ObjectInputStreamResolvingAgainstCache extends ObjectInputStream { + private final C cache; + + /** + * Package protected on purpose; instances to be created using a factory method on the {@link Replicable}. This + * constructor {@link #enableResolveObject(boolean) enables resolving} by default. + */ + protected ObjectInputStreamResolvingAgainstCache(InputStream in, C cache) throws IOException { + super(in); + this.cache = cache; + enableResolveObject(true); + } + + public C getCache() { + return cache; + } + + @Override + protected Class resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException { + String className = classDesc.getName(); + // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6554519 + // If using loadClass(...) on the class loader directly, an exception is thrown: + // StreamCorruptedException: invalid type code 00 + return Class.forName(className, /* initialize */true, Thread.currentThread().getContextClassLoader()); + } + + @Override + protected Object resolveObject(Object o) { + Object result; + if (o instanceof IsManagedByCache) { + result = ((IsManagedByCache) o).resolve(getCache()); + } else { + result = o; + } + return result; + } +} diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index dcc9cff1696..1c075850ddc 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -425,7 +425,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec logger.info("Connection to exchange successful."); URL initialLoadURL = master.getInitialLoadURL(); logger.info("Initial load URL is "+initialLoadURL); - replicator = new Replicator(master, this, /* startSuspended */ true, consumer, getRacingEventService().getBaseDomainFactory()); + replicator = new Replicator(master, this, /* startSuspended */ true, consumer); // start receiving messages already now, but start in suspended mode replicatorThread = new Thread(replicator, "Replicator receiving from "+master.getMessagingHostname()+"/"+master.getExchangeName()); final RacingEventService racingEventService = getRacingEventService(); diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java index b99dad2f670..87e6f717862 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java @@ -90,7 +90,7 @@ public class Replicator implements Runnable { * @param consumer * the RabbitMQ consumer from which to load messages */ - public Replicator(ReplicationMasterDescriptor master, HasRacingEventService racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer, DomainFactory baseDomainFactory) { + public Replicator(ReplicationMasterDescriptor master, HasRacingEventService racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { this.queue = new ArrayList>(); this.master = master; this.racingEventServiceTracker = racingEventServiceTracker; diff --git a/java/com.sap.sailing.server/META-INF/MANIFEST.MF b/java/com.sap.sailing.server/META-INF/MANIFEST.MF index ae20e242cc1..85d6baaf7b3 100644 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -20,10 +20,10 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.persistence, com.sap.sailing.domain.common, com.sap.sailing.udpconnector, - com.sap.sse.operationaltransformation, com.sap.sailing.domain.shared.android, com.sap.sailing.server.gateway.serialization, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.operationaltransformation Bundle-ClassPath: . Export-Package: com.sap.sailing.server, com.sap.sailing.server.impl; From a22775f8828285ae85861b968fa4c86ff2f4df38 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Nov 2014 17:33:59 +0100 Subject: [PATCH 004/113] renamed operationaltransformation packages to sse --- .../test/OperationalTransformationTest.java | 8 ++++---- .../server/test/RaceLogInRaceColumnTest.java | 8 ++++---- .../RaceLogOperationalTransformationTest.java | 8 ++++---- .../server/RacingEventServiceOperation.java | 2 +- .../server/impl/RacingEventServiceImpl.java | 2 +- .../RaceLogEventWithTransformationSupport.java | 2 +- .../test/OperationalTransformationTest.java | 16 ++++++++-------- .../test/util/Base64.java | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../ClientServerOperationPair.java | 2 +- .../operationaltransformation/Operation.java | 2 +- .../OperationWithTransformationSupport.java | 2 +- .../OperationalTransformer.java | 2 +- .../operationaltransformation/Peer.java | 2 +- .../operationaltransformation/PeerImpl.java | 2 +- .../operationaltransformation/Transformer.java | 2 +- .../UnmergedOperationsQueue.java | 2 +- .../operationaltransformation/package.html | 0 18 files changed, 33 insertions(+), 33 deletions(-) rename java/com.sap.sse.operationaltransformation.test/src/com/sap/{sailing => sse}/operationaltransformation/test/OperationalTransformationTest.java (90%) rename java/com.sap.sse.operationaltransformation.test/src/com/sap/{sailing => sse}/operationaltransformation/test/util/Base64.java (96%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/ClientServerOperationPair.java (89%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/Operation.java (89%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/OperationWithTransformationSupport.java (95%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/OperationalTransformer.java (88%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/Peer.java (96%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/PeerImpl.java (97%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/Transformer.java (92%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/UnmergedOperationsQueue.java (95%) rename java/com.sap.sse.operationaltransformation/src/com/sap/{sailing => sse}/operationaltransformation/package.html (100%) 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 1ac4ceca5da..40e1f365e36 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 @@ -14,10 +14,6 @@ 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; -import com.sap.sailing.operationaltransformation.OperationalTransformer; -import com.sap.sailing.operationaltransformation.Peer; -import com.sap.sailing.operationaltransformation.Peer.Role; -import com.sap.sailing.operationaltransformation.PeerImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; @@ -26,6 +22,10 @@ import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboar import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.operationaltransformation.OperationalTransformer; +import com.sap.sse.operationaltransformation.Peer; +import com.sap.sse.operationaltransformation.PeerImpl; +import com.sap.sse.operationaltransformation.Peer.Role; public class OperationalTransformationTest { private static final String LEADERBOARDNAME = "TESTBOARD"; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java index 8fb0fea4322..4c58bd18d4c 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java @@ -18,16 +18,16 @@ import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; -import com.sap.sailing.operationaltransformation.OperationalTransformer; -import com.sap.sailing.operationaltransformation.Peer; -import com.sap.sailing.operationaltransformation.Peer.Role; -import com.sap.sailing.operationaltransformation.PeerImpl; 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.CreateFlexibleLeaderboard; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.operationaltransformation.OperationalTransformer; +import com.sap.sse.operationaltransformation.Peer; +import com.sap.sse.operationaltransformation.PeerImpl; +import com.sap.sse.operationaltransformation.Peer.Role; public class RaceLogInRaceColumnTest { diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java index 2656eab2650..74c0b810653 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java @@ -19,13 +19,13 @@ import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; import com.sap.sailing.domain.racelog.impl.RaceLogStartTimeEventImpl; -import com.sap.sailing.operationaltransformation.OperationalTransformer; -import com.sap.sailing.operationaltransformation.Peer; -import com.sap.sailing.operationaltransformation.Peer.Role; -import com.sap.sailing.operationaltransformation.PeerImpl; import com.sap.sailing.server.operationaltransformation.racelog.RaceLogEventWithTransformationSupport; import com.sap.sailing.server.operationaltransformation.racelog.RaceLogStartTimeEventWithTransformationSupport; import com.sap.sse.common.Util; +import com.sap.sse.operationaltransformation.OperationalTransformer; +import com.sap.sse.operationaltransformation.Peer; +import com.sap.sse.operationaltransformation.PeerImpl; +import com.sap.sse.operationaltransformation.Peer.Role; public class RaceLogOperationalTransformationTest { private RaceLog raceLogClient1; 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 104a8a68f11..96f1113997a 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 @@ -2,7 +2,6 @@ package com.sap.sailing.server; import java.io.Serializable; -import com.sap.sailing.operationaltransformation.OperationWithTransformationSupport; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreatePersistentCompetitor; @@ -12,6 +11,7 @@ import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public interface RacingEventServiceOperation extends OperationWithTransformationSupport>, Serializable { /** 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 6c70f76de47..bcf5046759b 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 @@ -138,7 +138,6 @@ import com.sap.sailing.domain.tracking.WindTracker; import com.sap.sailing.domain.tracking.WindTrackerFactory; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory; -import com.sap.sailing.operationaltransformation.Operation; import com.sap.sailing.server.OperationExecutionListener; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; @@ -192,6 +191,7 @@ import com.sap.sse.common.Util; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.ResultImpl; +import com.sap.sse.operationaltransformation.Operation; public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport, RegattaListener, LeaderboardRegistry, Replicator { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogEventWithTransformationSupport.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogEventWithTransformationSupport.java index 9da6c827f68..86e74f11e65 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogEventWithTransformationSupport.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogEventWithTransformationSupport.java @@ -2,7 +2,7 @@ package com.sap.sailing.server.operationaltransformation.racelog; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.operationaltransformation.OperationWithTransformationSupport; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public abstract class RaceLogEventWithTransformationSupport implements OperationWithTransformationSupport> { private final E raceLogEvent; diff --git a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java similarity index 90% rename from java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java rename to java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java index d420b5e65c6..029a57e361f 100755 --- a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/OperationalTransformationTest.java +++ b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation.test; +package com.sap.sse.operationaltransformation.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -9,13 +9,13 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.operationaltransformation.ClientServerOperationPair; -import com.sap.sailing.operationaltransformation.Operation; -import com.sap.sailing.operationaltransformation.Peer; -import com.sap.sailing.operationaltransformation.Peer.Role; -import com.sap.sailing.operationaltransformation.PeerImpl; -import com.sap.sailing.operationaltransformation.Transformer; -import com.sap.sailing.operationaltransformation.test.util.Base64; +import com.sap.sse.operationaltransformation.ClientServerOperationPair; +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.operationaltransformation.Peer; +import com.sap.sse.operationaltransformation.PeerImpl; +import com.sap.sse.operationaltransformation.Transformer; +import com.sap.sse.operationaltransformation.Peer.Role; +import com.sap.sse.operationaltransformation.test.util.Base64; public class OperationalTransformationTest { private Peer server; diff --git a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/util/Base64.java similarity index 96% rename from java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java rename to java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/util/Base64.java index 8a9286d44a1..c0f702d89be 100755 --- a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sailing/operationaltransformation/test/util/Base64.java +++ b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/util/Base64.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation.test.util; +package com.sap.sse.operationaltransformation.test.util; /** * Implements a BASE64 encoder and decoder. Class Base64 provides diff --git a/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF index f3593bd9dc3..5c589ced8c7 100644 --- a/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF @@ -6,4 +6,4 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Export-Package: com.sap.sailing.operationaltransformation +Export-Package: com.sap.sse.operationaltransformation diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java similarity index 89% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java index bd42681bc64..f32f40fa648 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; public class ClientServerOperationPair> { private O clientOp; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java similarity index 89% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java index fe204ad8da4..9331b5171d4 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; /** * A change operation can be applied to some start state of some diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java similarity index 95% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java index 44dfd0c74cc..75c1ce29a5c 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java similarity index 88% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java index 1fdb249521d..11f2820c269 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; public class OperationalTransformer> implements Transformer { diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Peer.java similarity index 96% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Peer.java index f653927bb40..799104a89aa 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Peer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Peer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; /** * Accepts change operations from clients and maintains a shared state. If new diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java similarity index 97% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java index a7eb3e12bb3..715dcc0a432 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; import java.util.Collection; import java.util.HashMap; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java similarity index 92% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java index 62bf2108469..764345898ec 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; public interface Transformer> { /** diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/UnmergedOperationsQueue.java similarity index 95% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/UnmergedOperationsQueue.java index c39529ef803..1b674f8926d 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/UnmergedOperationsQueue.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/UnmergedOperationsQueue.java @@ -1,4 +1,4 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; import java.util.ArrayList; import java.util.List; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/package.html similarity index 100% rename from java/com.sap.sse.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/package.html From bbc2796d59c1f402db71e153b74833fc803acd45 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Nov 2014 21:47:57 +0100 Subject: [PATCH 005/113] renamed com.sap.sailing.server.replication bundle to com.sap.sse.replication --- .../META-INF/MANIFEST.MF | 11 +++-- .../com/sap/sailing/autoload/TracTrac.java | 2 +- .../test/BarbadosResultImportTest.java | 4 +- .../impl/ScoreCorrectionProviderImpl.java | 2 +- .../TrackedLegOfCompetitorWithContext.java | 2 +- .../impl/data/TrackedLegWithContext.java | 4 +- .../impl/data/TrackedRaceWithContext.java | 2 +- .../test/DeclinationImportTest.java | 2 +- .../test/DeclinationServiceTest.java | 2 +- .../test/DeclinationStoreTest.java | 4 +- .../test/SimpleDeclinationTest.java | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../sap/sailing/declination/Declination.java | 2 +- .../declination/DeclinationService.java | 2 +- .../impl/DeclinationRecordImpl.java | 2 +- .../impl/DeclinationServiceImpl.java | 2 +- .../declination/impl/DeclinationStore.java | 4 +- .../declination/impl/NOAAImporter.java | 2 +- .../domain/common/AbstractSpeedImpl.java | 1 + .../domain/common/DurationFormatter.java | 2 + .../common/ScoreCorrectionProvider.java | 1 + .../com/sap/sailing/domain/common/Speed.java | 1 + .../domain/common/SpeedWithBearing.java | 2 + .../sap/sailing/domain/common/TimeRange.java | 3 ++ .../common/confidence/ConfidenceFactory.java | 2 +- .../common/confidence/HasConfidence.java | 2 +- .../ConfidenceBasedAveragerFactoryImpl.java | 2 +- .../ExponentialTimeDifferenceWeigher.java | 2 +- ...yperbolicSquaredTimeDifferenceWeigher.java | 2 +- .../impl/HyperbolicTimeDifferenceWeigher.java | 2 +- .../impl/PositionAndTimePointWeigher.java | 2 +- .../common/dto/LeaderboardEntryDTO.java | 2 +- .../common/dto/TrackedRaceStatisticsDTO.java | 2 +- .../AbstractSpeedWithAbstractBearingImpl.java | 3 +- .../domain/common/impl/TimeRangeImpl.java | 5 +- .../domain/common/media/MediaTrack.java | 4 +- .../domain/common/media/MediaUtil.java | 2 +- .../test/TestDeckmanLogfileParsing.java | 2 +- .../META-INF/MANIFEST.MF | 3 +- .../sailing/domain/deckmanadapter/Record.java | 4 +- .../igtimiadapter/impl/FixFactoryTest.java | 2 +- .../igtimiadapter/impl/WindReceiverTest.java | 4 +- .../test/BasicIgtimiAdapterTest.java | 4 +- .../test/IgtimiFixTrackTest.java | 4 +- .../igtimiadapter/HasStartAndEndTime.java | 2 +- .../igtimiadapter/IgtimiConnection.java | 2 +- .../domain/igtimiadapter/datatypes/AWA.java | 2 +- .../domain/igtimiadapter/datatypes/AWS.java | 2 +- .../igtimiadapter/datatypes/AntCbst.java | 2 +- .../igtimiadapter/datatypes/AntHrm.java | 2 +- .../igtimiadapter/datatypes/BatteryLevel.java | 2 +- .../domain/igtimiadapter/datatypes/COG.java | 2 +- .../domain/igtimiadapter/datatypes/File.java | 2 +- .../domain/igtimiadapter/datatypes/Fix.java | 2 +- .../igtimiadapter/datatypes/GpsAltitude.java | 2 +- .../igtimiadapter/datatypes/GpsLatLong.java | 2 +- .../datatypes/GpsQualityHdop.java | 2 +- .../datatypes/GpsQualityIndicator.java | 2 +- .../datatypes/GpsQualitySatCount.java | 2 +- .../domain/igtimiadapter/datatypes/HDG.java | 2 +- .../domain/igtimiadapter/datatypes/HDGM.java | 2 +- .../domain/igtimiadapter/datatypes/SOG.java | 2 +- .../domain/igtimiadapter/datatypes/STW.java | 2 +- .../impl/DataAccessWindowDeserializer.java | 2 +- .../impl/DataAccessWindowImpl.java | 2 +- .../domain/igtimiadapter/impl/FixFactory.java | 4 +- .../impl/IgtimiConnectionFactoryImpl.java | 2 +- .../impl/IgtimiConnectionImpl.java | 6 +-- .../igtimiadapter/impl/IgtimiWindTracker.java | 4 +- .../impl/ResourceDeserializer.java | 2 +- .../igtimiadapter/impl/ResourceImpl.java | 2 +- .../impl/SessionDeserializer.java | 2 +- .../igtimiadapter/impl/SessionImpl.java | 2 +- .../shared/IgtimiWindReceiver.java | 2 +- .../websocket/WebSocketConnectionManager.java | 4 +- .../impl/DomainObjectFactoryImpl.java | 4 +- .../impl/MongoObjectFactoryImpl.java | 6 +-- .../persistence/media/DBMediaTrack.java | 4 +- .../domain/persistence/media/MediaDB.java | 4 +- .../persistence/media/impl/MediaDBImpl.java | 8 ++-- .../tracking/impl/GPSFixMongoHandlerImpl.java | 2 +- .../impl/GPSFixMovingMongoHandlerImpl.java | 2 +- .../tracking/impl/MongoGPSFixStoreImpl.java | 2 +- .../test/AbstractGPSFixStoreTest.java | 2 +- .../impl/CreateAndTrackWithRaceLogTest.java | 4 +- .../test/manual/PostFixes.java | 2 +- .../impl/RaceLogRaceTracker.java | 6 +-- .../impl/RaceLogTrackingAdapterImpl.java | 4 +- ...FileImportDeviceIdentifierJsonHandler.java | 4 +- ...ileImportDeviceIdentifierMongoHandler.java | 2 +- .../test/FinishedTimeFinderTest.java | 2 +- .../test/FinishingTimeFinderTest.java | 2 +- .../test/IndividualRecallFinderTest.java | 2 +- .../test/ProtestStartTimeFinderTest.java | 2 +- .../analyzing/test/RaceLogAnalyzerTest.java | 2 +- .../test/RaceStatusAnalyzerTest.java | 4 +- .../analyzing/test/StartTimeFinderTest.java | 2 +- .../racelog/state/test/RaceStateTest.java | 4 +- .../test/RaceLogEventComparatorTest.java | 2 +- .../racelog/test/RaceLogEventImplTest.java | 2 +- .../racelog/test/RaceLogRevocationTest.java | 4 +- .../domain/racelog/test/RaceLogTest.java | 4 +- .../test/SerializeRaceLogEventsTest.java | 2 +- .../test/AbstractRaceLogTrackingTest.java | 4 +- .../test/DeviceMappingFinderTest.java | 4 +- .../sap/sailing/domain/base/BoatClass.java | 2 +- .../sap/sailing/domain/base/Competitor.java | 2 +- .../sap/sailing/domain/base/ControlPoint.java | 2 +- .../sap/sailing/domain/base/CourseArea.java | 2 +- .../sap/sailing/domain/base/EventBase.java | 4 +- .../domain/base/LeaderboardGroupBase.java | 2 +- .../src/com/sap/sailing/domain/base/Mark.java | 2 +- .../com/sap/sailing/domain/base/Sideline.java | 2 +- .../com/sap/sailing/domain/base/Timed.java | 2 +- .../com/sap/sailing/domain/base/Waypoint.java | 2 +- .../domain/base/impl/EventBaseImpl.java | 2 +- .../base/impl/SharedDomainFactoryImpl.java | 2 +- .../domain/base/impl/StrippedEventImpl.java | 2 +- .../sap/sailing/domain/racelog/RaceLog.java | 4 +- .../sailing/domain/racelog/RaceLogEvent.java | 4 +- .../domain/racelog/RaceLogEventFactory.java | 2 +- .../racelog/RaceLogEventRestoreFactory.java | 2 +- .../racelog/RaceLogProtestStartTimeEvent.java | 2 +- .../domain/racelog/RaceLogStartTimeEvent.java | 2 +- .../analyzing/impl/FinishedTimeFinder.java | 2 +- .../analyzing/impl/FinishingTimeFinder.java | 2 +- .../impl/IndividualRecallDisplayedFinder.java | 2 +- .../impl/IndividualRecallFinder.java | 2 +- .../impl/IndividualRecallRemovedFinder.java | 2 +- .../analyzing/impl/IsFinishedAnalyzer.java | 2 +- .../impl/IsInFinishingPhaseAnalyzer.java | 2 +- .../IsIndividualRecallDisplayedAnalyzer.java | 2 +- .../analyzing/impl/LastFlagsFinder.java | 2 +- .../impl/ProtestStartTimeFinder.java | 2 +- .../analyzing/impl/RaceStatusAnalyzer.java | 4 +- .../analyzing/impl/StartTimeFinder.java | 2 +- .../racelog/impl/NoAddingRaceLogWrapper.java | 4 +- .../RaceLogCourseAreaChangeEventImpl.java | 2 +- .../RaceLogCourseDesignChangedEventImpl.java | 2 +- .../racelog/impl/RaceLogEventFactoryImpl.java | 4 +- .../domain/racelog/impl/RaceLogEventImpl.java | 2 +- .../impl/RaceLogEventRestoreFactoryImpl.java | 2 +- ...ogFinishPositioningConfirmedEventImpl.java | 2 +- .../RaceLogFinishPositioningEventImpl.java | 2 +- ...FinishPositioningListChangedEventImpl.java | 2 +- .../racelog/impl/RaceLogFlagEventImpl.java | 2 +- .../RaceLogGateLineOpeningTimeEventImpl.java | 2 +- .../domain/racelog/impl/RaceLogImpl.java | 2 +- .../impl/RaceLogPassChangeEventImpl.java | 2 +- .../impl/RaceLogPathfinderEventImpl.java | 2 +- .../RaceLogProtestStartTimeEventImpl.java | 2 +- .../impl/RaceLogRaceStatusEventImpl.java | 2 +- ...RaceLogStartProcedureChangedEventImpl.java | 2 +- .../impl/RaceLogStartTimeEventImpl.java | 2 +- .../racelog/impl/RaceLogWindFixEventImpl.java | 2 +- ...AdditionalScoringInformationEventImpl.java | 2 +- .../domain/racelog/state/RaceState.java | 2 +- .../racelog/state/ReadonlyRaceState.java | 2 +- .../state/impl/RaceStateEventImpl.java | 2 +- .../racelog/state/impl/RaceStateImpl.java | 2 +- .../state/impl/ReadonlyRaceStateImpl.java | 2 +- .../state/racingprocedure/FlagPoleState.java | 2 +- .../racingprocedure/RacingProcedure.java | 2 +- .../ReadonlyRacingProcedure.java | 2 +- .../basic/impl/BasicRacingProcedureImpl.java | 2 +- .../ess/ReadonlyESSRacingProcedure.java | 2 +- .../ess/impl/ESSRacingProcedureImpl.java | 2 +- .../gate/GateStartRacingProcedure.java | 2 +- .../ReadonlyGateStartRacingProcedure.java | 2 +- .../gate/impl/BaseGateStartPrerequisite.java | 2 +- .../gate/impl/GateLaunchTimePrerequisite.java | 2 +- .../impl/GateStartRacingProcedureImpl.java | 2 +- .../gate/impl/PathfinderPrerequisite.java | 2 +- .../impl/BaseRacingProcedure.java | 2 +- .../impl/BaseRacingProcedurePrerequisite.java | 2 +- .../rrs26/RRS26RacingProcedure.java | 2 +- .../rrs26/impl/BaseRRS26Prerequisite.java | 2 +- .../rrs26/impl/RRS26RacingProcedureImpl.java | 2 +- .../rrs26/impl/StartmodePrerequisite.java | 2 +- .../CloseOpenEndedDeviceMappingEvent.java | 2 +- .../racelog/tracking/DeviceMapping.java | 2 +- .../racelog/tracking/DeviceMappingEvent.java | 4 +- .../analyzing/impl/DeviceMappingFinder.java | 4 +- .../impl/LastPingMappingEventFinder.java | 2 +- .../impl/OpenEndedDeviceMappingCloser.java | 4 +- .../AbstractDeviceMappingEventImpl.java | 4 +- .../CloseOpenEndedDeviceMappingEventImpl.java | 2 +- .../tracking/events/DefineMarkEventImpl.java | 2 +- .../events/DenoteForTrackingEventImpl.java | 2 +- .../DeviceCompetitorMappingEventImpl.java | 2 +- .../events/DeviceMarkMappingEventImpl.java | 2 +- .../events/RegisterCompetitorEventImpl.java | 2 +- .../tracking/events/RevokeEventImpl.java | 2 +- .../events/StartTrackingEventImpl.java | 2 +- .../tracking/impl/DeviceMappingImpl.java | 4 +- .../sap/sailing/domain/tracking/Track.java | 4 +- .../domain/tracking/impl/TrackImpl.java | 4 +- .../domain/tracking/impl/WindImpl.java | 2 +- .../com/sap/sailing/util/impl/LockUtil.java | 4 +- .../test/SailMasterConnectivityTest.java | 2 +- .../test/SwissTimingSailMasterLiveTest.java | 2 +- .../swisstimingadapter/DomainFactory.java | 2 +- .../swisstimingadapter/SailMasterAdapter.java | 2 +- .../SailMasterConnector.java | 2 +- .../SailMasterListener.java | 2 +- .../SwissTimingMessage.java | 2 +- .../impl/DomainFactoryImpl.java | 6 +-- .../impl/SailMasterConnectorImpl.java | 4 +- .../impl/SwissTimingMessageImpl.java | 2 +- .../impl/SwissTimingMessageParserImpl.java | 2 +- .../impl/SwissTimingRaceTrackerImpl.java | 4 +- .../SwissTimingReplayToDomainAdapter.java | 4 +- .../sailing/domain/common/MediaTrackTest.java | 6 ++- .../sailing/domain/common/MediaUtilTest.java | 3 +- .../domain/common/test/DurationTest.java | 9 ++-- .../test/LeaderboardDTODiffingTest.java | 2 +- .../domain/common/test/TimePointTest.java | 5 +- .../domain/common/test/TimeRangeTest.java | 4 +- .../AbstractManeuverDetectionTestCase.java | 4 +- .../sailing/domain/test/BeatAngleTest.java | 4 +- .../sailing/domain/test/ConcurrencyTest.java | 2 +- .../sailing/domain/test/ConfidenceTest.java | 4 +- .../test/LeaderboardCourseChangeTest.java | 4 +- .../test/LeaderboardForKielWeekTest.java | 2 +- .../domain/test/LeaderboardOfflineTest.java | 4 +- .../LeaderboardScoringAndRankingTest.java | 6 +-- .../sailing/domain/test/LineAnalysisTest.java | 4 +- .../domain/test/ManeuverAnalysis505Test.java | 2 +- ...ManeuverAnalysisIDMChampionsFinalTest.java | 4 +- .../test/ManeuverAnalysisQingdao2014Test.java | 2 +- ...etectionOnKielerWoche505Race2DataTest.java | 4 +- ...neuverDetectionOnMdM2011SemifinalTest.java | 4 +- .../test/MarkPositionTimeFilterTest.java | 4 +- .../domain/test/OfflineSerializationTest.java | 4 +- .../domain/test/OnlineTracTracBasedTest.java | 4 +- .../test/PassingInstructionParserTest.java | 2 +- .../domain/test/PolarSheetGenerationTest.java | 4 +- .../sap/sailing/domain/test/PositionTest.java | 2 +- .../sailing/domain/test/ReachingLegTest.java | 4 +- .../test/SerializationWithOnlineRaceTest.java | 2 +- ...tarbordSideOfStartLineRecognitionTest.java | 4 +- .../domain/test/StoredTrackBasedTest.java | 4 +- .../StoredTrackBasedTestWithTrackedRace.java | 2 +- .../com/sap/sailing/domain/test/TackTest.java | 2 +- .../domain/test/TimeInLegProgressesTest.java | 4 +- .../sailing/domain/test/TrackBasedTest.java | 4 +- .../domain/test/TrackSmootheningTest.java | 2 +- .../sap/sailing/domain/test/TrackTest.java | 4 +- .../domain/test/TrackedRaceCenterTest.java | 6 +-- .../domain/test/UpdateMarkPassingTest.java | 4 +- .../WindEstimationLockingUnderLoadTest.java | 4 +- ...WindEstimationOnConstructedTracksTest.java | 4 +- ...timationOnKielerWoche505Race2DataTest.java | 4 +- .../WindEstimationOnStoredTracksTest.java | 4 +- .../com/sap/sailing/domain/test/WindTest.java | 4 +- .../markpassing/AbstractMarkPassingTest.java | 4 +- .../AbstractMockedRaceMarkPassingTest.java | 4 +- .../test/markpassing/CandidateFinderTest.java | 2 +- .../MarkPassingCalculatorPerformanceTest.java | 2 +- .../MartinAbstractMarkPassingTest.java | 4 +- .../MartinMarkPassingSplineBasedTest.java | 4 +- .../domain/test/mock/MockedTrackedRace.java | 2 +- .../mock/MockedTrackedRaceWithFixedRank.java | 2 +- ...ockedTrackedRaceWithStartTimeAndRanks.java | 2 +- .../domain/tractracadapter/DomainFactory.java | 4 +- .../domain/tractracadapter/RaceRecord.java | 4 +- .../tractracadapter/TracTracAdapter.java | 2 +- .../tractracadapter/TracTracControlPoint.java | 2 +- .../tractracadapter/impl/AbstractWithID.java | 2 +- .../impl/DomainFactoryImpl.java | 4 +- .../impl/MarkPassingReceiver.java | 4 +- .../impl/RaceCourseReceiver.java | 4 +- .../impl/RaceStartedAndFinishedReceiver.java | 4 +- ...aceTrackingConnectivityParametersImpl.java | 2 +- .../tractracadapter/impl/Simulator.java | 4 +- .../impl/TracTracAdapterImpl.java | 2 +- .../impl/TracTracRaceTrackerImpl.java | 2 +- .../impl/TracTracStartTimeResetHandler.java | 2 +- .../impl/TracTracStartTimeUpdateHandler.java | 2 +- .../sailing/domain/base/DomainFactory.java | 2 +- .../sailing/domain/base/RaceDefinition.java | 2 +- .../com/sap/sailing/domain/base/Regatta.java | 2 +- .../domain/base/impl/DomainFactoryImpl.java | 4 +- .../domain/base/impl/DouglasPeucker.java | 2 +- .../sailing/domain/base/impl/EventImpl.java | 2 +- ...KilometersPerHourSpeedWithBearingImpl.java | 2 +- .../domain/leaderboard/Leaderboard.java | 6 +-- .../leaderboard/LeaderboardCacheManager.java | 2 +- .../domain/leaderboard/LeaderboardGroup.java | 2 +- .../leaderboard/ResultDiscardingRule.java | 2 +- .../domain/leaderboard/ScoreCorrection.java | 2 +- .../domain/leaderboard/ScoringScheme.java | 2 +- .../leaderboard/SettableScoreCorrection.java | 2 +- .../caching/LeaderboardDTOCache.java | 4 +- .../LeaderboardDTOCalculationReuseCache.java | 4 +- .../caching/LiveLeaderboardUpdater.java | 4 +- .../impl/AbstractLeaderboardImpl.java | 2 +- .../impl/AbstractScoringSchemeImpl.java | 2 +- .../impl/AbstractSimpleLeaderboardImpl.java | 6 +-- .../domain/leaderboard/impl/HighPoint.java | 2 +- .../HighPointExtremeSailingSeriesOverall.java | 2 +- .../impl/LeaderboardTotalRankComparator.java | 2 +- .../domain/leaderboard/impl/LowPoint.java | 2 +- .../PerSeriesResultDiscardingRuleImpl.java | 2 +- .../leaderboard/impl/ScoreCorrectionImpl.java | 2 +- ...hresholdBasedResultDiscardingRuleImpl.java | 2 +- .../meta/AbstractMetaLeaderboard.java | 2 +- .../meta/MetaLeaderboardScoreCorrection.java | 2 +- .../markpassingcalculation/Candidate.java | 2 +- .../CandidateChooser.java | 2 +- .../CandidateFinder.java | 2 +- ...dCompetitorPolarSheetGenerationWorker.java | 2 +- .../sailing/domain/polarsheets/PolarFix.java | 2 +- .../PolarSheetGenerationWorker.java | 2 +- .../racelog/RaceStateOfSameDayHelper.java | 2 +- .../TrackFileImportDeviceIdentifier.java | 2 +- .../TrackFileImportDeviceIdentifierImpl.java | 4 +- .../domain/tracking/DynamicTrackedRace.java | 2 +- .../sailing/domain/tracking/GPSFixTrack.java | 2 +- .../domain/tracking/LegBearingCache.java | 2 +- .../sailing/domain/tracking/LegTypeCache.java | 2 +- .../sailing/domain/tracking/LineDetails.java | 2 +- .../domain/tracking/RaceChangeListener.java | 2 +- .../tracking/StartTimeChangedListener.java | 2 +- .../sailing/domain/tracking/TrackedLeg.java | 2 +- .../tracking/TrackedLegOfCompetitor.java | 4 +- .../sailing/domain/tracking/TrackedRace.java | 2 +- .../domain/tracking/TrackedRegatta.java | 2 +- .../sailing/domain/tracking/WindCache.java | 2 +- .../sailing/domain/tracking/WindTrack.java | 2 +- .../domain/tracking/WindWithConfidence.java | 2 +- .../impl/AbstractRaceChangeListener.java | 2 +- .../impl/CombinedWindAsNavigableSet.java | 4 +- .../tracking/impl/CombinedWindTrackImpl.java | 6 +-- .../tracking/impl/CompactGPSFixImpl.java | 4 +- .../impl/CompactGPSFixMovingImpl.java | 2 +- .../domain/tracking/impl/CompactWindImpl.java | 4 +- .../impl/CourseBasedWindTrackImpl.java | 4 +- .../tracking/impl/CrossTrackErrorCache.java | 4 +- .../domain/tracking/impl/DistanceCache.java | 2 +- .../DummyMarkPassingWithTimePointOnly.java | 2 +- .../impl/DynamicGPSFixMovingTrackImpl.java | 2 +- .../tracking/impl/DynamicTrackedRaceImpl.java | 4 +- .../impl/DynamicTrackedRaceLogListener.java | 2 +- .../domain/tracking/impl/GPSFixImpl.java | 4 +- .../tracking/impl/GPSFixMovingImpl.java | 4 +- .../domain/tracking/impl/GPSFixTrackImpl.java | 4 +- .../domain/tracking/impl/LineDetailsImpl.java | 2 +- .../domain/tracking/impl/ManeuverImpl.java | 2 +- .../impl/MarkPassingForOffsetImpl.java | 2 +- .../domain/tracking/impl/MarkPassingImpl.java | 2 +- .../impl/MarkPassingManeuverImpl.java | 2 +- .../domain/tracking/impl/MaxSpeedCache.java | 4 +- ...oCachingWindLegTypeAndLegBearingCache.java | 2 +- .../tracking/impl/RaceRankComparator.java | 2 +- .../domain/tracking/impl/ScalableWind.java | 2 +- .../tracking/impl/ShortTimeWindCache.java | 2 +- .../TrackBasedEstimationWindTrackImpl.java | 8 ++-- .../domain/tracking/impl/TrackedLegImpl.java | 2 +- .../impl/TrackedLegOfCompetitorImpl.java | 4 +- .../domain/tracking/impl/TrackedRaceImpl.java | 6 +-- .../tracking/impl/TrackedRegattaImpl.java | 2 +- .../impl/VirtualWindFixesAsNavigableSet.java | 4 +- .../tracking/impl/VirtualWindTrackImpl.java | 2 +- .../domain/tracking/impl/WindTrackImpl.java | 2 +- .../tracking/impl/WindwardToGoComparator.java | 2 +- .../test/SimpleESS40ResultImportTest.java | 2 +- .../impl/ScoreCorrectionProviderImpl.java | 4 +- .../test/UDPExpeditionReceiverTest.java | 4 +- .../ExpeditionMessage.java | 2 +- .../impl/ExpeditionMessageImpl.java | 4 +- .../impl/ExpeditionMessageParser.java | 4 +- .../impl/ScoreCorrectionProviderImpl.java | 4 +- .../gwt/ui/common/client/CountdownTest.java | 6 +-- .../gwt/ui/test/MockedTrackedRace.java | 2 +- .../test/PolarSheetGenerationServiceTest.java | 4 +- .../META-INF/MANIFEST.MF | 27 ++++++----- .../gwt/home/client/shared/Countdown.java | 6 +-- .../home/client/shared/stage/StageTeaser.java | 4 +- .../gwt/ui/adminconsole/MediaPanel.java | 4 +- .../media/MediaPlayerManagerComponent.java | 4 +- .../gwt/ui/client/media/NewMediaDialog.java | 6 +-- .../NewMediaWithRaceSelectionDialog.java | 4 +- .../gwt/ui/client/media/TimeFormatUtil.java | 4 +- .../gwt/ui/client/media/VideoHtmlPlayer.java | 4 +- .../ui/client/media/VideoYoutubePlayer.java | 4 +- .../gwt/ui/server/QuickRanksLiveCache.java | 2 +- .../gwt/ui/server/SailingServiceImpl.java | 10 ++-- .../gwt/ui/server/SimulatorServiceImpl.java | 6 +-- .../gwt/ui/server/SimulatorServiceUtils.java | 2 +- .../gwt/ui/shared/WindFieldGenParamsDTO.java | 2 +- .../gwt/ui/simulator/SimulatorMainPanel.java | 4 +- .../simulator/streamlets/SimulatorField.java | 2 +- .../kiworesultimport/test/ParserTest.java | 2 +- .../kiworesultimport/RegattaSummary.java | 2 +- .../sailing/kiworesultimport/ResultList.java | 2 +- .../sap/sailing/kiworesultimport/Start.java | 2 +- .../sailing/kiworesultimport/StartReport.java | 2 +- .../impl/RegattaSummaryImpl.java | 2 +- .../kiworesultimport/impl/ResultListImpl.java | 4 +- .../impl/ScoreCorrectionProviderImpl.java | 2 +- .../kiworesultimport/impl/StartImpl.java | 4 +- .../impl/StartReportImpl.java | 4 +- .../resultimport/test/ParserTest.java | 4 +- .../Manage2SailResultDocumentProvider.java | 2 +- .../ScoreCorrectionProviderImpl.java | 2 +- .../media/persistence/test/MediaDBTest.java | 8 ++-- ...tStoringAndRetrievingRaceLogInRegatta.java | 2 +- .../mongodb/test/RaceLogMongoDBTest.java | 2 +- .../StoreAndLoadDeviceIdentifierTest.java | 4 +- .../test/StoreAndLoadRaceLogEventsTest.java | 4 +- .../test/StoreAndLoadRaceLogsTest.java | 2 +- .../mongodb/test/StoreGPSFixTrackTest.java | 4 +- .../test/TestRaceLogRemovalInRegatta.java | 2 +- ...estStoringAndLoadingEventsAndRegattas.java | 4 +- ...StoringAndRetrievingLeaderboardGroups.java | 2 +- .../TestStoringAndRetrievingLeaderboards.java | 2 +- ...tStoringAndRetrievingRaceLogEventData.java | 4 +- ...ingAndRetrievingRaceLogInLeaderboards.java | 2 +- ...tStoringAndRetrievingRaceLogInRegatta.java | 2 +- .../TestStoringAndRetrievingWindData.java | 4 +- ...estStoringAndRetrievingWindTracksTest.java | 4 +- .../test/ReadWindVaneDataTest.java | 4 +- .../sap/sailing/nmeaconnector/NmeaUtil.java | 2 +- .../nmeaconnector/impl/NmeaUtilImpl.java | 2 +- .../ResultDocumentDescriptor.java | 2 +- .../impl/FileBasedResultDocumentProvider.java | 2 +- .../impl/ResultDocumentDescriptorImpl.java | 2 +- .../resultimport/test/ParserTest.java | 4 +- .../sailwave/resultimport/CsvParser.java | 2 +- .../resultimport/CsvParserFactory.java | 2 +- .../impl/CsvParserFactoryImpl.java | 2 +- .../resultimport/impl/CsvParserImpl.java | 2 +- .../impl/ScoreCorrectionProviderImpl.java | 2 +- .../selenium/test/AbstractSeleniumTest.java | 4 +- .../ess40/ESS40ResultsAsCSVServlet.java | 4 +- .../test/EventDataJsonSerializerTest.java | 4 +- ...tDataJsonSerializerWithNullValuesTest.java | 4 +- ...NullStartAndEndDataJsonSerializerTest.java | 2 +- .../racelog/AbstractEventSerializerTest.java | 2 +- ...ourseDesignChangedEventSerializerTest.java | 4 +- ...sitioningConfirmedEventSerializerTest.java | 4 +- .../RaceLogWindFixEventSerializerTest.java | 4 +- .../racelog/StartTimeEventSerializerTest.java | 2 +- .../impl/EventBaseJsonDeserializer.java | 2 +- .../impl/GPSFixJsonDeserializer.java | 4 +- .../impl/GPSFixNmeaDTOJsonDeserializer.java | 4 +- .../impl/WindJsonDeserializer.java | 2 +- .../impl/BaseRaceLogEventDeserializer.java | 4 +- ...alScoringInformationEventDeserializer.java | 2 +- ...enEndedDeviceMappingEventDeserializer.java | 4 +- ...LogCourseAreaChangedEventDeserializer.java | 2 +- ...gCourseDesignChangedEventDeserializer.java | 2 +- .../RaceLogDefineMarkEventDeserializer.java | 2 +- ...LogDenoteForTrackingEventDeserializer.java | 2 +- ...iceCompetitorMappingEventDeserializer.java | 2 +- ...RaceLogDeviceMappingEventDeserializer.java | 6 +-- ...LogDeviceMarkMappingEventDeserializer.java | 2 +- ...PositioningConfirmedEventDeserializer.java | 2 +- ...sitioningListChangedEventDeserializer.java | 2 +- .../impl/RaceLogFlagEventDeserializer.java | 2 +- ...gGateLineOpeningTimeEventDeserializer.java | 2 +- .../RaceLogPassChangeEventDeserializer.java | 2 +- .../RaceLogPathFinderEventDeserializer.java | 2 +- ...eLogProtestStartTimeEventDeserializer.java | 4 +- .../RaceLogRaceStatusEventDeserializer.java | 2 +- ...ogRegisterCompetitorEventDeserializer.java | 2 +- .../impl/RaceLogRevokeEventDeserializer.java | 2 +- ...tartProcedureChangedEventDeserializer.java | 2 +- .../RaceLogStartTimeEventDeserializer.java | 4 +- ...RaceLogStartTrackingEventDeserializer.java | 2 +- .../impl/RaceLogWindFixEventDeserializer.java | 2 +- .../impl/SeriesJsonSerializer.java | 2 +- .../impl/TrackedRaceJsonSerializer.java | 2 +- .../RaceLogDeviceMappingEventSerializer.java | 2 +- .../WindJsonGetServletRefactoringTest.java | 4 +- .../gateway/test/AbstractJsonExportTest.java | 4 +- .../test/LeaderboardGroupJsonExportTest.java | 4 +- .../test/LeaderboardJsonExportTest.java | 4 +- .../test/RaceLogSerializationTest.java | 4 +- .../test/jaxrs/AbstractJaxRsApiTest.java | 4 +- .../gateway/SailingServerHttpServlet.java | 4 +- .../expeditionimport/WindLogParser.java | 4 +- .../sailing/server/gateway/impl/AdminApp.java | 4 +- .../impl/EventRaceStatesJsonGetServlet.java | 2 +- .../impl/LeaderboardGroupJsonGetServlet.java | 4 +- .../impl/LeaderboardJsonGetServlet.java | 4 +- .../RegattaAndRaceDataJsonGetServlet.java | 4 +- .../gateway/impl/WindJsonGetServlet.java | 4 +- .../rc/MarkPositionsJsonExportServlet.java | 2 +- .../jaxrs/AbstractSailingServerResource.java | 4 +- .../api/DefaultWindTrackJsonSerializer.java | 2 +- .../jaxrs/api/LeaderboardGroupsResource.java | 4 +- .../jaxrs/api/LeaderboardsResource.java | 4 +- .../gateway/jaxrs/api/RegattasResource.java | 4 +- .../jaxrs/api/TrackedRaceJsonSerializer.java | 2 +- .../jaxrs/api/WindTrackJsonSerializer.java | 2 +- .../impl/DeviceWithTimeRangeImpl.java | 2 +- .../impl/TrackFilesImportServlet.java | 2 +- .../META-INF/MANIFEST.MF | 5 +- .../test/AbstractServerReplicationTest.java | 4 +- .../test/CompetitorReplicationTest.java | 2 +- .../test/ConnectionResetAndReconnectTest.java | 4 +- ...LeaderboardCorrectionsReplicationTest.java | 2 +- .../test/EventReplicationTest.java | 4 +- ...tialLoadReplicationObjectIdentityTest.java | 6 +-- .../test/MediaReplicationTest.java | 8 ++-- .../test/RaceLogReplicationTest.java | 2 +- .../test/RegattaReplicationTest.java | 4 +- .../replication/test/ReplicationStopTest.java | 4 +- .../test/TrackRaceReplicationTest.java | 11 +++-- .../TrackedRaceContentsReplicationTest.java | 2 +- .../impl/HasRacingEventService.java | 7 --- .../impl/MasterDataImporterMediaTest.java | 4 +- .../sailing/server/impl/MediaLibaryTest.java | 9 ++-- .../test/LeaderboardDiscardingRulesTest.java | 4 +- .../server/test/MasterDataImportTest.java | 6 +-- .../server/test/RaceLogInRaceColumnTest.java | 4 +- .../RaceLogOperationalTransformationTest.java | 2 +- .../server/test/SearchServiceTest.java | 4 +- .../server/test/WindByRaceLogTest.java | 4 +- .../impl/AbstractDataRetriever.java | 2 +- .../impl/ManueverDataRetriever.java | 2 +- .../RouteConverterGPSFixImporterImpl.java | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../server/OperationExecutionListener.java | 5 -- .../sailing/server/RacingEventService.java | 13 ++--- .../com/sap/sailing/server/Replicator.java | 2 + .../LeaderboardSearchResultBaseRanker.java | 2 +- .../sap/sailing/server/impl/MediaLibrary.java | 2 +- .../server/impl/RaceLogScoringReplicator.java | 2 +- .../server/impl/RacingEventServiceImpl.java | 19 ++++++-- .../server/masterdata/DummyTrackedRace.java | 2 +- .../CreateEvent.java | 2 +- .../UpdateEvent.java | 2 +- .../UpdateLeaderboardMaxPointsReason.java | 2 +- .../UpdateLeaderboardScoreCorrection.java | 2 +- ...ateLeaderboardScoreCorrectionMetadata.java | 2 +- .../UpdateRaceTimes.java | 2 +- .../sailing/simulator/test/SimulatorTest.java | 8 ++-- .../sailing/simulator/test/TreeGrowTest.java | 8 ++-- .../test/WindFieldGeneratorTest.java | 8 ++-- .../test/util/PathGenerator1TurnerEval.java | 4 +- .../simulator/impl/PathGenerator1Turner.java | 4 +- .../impl/PathGenerator1TurnerLeftDirect.java | 4 +- .../impl/PathGenerator1TurnerRightDirect.java | 4 +- .../simulator/impl/PathGeneratorDijkstra.java | 4 +- .../impl/PathGeneratorDynProgForward.java | 4 +- .../PathGeneratorOpportunistEuclidian.java | 4 +- .../impl/PathGeneratorOpportunistVMG.java | 4 +- .../simulator/impl/PathGeneratorTracTrac.java | 2 +- .../impl/PathGeneratorTreeGrowWind.java | 4 +- .../sap/sailing/simulator/impl/PathImpl.java | 4 +- .../simulator/impl/TimedPositionImpl.java | 2 +- .../impl/TimedPositionWithSpeedImpl.java | 2 +- .../impl/TimedPositionWithSpeedSimple.java | 2 +- .../windfield/WindFieldGenerator.java | 4 +- .../impl/WindFieldGeneratorBlastImpl.java | 4 +- .../impl/WindFieldGeneratorCombined.java | 4 +- .../impl/WindFieldGeneratorImpl.java | 4 +- .../impl/WindFieldGeneratorMeasured.java | 4 +- .../WindFieldGeneratorOscillationImpl.java | 4 +- .../velum/resultimport/test/ParserTest.java | 4 +- .../sailing/velum/resultimport/CsvParser.java | 2 +- .../velum/resultimport/CsvParserFactory.java | 2 +- .../impl/CsvParserFactoryImpl.java | 2 +- .../resultimport/impl/CsvParserImpl.java | 2 +- .../impl/ScoreCorrectionProviderImpl.java | 2 +- .../sap/sailing/xmlexport/ExportAction.java | 2 +- .../sailing/xmlexport/LeaderboardData.java | 8 ++-- .../xrr/resultimport/test/ParserTest.java | 4 +- .../impl/ScoreCorrectionProviderImpl.java | 2 +- .../xrr/resultimport/impl/XRRParserUtil.java | 4 +- .../src/com/sap/sse/common}/BuildVersion.java | 2 +- .../src/com/sap/sse}/common/Duration.java | 4 +- .../src/com/sap/sse}/common/TimePoint.java | 2 +- .../src/com/sap/sse}/common/WithID.java | 2 +- .../sse}/common/impl/AbstractTimePoint.java | 6 +-- .../common/impl/MillisecondsDurationImpl.java | 4 +- .../common/impl/MillisecondsTimePoint.java | 2 +- .../common/impl/SerializableComparator.java | 2 +- .../.classpath | 0 .../.gitignore | 0 .../.project | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 0 .../.settings/org.eclipse.pde.core.prefs | 0 .../META-INF/MANIFEST.MF | 8 +--- .../WEB-INF/web.xml | 0 .../build.properties | 0 .../pom.xml | 2 +- .../OperationExecutionListener.java | 8 ++++ .../server/replication/Replicable.java | 35 ++++++++++++-- .../replication/ReplicationFactory.java | 0 .../ReplicationMasterDescriptor.java | 0 .../replication/ReplicationService.java | 4 +- .../server/replication/impl/Activator.java | 0 .../replication/impl/HasReplicable.java | 7 +++ ...bjectInputStreamResolvingAgainstCache.java | 0 .../impl/RabbitInputStreamProvider.java | 0 .../replication/impl/RabbitOutputStream.java | 6 +-- .../replication/impl/ReplicaDescriptor.java | 0 .../impl/ReplicationFactoryImpl.java | 0 .../impl/ReplicationInstancesManager.java | 16 +++---- .../impl/ReplicationMasterDescriptorImpl.java | 2 +- .../impl/ReplicationServiceImpl.java | 48 +++++++++---------- .../replication/impl/ReplicationServlet.java | 0 .../server/replication/impl/Replicator.java | 28 +++++------ java/pom.xml | 2 +- .../app/ui/activities/LaunchActivity.java | 4 +- .../app/data/OfflineDataManager.java | 4 +- .../racecommittee/app/domain/ManagedRace.java | 2 +- .../app/ui/activities/WindActivity.java | 2 +- .../racelist/RaceListDataTypeRace.java | 2 +- .../app/ui/fragments/RaceInfoFragment.java | 2 +- .../dialogs/AbortModeSelectionDialog.java | 4 +- .../dialogs/PositioningFragment.java | 2 +- .../dialogs/ProtestTimeDialogFragment.java | 4 +- .../dialogs/RaceFinishedTimeDialog.java | 4 +- .../dialogs/RaceFinishingTimeDialog.java | 4 +- .../coursedesign/ByMapCourseDesignDialog.java | 2 +- .../ByNameCourseDesignDialog.java | 2 +- .../coursedesign/ESSCourseDesignDialog.java | 2 +- .../RaceChooseGateLaunchTimesDialog.java | 2 +- .../RaceChoosePathFinderDialog.java | 2 +- .../RaceChooseStartModeDialog.java | 2 +- .../raceinfo/BaseRaceInfoRaceFragment.java | 4 +- .../raceinfo/SetStartTimeRaceFragment.java | 4 +- .../finished/BaseFinishedRaceFragment.java | 2 +- .../finished/ESSFinishedRaceFragment.java | 2 +- .../finishing/BaseFinishingRaceFragment.java | 4 +- .../finishing/ESSFinishingRaceFragment.java | 4 +- .../running/BaseRunningRaceFragment.java | 4 +- .../running/ESSRunningRaceFragment.java | 2 +- .../BaseStartphaseRaceFragment.java | 4 +- .../startphase/ESSStartphaseRaceFragment.java | 4 +- .../RRS26StartphaseRaceFragment.java | 4 +- .../racecommittee/app/utils/TimeUtils.java | 4 +- 637 files changed, 1037 insertions(+), 990 deletions(-) delete mode 100755 java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/HasRacingEventService.java delete mode 100755 java/com.sap.sailing.server/src/com/sap/sailing/server/OperationExecutionListener.java rename java/{com.sap.sailing.domain/src/com/sap/sailing/util => com.sap.sse.common/src/com/sap/sse/common}/BuildVersion.java (93%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/Duration.java (90%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/TimePoint.java (88%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/WithID.java (77%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/impl/AbstractTimePoint.java (95%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/impl/MillisecondsDurationImpl.java (96%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/impl/MillisecondsTimePoint.java (90%) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain => com.sap.sse.common/src/com/sap/sse}/common/impl/SerializableComparator.java (73%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/.classpath (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/.gitignore (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/.project (88%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/.settings/org.eclipse.jdt.core.prefs (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/.settings/org.eclipse.pde.core.prefs (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/META-INF/MANIFEST.MF (76%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/WEB-INF/web.xml (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/build.properties (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/pom.xml (86%) create mode 100755 java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/Replicable.java (62%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/ReplicationFactory.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/ReplicationService.java (90%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/Activator.java (100%) create mode 100755 java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java (96%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java (85%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java (97%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java (91%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java (100%) rename java/{com.sap.sailing.server.replication => com.sap.sse.replication}/src/com/sap/sailing/server/replication/impl/Replicator.java (88%) diff --git a/java/com.sap.sailing.autoload/META-INF/MANIFEST.MF b/java/com.sap.sailing.autoload/META-INF/MANIFEST.MF index 000db87d0de..cb8d57d083b 100644 --- a/java/com.sap.sailing.autoload/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.autoload/META-INF/MANIFEST.MF @@ -11,12 +11,13 @@ Import-Package: org.json.simple, org.json.simple.parser, org.osgi.framework;version="1.7.0", org.osgi.util.tracker;version="1.5.1" -Require-Bundle: com.sap.sailing.gwt.ui;bundle-version="1.0.0", - com.sap.sse.common;bundle-version="1.0.0", - com.sap.sailing.domain.shared.android;bundle-version="1.0.0", +Require-Bundle: com.sap.sailing.gwt.ui, + com.sap.sse.common, + com.sap.sailing.domain.shared.android, com.sap.sailing.domain.tractracadapter, com.sap.sailing.server, - com.sap.sailing.domain;bundle-version="1.0.0", + com.sap.sailing.domain, com.sap.sailing.domain.common, - com.sap.sailing.domain.persistence + com.sap.sailing.domain.persistence, + com.sap.sse.replication Bundle-Activator: com.sap.sailing.autoload.Activator diff --git a/java/com.sap.sailing.autoload/src/com/sap/sailing/autoload/TracTrac.java b/java/com.sap.sailing.autoload/src/com/sap/sailing/autoload/TracTrac.java index 5f907ea21c9..2aad18ccf18 100644 --- a/java/com.sap.sailing.autoload/src/com/sap/sailing/autoload/TracTrac.java +++ b/java/com.sap.sailing.autoload/src/com/sap/sailing/autoload/TracTrac.java @@ -16,7 +16,6 @@ import org.osgi.util.tracker.ServiceTracker; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; import com.sap.sailing.domain.tracking.RaceTracker; import com.sap.sailing.domain.tracking.TrackerManager; @@ -27,6 +26,7 @@ import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants; import com.sap.sailing.gwt.ui.shared.TracTracRaceRecordDTO; import com.sap.sailing.server.RacingEventService; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Auto load TracTrac races from a parameter called tractrac.autoload.json_urls. This diff --git a/java/com.sap.sailing.barbados.resultimport.test/src/com/sap/sailing/barbados/resultimport/test/BarbadosResultImportTest.java b/java/com.sap.sailing.barbados.resultimport.test/src/com/sap/sailing/barbados/resultimport/test/BarbadosResultImportTest.java index 67eb041fbdf..5467c11f134 100755 --- a/java/com.sap.sailing.barbados.resultimport.test/src/com/sap/sailing/barbados/resultimport/test/BarbadosResultImportTest.java +++ b/java/com.sap.sailing.barbados.resultimport.test/src/com/sap/sailing/barbados/resultimport/test/BarbadosResultImportTest.java @@ -26,13 +26,13 @@ import com.sap.sailing.barbados.resultimport.impl.ScoreCorrectionProviderImpl; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class BarbadosResultImportTest { private static final MillisecondsTimePoint NOW = MillisecondsTimePoint.now(); diff --git a/java/com.sap.sailing.barbados.resultimport/src/com/sap/sailing/barbados/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.barbados.resultimport/src/com/sap/sailing/barbados/resultimport/impl/ScoreCorrectionProviderImpl.java index e662784cc3c..0f3c5a4aaea 100644 --- a/java/com.sap.sailing.barbados.resultimport/src/com/sap/sailing/barbados/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.barbados.resultimport/src/com/sap/sailing/barbados/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -8,12 +8,12 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.sap.sailing.domain.common.RegattaScoreCorrections; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.AbstractDocumentBasedScoreCorrectionProvider; import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl extends AbstractDocumentBasedScoreCorrectionProvider { diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java index 3c846bf6c44..bb8be89c260 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java @@ -3,8 +3,8 @@ package com.sap.sailing.datamining.impl.data; import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; +import com.sap.sse.common.TimePoint; public class TrackedLegOfCompetitorWithContext implements HasTrackedLegOfCompetitorContext { diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegWithContext.java index 01809721e6f..7ba9c7c6516 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegWithContext.java @@ -4,10 +4,10 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackedLegWithContext implements HasTrackedLegContext { diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java index 774c73940bb..c61c70a0df3 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; public class TrackedRaceWithContext implements HasTrackedRaceContext { diff --git a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationImportTest.java b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationImportTest.java index ea668f4854d..830aa4b0241 100755 --- a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationImportTest.java +++ b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationImportTest.java @@ -15,7 +15,7 @@ import org.xml.sax.SAXException; import com.sap.sailing.declination.Declination; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DeclinationImportTest extends AbstractDeclinationTest { @Test diff --git a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java index c897ba0486b..9b9aa589f19 100755 --- a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java +++ b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java @@ -15,7 +15,7 @@ import com.sap.sailing.declination.DeclinationService; import com.sap.sailing.declination.impl.DeclinationServiceImpl; import com.sap.sailing.domain.common.impl.CentralAngleDistance; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DeclinationServiceTest extends AbstractDeclinationTest { private DeclinationService service; diff --git a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationStoreTest.java b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationStoreTest.java index 0b84e59bae3..98087aff3ae 100755 --- a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationStoreTest.java +++ b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationStoreTest.java @@ -32,11 +32,11 @@ import com.sap.sailing.declination.impl.DeclinationRecordImpl; import com.sap.sailing.declination.impl.DeclinationStore; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.quadtree.QuadTree; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DeclinationStoreTest extends AbstractDeclinationTest { private DeclinationStore store; diff --git a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/SimpleDeclinationTest.java b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/SimpleDeclinationTest.java index 6851293a84b..403c64cb46c 100755 --- a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/SimpleDeclinationTest.java +++ b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/SimpleDeclinationTest.java @@ -12,9 +12,9 @@ import org.xml.sax.SAXException; import com.sap.sailing.declination.Declination; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SimpleDeclinationTest extends AbstractDeclinationTest { @Test diff --git a/java/com.sap.sailing.declination/META-INF/MANIFEST.MF b/java/com.sap.sailing.declination/META-INF/MANIFEST.MF index 61d334496f0..304ba0e53eb 100644 --- a/java/com.sap.sailing.declination/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.declination/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Require-Bundle: com.sap.sailing.domain, - com.sap.sailing.domain.common + com.sap.sailing.domain.common, + com.sap.sse.common Export-Package: com.sap.sailing.declination Import-Package: com.sap.sailing.domain.common, com.sap.sailing.domain.common.impl, diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/Declination.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/Declination.java index 9de3dcba313..df53c7cce35 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/Declination.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/Declination.java @@ -3,7 +3,7 @@ package com.sap.sailing.declination; import com.sap.sailing.domain.base.Timed; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * Tells the magnetic declination for a position and a given point in time together with an anticipated annual change. diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/DeclinationService.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/DeclinationService.java index 8bd18565c10..63081de7da8 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/DeclinationService.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/DeclinationService.java @@ -8,8 +8,8 @@ import com.sap.sailing.declination.impl.NOAAImporter; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Mile; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.CentralAngleDistance; +import com.sap.sse.common.TimePoint; public interface DeclinationService { /** diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationRecordImpl.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationRecordImpl.java index 5fdf0e97491..62b4e4801ce 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationRecordImpl.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationRecordImpl.java @@ -3,8 +3,8 @@ package com.sap.sailing.declination.impl; import com.sap.sailing.declination.Declination; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sse.common.TimePoint; public class DeclinationRecordImpl implements Declination { private static final long serialVersionUID = 6918630656182340186L; diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationServiceImpl.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationServiceImpl.java index f367854c858..257cd93d293 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationServiceImpl.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationServiceImpl.java @@ -11,8 +11,8 @@ import com.sap.sailing.declination.Declination; import com.sap.sailing.declination.DeclinationService; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.quadtree.QuadTree; +import com.sap.sse.common.TimePoint; public class DeclinationServiceImpl implements DeclinationService { private final Distance defaultMaxDistance; diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationStore.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationStore.java index cab34d79b03..29f68ff783f 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationStore.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/DeclinationStore.java @@ -21,11 +21,11 @@ import org.xml.sax.SAXException; import com.sap.sailing.declination.Declination; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.quadtree.QuadTree; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Manages resources in which declinations can be stored for off-line look-up. Time resolution is diff --git a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/NOAAImporter.java b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/NOAAImporter.java index 86fd5ac0043..bf74003907b 100755 --- a/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/NOAAImporter.java +++ b/java/com.sap.sailing.declination/src/com/sap/sailing/declination/impl/NOAAImporter.java @@ -20,8 +20,8 @@ import org.xml.sax.SAXException; import com.sap.sailing.declination.Declination; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sse.common.TimePoint; /** * Imports magnetic declination data for earth from NOAA (http://www.ngdc.noaa.gov) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java index 1e5e04aca31..7ba1e76b252 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.common; import com.sap.sailing.domain.common.impl.NauticalMileDistance; +import com.sap.sse.common.TimePoint; public abstract class AbstractSpeedImpl implements Speed { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DurationFormatter.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DurationFormatter.java index 323c2675340..4f4e7bf5654 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DurationFormatter.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DurationFormatter.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.common; +import com.sap.sse.common.Duration; + /** * Provides methods to format a {@link Duration}. * diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/ScoreCorrectionProvider.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/ScoreCorrectionProvider.java index 4e3b966c2ae..d273c8a27c1 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/ScoreCorrectionProvider.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/ScoreCorrectionProvider.java @@ -4,6 +4,7 @@ import java.util.Map; import java.util.Set; import com.sap.sse.common.Named; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java index a8944893e70..46d505e84e0 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.common; import java.io.Serializable; +import com.sap.sse.common.TimePoint; import com.sap.sse.datamining.shared.Unit; import com.sap.sse.datamining.shared.annotations.Statistic; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java index 1d77e1c5df6..afda577f31a 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.common; +import com.sap.sse.common.TimePoint; + public interface SpeedWithBearing extends Speed { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimeRange.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimeRange.java index 600474436a5..d79a0905a9e 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimeRange.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimeRange.java @@ -2,6 +2,9 @@ package com.sap.sailing.domain.common; import java.io.Serializable; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; + public interface TimeRange extends Comparable, Serializable { /** * @return {@code null}, if the timepoint is at the beginning of time diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/ConfidenceFactory.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/ConfidenceFactory.java index ad160f7c995..459580bc935 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/ConfidenceFactory.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/ConfidenceFactory.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.common.confidence; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.impl.ConfidenceBasedAveragerFactoryImpl; +import com.sap.sse.common.TimePoint; public interface ConfidenceFactory { ConfidenceFactory INSTANCE = new ConfidenceBasedAveragerFactoryImpl(); diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/HasConfidence.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/HasConfidence.java index c0f51b2f627..88c67b29aa3 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/HasConfidence.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/HasConfidence.java @@ -3,8 +3,8 @@ package com.sap.sailing.domain.common.confidence; import java.io.Serializable; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.scalablevalue.ScalableValue; +import com.sap.sse.common.TimePoint; /** * Some values, particularly those obtained from real-world measurements, are not always accurate. Some values are diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ConfidenceBasedAveragerFactoryImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ConfidenceBasedAveragerFactoryImpl.java index a477f3b19cc..2c33b83dca0 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ConfidenceBasedAveragerFactoryImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ConfidenceBasedAveragerFactoryImpl.java @@ -2,10 +2,10 @@ package com.sap.sailing.domain.common.confidence.impl; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager; import com.sap.sailing.domain.common.confidence.ConfidenceFactory; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; public class ConfidenceBasedAveragerFactoryImpl implements ConfidenceFactory { @Override diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ExponentialTimeDifferenceWeigher.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ExponentialTimeDifferenceWeigher.java index cd2469faed3..cfb057d2335 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ExponentialTimeDifferenceWeigher.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/ExponentialTimeDifferenceWeigher.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.common.confidence.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; /** * The weigher computes an exponentially-decreasing weight based on the time difference of two {@link TimePoint}s. diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicSquaredTimeDifferenceWeigher.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicSquaredTimeDifferenceWeigher.java index 276b2078a47..2f03208476b 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicSquaredTimeDifferenceWeigher.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicSquaredTimeDifferenceWeigher.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.common.confidence.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; public class HyperbolicSquaredTimeDifferenceWeigher implements Weigher { private static final long serialVersionUID = 4378168079868145134L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicTimeDifferenceWeigher.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicTimeDifferenceWeigher.java index 43a9dde63f5..bf1d293ef2b 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicTimeDifferenceWeigher.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/HyperbolicTimeDifferenceWeigher.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.common.confidence.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; public class HyperbolicTimeDifferenceWeigher implements Weigher { private static final long serialVersionUID = 4378168079868145134L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/PositionAndTimePointWeigher.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/PositionAndTimePointWeigher.java index 1af891c679b..a296fb2692f 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/PositionAndTimePointWeigher.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/confidence/impl/PositionAndTimePointWeigher.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.common.confidence.impl; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.ConfidenceFactory; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java index 54710cd4c22..c40b54166f9 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.common.dto; import java.io.Serializable; import java.util.List; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.Tack; +import com.sap.sse.common.Duration; /** * Holds a single competitor's scoring details for a single race. It may optionally contain diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/TrackedRaceStatisticsDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/TrackedRaceStatisticsDTO.java index 01903a448de..852e97b3f90 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/TrackedRaceStatisticsDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/TrackedRaceStatisticsDTO.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.common.dto; import java.io.Serializable; -import com.sap.sailing.domain.common.Duration; +import com.sap.sse.common.Duration; public class TrackedRaceStatisticsDTO implements Serializable { private static final long serialVersionUID = -2123085927945474642L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedWithAbstractBearingImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedWithAbstractBearingImpl.java index c58a38dc21d..27577a2db47 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedWithAbstractBearingImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedWithAbstractBearingImpl.java @@ -7,7 +7,8 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class AbstractSpeedWithAbstractBearingImpl extends AbstractSpeedImpl implements SpeedWithBearing { private static final long serialVersionUID = 6136100417593538013L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TimeRangeImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TimeRangeImpl.java index 943f337b459..a091604b75f 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TimeRangeImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TimeRangeImpl.java @@ -1,9 +1,10 @@ package com.sap.sailing.domain.common.impl; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TimeRangeImpl extends Util.Pair implements TimeRange { public static final TimePoint BeginningOfTime = new MillisecondsTimePoint(Long.MIN_VALUE); diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaTrack.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaTrack.java index dec8198b14c..132896d87fd 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaTrack.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaTrack.java @@ -5,9 +5,9 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; /** * See http://my.opera.com/core/blog/2010/03/03/everything-you-need-to-know-about-html5-video-and-audio-2 diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaUtil.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaUtil.java index 985611407c2..75ab0e04765 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaUtil.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/media/MediaUtil.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.common.media; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class MediaUtil { diff --git a/java/com.sap.sailing.domain.deckmanadapter.test/src/com/sap/sailing/domain/deckmanadapter/test/TestDeckmanLogfileParsing.java b/java/com.sap.sailing.domain.deckmanadapter.test/src/com/sap/sailing/domain/deckmanadapter/test/TestDeckmanLogfileParsing.java index 03df2067fac..5db51176bc6 100755 --- a/java/com.sap.sailing.domain.deckmanadapter.test/src/com/sap/sailing/domain/deckmanadapter/test/TestDeckmanLogfileParsing.java +++ b/java/com.sap.sailing.domain.deckmanadapter.test/src/com/sap/sailing/domain/deckmanadapter/test/TestDeckmanLogfileParsing.java @@ -14,13 +14,13 @@ import java.util.Iterator; import org.junit.Test; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.deckmanadapter.DeckmanAdapter; import com.sap.sailing.domain.deckmanadapter.DeckmanAdapterFactory; import com.sap.sailing.domain.deckmanadapter.Record; import com.sap.sailing.domain.deckmanadapter.impl.FieldType; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public class TestDeckmanLogfileParsing { private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); diff --git a/java/com.sap.sailing.domain.deckmanadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.deckmanadapter/META-INF/MANIFEST.MF index eb76c95dbfc..b78efbfdc13 100644 --- a/java/com.sap.sailing.domain.deckmanadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.deckmanadapter/META-INF/MANIFEST.MF @@ -8,6 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.common, com.sap.sailing.domain.shared.android, - com.sap.sailing.server.trackfiles + com.sap.sailing.server.trackfiles, + com.sap.sse.common Import-Package: org.osgi.framework Bundle-Activator: com.sap.sailing.domain.deckmanadapter.impl.Activator diff --git a/java/com.sap.sailing.domain.deckmanadapter/src/com/sap/sailing/domain/deckmanadapter/Record.java b/java/com.sap.sailing.domain.deckmanadapter/src/com/sap/sailing/domain/deckmanadapter/Record.java index 52192bf8272..ef8f0c54411 100755 --- a/java/com.sap.sailing.domain.deckmanadapter/src/com/sap/sailing/domain/deckmanadapter/Record.java +++ b/java/com.sap.sailing.domain.deckmanadapter/src/com/sap/sailing/domain/deckmanadapter/Record.java @@ -8,17 +8,17 @@ import java.util.Map; import com.sap.sailing.domain.base.Timed; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.deckmanadapter.impl.FieldType; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.Positioned; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class Record implements Timed, Positioned { private static final long serialVersionUID = -7939775022865795801L; diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactoryTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactoryTest.java index 86b74420709..b88c57d41c4 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactoryTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactoryTest.java @@ -13,12 +13,12 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.Timeout; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.datatypes.AntHrm; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; import com.sap.sailing.domain.igtimiadapter.datatypes.GpsLatLong; import com.sap.sailing.domain.igtimiadapter.datatypes.GpsQualitySatCount; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class FixFactoryTest { @Rule public Timeout AbstractTracTracLiveTestTimeout = new Timeout(2 * 60 * 1000); diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WindReceiverTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WindReceiverTest.java index 5f1ff056343..34c518ced19 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WindReceiverTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WindReceiverTest.java @@ -15,10 +15,8 @@ import org.junit.rules.Timeout; import com.sap.sailing.declination.DeclinationService; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiWindListener; import com.sap.sailing.domain.igtimiadapter.datatypes.AWA; import com.sap.sailing.domain.igtimiadapter.datatypes.AWS; @@ -28,6 +26,8 @@ import com.sap.sailing.domain.igtimiadapter.datatypes.HDG; import com.sap.sailing.domain.igtimiadapter.datatypes.SOG; import com.sap.sailing.domain.igtimiadapter.shared.IgtimiWindReceiver; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindReceiverTest { @Rule public Timeout AbstractTracTracLiveTestTimeout = new Timeout(2 * 60 * 1000); diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/BasicIgtimiAdapterTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/BasicIgtimiAdapterTest.java index 5d32adaf664..8a0bf0238a7 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/BasicIgtimiAdapterTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/BasicIgtimiAdapterTest.java @@ -19,8 +19,6 @@ import org.apache.http.client.ClientProtocolException; import org.json.simple.parser.ParseException; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.DataAccessWindow; import com.sap.sailing.domain.igtimiadapter.Group; import com.sap.sailing.domain.igtimiadapter.Permission; @@ -31,7 +29,9 @@ import com.sap.sailing.domain.igtimiadapter.datatypes.AWA; import com.sap.sailing.domain.igtimiadapter.datatypes.AWS; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; import com.sap.sailing.domain.igtimiadapter.datatypes.Type; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class BasicIgtimiAdapterTest extends AbstractTestWithIgtimiConnection { @Test diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/IgtimiFixTrackTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/IgtimiFixTrackTest.java index 0dd2f8decd7..4e9c277b5ec 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/IgtimiFixTrackTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/test/IgtimiFixTrackTest.java @@ -16,8 +16,6 @@ import java.util.logging.Logger; import org.apache.http.client.ClientProtocolException; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.DataAccessWindow; import com.sap.sailing.domain.igtimiadapter.Permission; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; @@ -26,7 +24,9 @@ import com.sap.sailing.domain.tracking.DynamicTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.Track; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Igtimi fixes come as isolated single fixes from separate sensors, and even if they are attached to the same device, diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/HasStartAndEndTime.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/HasStartAndEndTime.java index 0d6d276a79d..faa61721a37 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/HasStartAndEndTime.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/HasStartAndEndTime.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.igtimiadapter; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface HasStartAndEndTime { TimePoint getEndTime(); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnection.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnection.java index 8e00cf10413..a7dab20bb49 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnection.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnection.java @@ -6,13 +6,13 @@ import java.util.Map; import org.apache.http.client.ClientProtocolException; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; import com.sap.sailing.domain.igtimiadapter.datatypes.Type; import com.sap.sailing.domain.tracking.DynamicTrack; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.Track; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; /** * A connection to the Igtimi system for one {@link Client} and one {@link Account}. diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWA.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWA.java index 37da04adaf7..7795cb43747 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWA.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWA.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Apparent wind angle, relative to the device's or vessel's orientation, in degrees from 0 to 360, with values 180-360 diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWS.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWS.java index a5254a2e9e2..3772bc63d3a 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWS.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AWS.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Apparent wind speed, relative to the inertial system on which the wind speed was measured. diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntCbst.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntCbst.java index 1d7e41c626f..8db7c895991 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntCbst.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntCbst.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Cadence value measured by an ANT sensor diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntHrm.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntHrm.java index 2feadfc9193..b97ea5800d7 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntHrm.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/AntHrm.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * A heart rate measurement received through a sensor supporting the ANT protocol diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/BatteryLevel.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/BatteryLevel.java index 2aea3bb590a..973b91c1fa5 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/BatteryLevel.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/BatteryLevel.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class BatteryLevel extends Fix { private static final long serialVersionUID = -8499201867081319088L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/COG.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/COG.java index 8227d5af21a..ba9eee2b2f8 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/COG.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/COG.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Course over ground diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/File.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/File.java index b28d39dc5a5..7b0cff0812e 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/File.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/File.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class File extends Fix { private static final long serialVersionUID = 7580174784400926003L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/Fix.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/Fix.java index 57e582e9a7d..b0ad3731442 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/Fix.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/Fix.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public abstract class Fix implements Timed { private static final long serialVersionUID = -486253194440558670L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsAltitude.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsAltitude.java index 5ae71955afd..798b2a74618 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsAltitude.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsAltitude.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class GpsAltitude extends Fix { private static final long serialVersionUID = -5740764665236002412L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsLatLong.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsLatLong.java index 1b0f8ebc21e..bcd0b7c5ac6 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsLatLong.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsLatLong.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class GpsLatLong extends Fix { public static final String IGTIMI_ENABLE_WORKAROUND_FOR_SINGLE_DIGIT_LATITUDES = "igtimi.enableWorkaroundForSingleDigitLatitudes"; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityHdop.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityHdop.java index 2c14ac6687d..2ccbe2881cd 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityHdop.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityHdop.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class GpsQualityHdop extends Fix { private static final long serialVersionUID = -5319766127405258823L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityIndicator.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityIndicator.java index e6e722b2f11..f93413ddc4c 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityIndicator.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualityIndicator.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; public class GpsQualityIndicator extends Fix { private static final long serialVersionUID = 1112428061064399194L; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualitySatCount.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualitySatCount.java index 3c1c85fb5ad..c8681814d44 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualitySatCount.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/GpsQualitySatCount.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * For YachtBot and WindBot devices, this lists the number of satellites the device currently uses to determine its diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDG.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDG.java index 953d40a93a4..5bb7b85660a 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDG.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDG.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * True heading; the difference to {@link HDGM} is the local declination at the point in time the measurement was made diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDGM.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDGM.java index b739c001c66..a4f29b4a95e 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDGM.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/HDGM.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Magnetic heading diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/SOG.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/SOG.java index a6574ce7c81..7bdcd23689b 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/SOG.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/SOG.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Speed over ground expressed in kilometers per hour diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/STW.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/STW.java index a4b0bb17e21..5201fbc48d0 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/STW.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/datatypes/STW.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.igtimiadapter.datatypes; import java.util.Map; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.igtimiadapter.IgtimiFixReceiver; import com.sap.sailing.domain.igtimiadapter.Sensor; +import com.sap.sse.common.TimePoint; /** * Speed through water expressed in kilometers per hour. diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowDeserializer.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowDeserializer.java index 1b36eadb4d7..2678f29ae1c 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowDeserializer.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowDeserializer.java @@ -4,10 +4,10 @@ import java.util.logging.Logger; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.DataAccessWindow; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.SecurityEntity; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DataAccessWindowDeserializer extends HasPermissionsDeserializer { private static final Logger logger = Logger.getLogger(DataAccessWindowDeserializer.class.getName()); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowImpl.java index 9d174d745f0..2a898f87a83 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/DataAccessWindowImpl.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.igtimiadapter.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.DataAccessWindow; import com.sap.sailing.domain.igtimiadapter.Permission; import com.sap.sailing.domain.igtimiadapter.SecurityEntity; +import com.sap.sse.common.TimePoint; public class DataAccessWindowImpl extends HasIdImpl implements DataAccessWindow { private final TimePoint startTime; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactory.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactory.java index 9309f0cc486..71700a8136e 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactory.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/FixFactory.java @@ -13,12 +13,12 @@ import java.util.logging.Logger; import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.Sensor; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; import com.sap.sailing.domain.igtimiadapter.datatypes.Type; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class FixFactory { private static final Logger logger = Logger.getLogger(FixFactory.class.getName()); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java index 77fa0d454e2..be207056dc7 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java @@ -43,7 +43,6 @@ import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.Account; import com.sap.sailing.domain.igtimiadapter.Client; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; @@ -52,6 +51,7 @@ import com.sap.sailing.domain.igtimiadapter.Permission; import com.sap.sailing.domain.igtimiadapter.datatypes.Type; import com.sap.sailing.domain.igtimiadapter.persistence.DomainObjectFactory; import com.sap.sailing.domain.igtimiadapter.persistence.MongoObjectFactory; +import com.sap.sse.common.TimePoint; public class IgtimiConnectionFactoryImpl implements IgtimiConnectionFactory { private static final Logger logger = Logger.getLogger(IgtimiConnectionFactoryImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionImpl.java index c5d92fc3eb7..d77a450e4cd 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionImpl.java @@ -19,9 +19,6 @@ import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; import com.sap.sailing.declination.DeclinationService; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.Account; import com.sap.sailing.domain.igtimiadapter.BulkFixReceiver; import com.sap.sailing.domain.igtimiadapter.DataAccessWindow; @@ -42,7 +39,10 @@ import com.sap.sailing.domain.tracking.DynamicTrack; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.DynamicTrackImpl; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class IgtimiConnectionImpl implements IgtimiConnection { private static final Logger logger = Logger.getLogger(IgtimiConnectionImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java index e79a3b040b0..a89a0160a90 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java @@ -10,8 +10,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.sap.sailing.declination.DeclinationService; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.Account; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.IgtimiConnectionFactory; @@ -20,7 +18,9 @@ import com.sap.sailing.domain.igtimiadapter.shared.IgtimiWindReceiver; import com.sap.sailing.domain.tracking.AbstractWindTracker; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.WindTracker; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class IgtimiWindTracker extends AbstractWindTracker implements WindTracker { private static final Logger logger = Logger.getLogger(IgtimiWindTracker.class.getName()); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceDeserializer.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceDeserializer.java index 1389a344e0e..380766e91c2 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceDeserializer.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceDeserializer.java @@ -3,9 +3,9 @@ package com.sap.sailing.domain.igtimiadapter.impl; import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.Resource; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ResourceDeserializer extends HasPermissionsDeserializer { public Resource createResourceFromJson(JSONObject resourceJson, IgtimiConnection conn) { diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceImpl.java index 409f190ad3e..95b9497bbf0 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ResourceImpl.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.igtimiadapter.impl; import java.util.ArrayList; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.Permission; import com.sap.sailing.domain.igtimiadapter.Resource; import com.sap.sailing.domain.igtimiadapter.datatypes.Type; +import com.sap.sse.common.TimePoint; public class ResourceImpl implements Resource { private final long id; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionDeserializer.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionDeserializer.java index d7dee5f6e7e..bb4415b3286 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionDeserializer.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionDeserializer.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.igtimiadapter.impl; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.Session; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SessionDeserializer extends HasPermissionsDeserializer { public Session createResourceFromJson(JSONObject sessionJson, IgtimiConnection conn) { diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionImpl.java index 1d22b0c6d8b..3369253f2da 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/SessionImpl.java @@ -5,11 +5,11 @@ import java.io.IOException; import org.apache.http.client.ClientProtocolException; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; import com.sap.sailing.domain.igtimiadapter.Permission; import com.sap.sailing.domain.igtimiadapter.Session; import com.sap.sailing.domain.igtimiadapter.User; +import com.sap.sse.common.TimePoint; public class SessionImpl extends HasIdImpl implements Session { private final long ownerId; diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/shared/IgtimiWindReceiver.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/shared/IgtimiWindReceiver.java index fc87e4312cf..30da1b03e9d 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/shared/IgtimiWindReceiver.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/shared/IgtimiWindReceiver.java @@ -17,7 +17,6 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.scalablevalue.ScalableValue; import com.sap.sailing.domain.common.scalablevalue.impl.ScalableBearing; @@ -43,6 +42,7 @@ import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindListener; import com.sap.sailing.domain.tracking.impl.DynamicTrackImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketConnectionManager.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketConnectionManager.java index 45f0fd54f7b..b544b870ed5 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketConnectionManager.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketConnectionManager.java @@ -19,15 +19,15 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.igtimiadapter.Account; import com.sap.sailing.domain.igtimiadapter.BulkFixReceiver; import com.sap.sailing.domain.igtimiadapter.LiveDataConnection; import com.sap.sailing.domain.igtimiadapter.datatypes.Fix; import com.sap.sailing.domain.igtimiadapter.impl.FixFactory; import com.sap.sailing.domain.igtimiadapter.impl.IgtimiConnectionFactoryImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WebSocketConnectionManager extends WebSocketAdapter implements LiveDataConnection { private static final Logger logger = Logger.getLogger(WebSocketConnectionManager.class.getName()); 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 26cf98632f2..f4b9e636b93 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 @@ -70,7 +70,6 @@ import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; @@ -78,7 +77,6 @@ import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherTyp import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.RGBColor; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.common.impl.WindSourceImpl; @@ -158,7 +156,9 @@ import com.sap.sailing.server.gateway.deserialization.impl.CompetitorJsonDeseria import com.sap.sailing.server.gateway.deserialization.impl.DeviceConfigurationJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.deserialization.impl.RegattaConfigurationJsonDeserializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DomainObjectFactoryImpl implements DomainObjectFactory { private static final Logger logger = Logger.getLogger(DomainObjectFactoryImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index ce703ddb5f2..c4bd85e6e2c 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -46,11 +46,8 @@ import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; import com.sap.sailing.domain.common.WindSource; -import com.sap.sailing.domain.common.WithID; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder; @@ -101,7 +98,10 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.DeviceConfigurationJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.RegattaConfigurationJsonSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.WithID; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class MongoObjectFactoryImpl implements MongoObjectFactory { private static Logger logger = Logger.getLogger(MongoObjectFactoryImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/DBMediaTrack.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/DBMediaTrack.java index 56a09666e68..cf4c5150547 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/DBMediaTrack.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/DBMediaTrack.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.persistence.media; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public class DBMediaTrack { diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/MediaDB.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/MediaDB.java index 9d626b7317a..3418387565c 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/MediaDB.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/MediaDB.java @@ -4,11 +4,11 @@ import java.util.Collections; import java.util.List; import java.util.Set; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; /** * Offers CRUD methods for mongo representation of media track objects. diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/impl/MediaDBImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/impl/MediaDBImpl.java index bf4a00cc382..c56a1b970f6 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/impl/MediaDBImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/media/impl/MediaDBImpl.java @@ -16,15 +16,15 @@ import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoException; import com.mongodb.WriteConcern; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; import com.sap.sailing.domain.persistence.media.MediaDB; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * MongoDB Java API examples: http://blog.rasc.ch/?p=1096 diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMongoHandlerImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMongoHandlerImpl.java index 6f768e29d1f..b095c8cca6f 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMongoHandlerImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMongoHandlerImpl.java @@ -3,7 +3,6 @@ package com.sap.sailing.domain.persistence.racelog.tracking.impl; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; @@ -11,6 +10,7 @@ import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.persistence.racelog.tracking.GPSFixMongoHandler; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; +import com.sap.sse.common.TimePoint; public class GPSFixMongoHandlerImpl implements GPSFixMongoHandler { private final MongoObjectFactoryImpl mof; diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMovingMongoHandlerImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMovingMongoHandlerImpl.java index df778585c8a..cb0ab7fb5b3 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMovingMongoHandlerImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/GPSFixMovingMongoHandlerImpl.java @@ -4,7 +4,6 @@ import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; @@ -13,6 +12,7 @@ import com.sap.sailing.domain.persistence.racelog.tracking.GPSFixMongoHandler; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; public class GPSFixMovingMongoHandlerImpl implements GPSFixMongoHandler { private final MongoObjectFactoryImpl mof; diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/MongoGPSFixStoreImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/MongoGPSFixStoreImpl.java index af5f023411b..4ef80c9e3ea 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/MongoGPSFixStoreImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/racelog/tracking/impl/MongoGPSFixStoreImpl.java @@ -16,7 +16,6 @@ import com.mongodb.DBObject; import com.mongodb.QueryBuilder; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; @@ -40,6 +39,7 @@ import com.sap.sailing.domain.racelog.tracking.analyzing.impl.DeviceMarkMappingF import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/AbstractGPSFixStoreTest.java b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/AbstractGPSFixStoreTest.java index e69b08dbcce..219bbddb183 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/AbstractGPSFixStoreTest.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/AbstractGPSFixStoreTest.java @@ -12,7 +12,6 @@ import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.persistence.racelog.tracking.impl.MongoGPSFixStoreImpl; import com.sap.sailing.domain.racelog.RaceLog; @@ -31,6 +30,7 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.gateway.deserialization.impl.DeviceAndSessionIdentifierWithGPSFixesDeserializer; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class AbstractGPSFixStoreTest { protected RacingEventService service; diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java index 72dcf5e7133..8b5a6664799 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java @@ -26,11 +26,9 @@ import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.leaderboard.impl.HighPoint; @@ -48,6 +46,8 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class CreateAndTrackWithRaceLogTest { private RacingEventService service; diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/manual/PostFixes.java b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/manual/PostFixes.java index ba4030bb612..b2e77f73d96 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/manual/PostFixes.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/manual/PostFixes.java @@ -15,7 +15,6 @@ import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiJsonHandler; import com.sap.sailing.domain.racelogtracking.test.AbstractJsonOverHttpTest; @@ -27,6 +26,7 @@ import com.sap.sailing.server.gateway.serialization.impl.DeviceAndSessionIdentif import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.GPSFixMovingNmeaDTOJsonSerializer; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PostFixes extends AbstractJsonOverHttpTest { protected static final SmartphoneImeiIdentifier device = new SmartphoneImeiIdentifier("a"); diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java index f276a4dc2d2..a7b0f8f3b59 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java @@ -27,10 +27,7 @@ import com.sap.sailing.domain.base.impl.CourseImpl; import com.sap.sailing.domain.base.impl.RaceDefinitionImpl; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; -import com.sap.sailing.domain.common.WithID; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; @@ -65,7 +62,10 @@ import com.sap.sailing.domain.tracking.RaceTracker; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.WithID; +import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.PatchFailedException; diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java index b9e53cde4e6..6169eccba58 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java @@ -23,8 +23,6 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.impl.CourseDataImpl; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotableForRaceLogTrackingException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException; @@ -56,7 +54,9 @@ import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.RaceHandle; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { private static final Logger logger = Logger.getLogger(RaceLogTrackingAdapterImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierJsonHandler.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierJsonHandler.java index 7af401b6cec..01248d6f0f3 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierJsonHandler.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierJsonHandler.java @@ -4,14 +4,14 @@ import java.util.UUID; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifier; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifierImpl; import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackFileImportDeviceIdentifierJsonHandler implements DeviceIdentifierJsonHandler { private static enum Fields {UUID, FILE_NAME, TRACK_NAME, UPLOADED_MILLIS}; diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierMongoHandler.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierMongoHandler.java index def1acea245..8aea30b8147 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierMongoHandler.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/TrackFileImportDeviceIdentifierMongoHandler.java @@ -4,12 +4,12 @@ import java.util.UUID; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifier; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifierImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class TrackFileImportDeviceIdentifierMongoHandler implements DeviceIdentifierMongoHandler { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishedTimeFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishedTimeFinderTest.java index 5bd34688cda..1350136e421 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishedTimeFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishedTimeFinderTest.java @@ -8,13 +8,13 @@ import java.util.Arrays; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder; +import com.sap.sse.common.TimePoint; public class FinishedTimeFinderTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishingTimeFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishingTimeFinderTest.java index 3b183d9b880..96a1d29d551 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishingTimeFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/FinishingTimeFinderTest.java @@ -8,13 +8,13 @@ import java.util.Arrays; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder; +import com.sap.sse.common.TimePoint; public class FinishingTimeFinderTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/IndividualRecallFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/IndividualRecallFinderTest.java index b235d5d5c38..0aa8887583d 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/IndividualRecallFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/IndividualRecallFinderTest.java @@ -8,13 +8,13 @@ import java.util.Arrays; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.analyzing.impl.IndividualRecallFinder; +import com.sap.sse.common.TimePoint; public class IndividualRecallFinderTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/ProtestStartTimeFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/ProtestStartTimeFinderTest.java index 9775c6aebe3..9a567aa29f5 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/ProtestStartTimeFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/ProtestStartTimeFinderTest.java @@ -9,12 +9,12 @@ import java.util.Arrays; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent; import com.sap.sailing.domain.racelog.analyzing.impl.ProtestStartTimeFinder; +import com.sap.sse.common.TimePoint; public class ProtestStartTimeFinderTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceLogAnalyzerTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceLogAnalyzerTest.java index 8701dd8dbc7..ea35c7b586b 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceLogAnalyzerTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceLogAnalyzerTest.java @@ -8,12 +8,12 @@ import java.util.UUID; import org.junit.Before; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class RaceLogAnalyzerTest> { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceStatusAnalyzerTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceStatusAnalyzerTest.java index 4204598a50b..b97fa3131da 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceStatusAnalyzerTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/RaceStatusAnalyzerTest.java @@ -12,8 +12,6 @@ import org.junit.Test; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -24,6 +22,8 @@ import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.analyzing.impl.RaceStatusAnalyzer; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceStatusAnalyzerTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/StartTimeFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/StartTimeFinderTest.java index 0b0b8df4b40..a7ebee86cd4 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/StartTimeFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/analyzing/test/StartTimeFinderTest.java @@ -9,12 +9,12 @@ import java.util.Arrays; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder; +import com.sap.sse.common.TimePoint; public class StartTimeFinderTest extends PassAwareRaceLogAnalyzerTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/state/test/RaceStateTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/state/test/RaceStateTest.java index 00de5b799bb..c087004a9d0 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/state/test/RaceStateTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/state/test/RaceStateTest.java @@ -20,8 +20,6 @@ import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.base.configuration.impl.EmptyRegattaConfiguration; import com.sap.sailing.domain.base.configuration.impl.RegattaConfigurationImpl; import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -38,6 +36,8 @@ import com.sap.sailing.domain.racelog.state.impl.ReadonlyRaceStateImpl; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureFactoryImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceStateTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java index dd1e57d4c92..1569f32c65b 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java @@ -9,10 +9,10 @@ import org.junit.Before; import org.junit.Test; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.impl.RaceLogEventComparator; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogEventComparatorTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventImplTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventImplTest.java index 959470e5581..5f07da24c68 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventImplTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventImplTest.java @@ -7,11 +7,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; +import com.sap.sse.common.TimePoint; public class RaceLogEventImplTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java index e60d01788fb..b58c451e4c3 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java @@ -7,8 +7,6 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -18,7 +16,9 @@ import com.sap.sailing.domain.racelog.RevokeEvent; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogRevocationTest { private RaceLog serverRaceLog; diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java index a9a05dec572..54979261b8b 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java @@ -19,8 +19,6 @@ import org.junit.Test; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; @@ -31,7 +29,9 @@ import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/SerializeRaceLogEventsTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/SerializeRaceLogEventsTest.java index 787a2696929..d513705230a 100755 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/SerializeRaceLogEventsTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/SerializeRaceLogEventsTest.java @@ -11,7 +11,6 @@ import java.io.ObjectOutputStream; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; @@ -21,6 +20,7 @@ import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; import com.sap.sailing.domain.test.AbstractLeaderboardTest; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Perform a few tests around race log and race log event serialization / deserialization diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/AbstractRaceLogTrackingTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/AbstractRaceLogTrackingTest.java index 3a42509c476..ce9d3fc2c35 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/AbstractRaceLogTrackingTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/AbstractRaceLogTrackingTest.java @@ -2,13 +2,13 @@ package com.sap.sailing.domain.racelog.tracking.analyzing.test; import org.junit.Before; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventRestoreFactory; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class AbstractRaceLogTrackingTest { diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/DeviceMappingFinderTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/DeviceMappingFinderTest.java index 9a561e23d91..f3e662e58b1 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/DeviceMappingFinderTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/tracking/analyzing/test/DeviceMappingFinderTest.java @@ -12,14 +12,14 @@ import org.junit.Test; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.impl.CompetitorImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMapping; import com.sap.sailing.domain.racelog.tracking.analyzing.impl.DeviceCompetitorMappingFinder; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DeviceMappingFinderTest extends AbstractRaceLogTrackingTest { private final Competitor competitor = new CompetitorImpl("comp", "Comp", null, null, null); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java index 4cf2c58c30b..d00c7db50db 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.BoatHullType; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sse.common.Named; +import com.sap.sse.common.TimePoint; public interface BoatClass extends Named, IsManagedByCache { /** diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java index ce5101f8b8f..9248fa027c5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; public interface Competitor extends Named, WithID, IsManagedByCache { @Connector(messageKey="Team", ordinal=9) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/ControlPoint.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/ControlPoint.java index 19862b1c3dd..e7626fee51b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/ControlPoint.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/ControlPoint.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.base; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; public interface ControlPoint extends WithID, Named { Iterable getMarks(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java index a4feb8e54f1..d59ee3ce407 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.base; import java.util.UUID; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; /** * A named area in a sailing {@link Venue} where races take place. Usually, the areas carry names according to the NATO diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/EventBase.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/EventBase.java index db395fc2984..0e4ac88213d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/EventBase.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/EventBase.java @@ -5,9 +5,9 @@ import java.util.concurrent.ExecutionException; import com.sap.sailing.domain.common.ImageSize; import com.sap.sailing.domain.common.Renamable; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** * Base interface for an Event consisting of all static information, which might be shared diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/LeaderboardGroupBase.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/LeaderboardGroupBase.java index 0bf8ea7e4e1..67df63e0699 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/LeaderboardGroupBase.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/LeaderboardGroupBase.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.base; import java.util.UUID; import com.sap.sailing.domain.common.Renamable; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; public interface LeaderboardGroupBase extends Renamable, WithID { UUID getId(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java index 3d15f66ea56..2e22ee6f740 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.MarkType; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; /** diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Sideline.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Sideline.java index dda15a12cd9..b3667fa9800 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Sideline.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Sideline.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.base; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; /** * A side line in a race course diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Timed.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Timed.java index c993b50bf22..cec1f8e8823 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Timed.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Timed.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base; import java.io.Serializable; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface Timed extends Serializable { TimePoint getTimePoint(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java index 07a30560c58..cc1dd5f76bb 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; /** * Waypoints constitute {@link Course}s and demarcate their {@link Leg}s. A waypoint's position is defined by a diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/EventBaseImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/EventBaseImpl.java index acb5610715d..3376fbcdbee 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/EventBaseImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/EventBaseImpl.java @@ -9,7 +9,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.Venue; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public abstract class EventBaseImpl implements EventBase { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/SharedDomainFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/SharedDomainFactoryImpl.java index a6298dbba50..98bc217e7c4 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/SharedDomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/SharedDomainFactoryImpl.java @@ -32,8 +32,8 @@ import com.sap.sailing.domain.common.BoatClassMasterdata; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; +import com.sap.sse.common.WithID; public class SharedDomainFactoryImpl implements SharedDomainFactory { private static final Logger logger = Logger.getLogger(SharedDomainFactoryImpl.class.getName()); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/StrippedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/StrippedEventImpl.java index 5f7d1b2a0da..2c4332ab02c 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/StrippedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/StrippedEventImpl.java @@ -10,7 +10,7 @@ import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.LeaderboardGroupBase; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.common.ImageSize; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * A simplified implementation of the {@link EventBase} interface which maintains an immutable collection of diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLog.java index 0d9f632c793..57007699fa1 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLog.java @@ -5,11 +5,11 @@ import java.util.HashSet; import java.util.NavigableSet; import java.util.UUID; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.racelog.impl.RaceLogEventComparator; import com.sap.sailing.domain.tracking.Track; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** * Special kind of {@link Track} for recording {@link RaceLogEvent}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEvent.java index cd96c88b188..7dee85e9ced 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEvent.java @@ -5,8 +5,8 @@ import java.util.List; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** *

diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java index 4c830e744d4..be0d5398c3c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java @@ -7,7 +7,6 @@ import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -23,6 +22,7 @@ import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent; import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public interface RaceLogEventFactory { RaceLogEventFactory INSTANCE = new RaceLogEventFactoryImpl(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventRestoreFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventRestoreFactory.java index cb0c62d78ae..27d1c48c1d0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventRestoreFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventRestoreFactory.java @@ -7,7 +7,6 @@ import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -23,6 +22,7 @@ import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent; import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public interface RaceLogEventRestoreFactory extends RaceLogEventFactory { RaceLogEventRestoreFactory INSTANCE = new RaceLogEventRestoreFactoryImpl(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogProtestStartTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogProtestStartTimeEvent.java index bce44018dda..d0fba77e303 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogProtestStartTimeEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogProtestStartTimeEvent.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.racelog; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * Indicates that the protest start time for the related race has changed. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogStartTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogStartTimeEvent.java index acc1203353f..00720b0de56 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogStartTimeEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogStartTimeEvent.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; +import com.sap.sse.common.TimePoint; /** * A {@link RaceLogStartTimeEvent} denotes a new start time. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishedTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishedTimeFinder.java index a6fa037f0ec..c8f97fc2f06 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishedTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishedTimeFinder.java @@ -1,10 +1,10 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; +import com.sap.sse.common.TimePoint; public class FinishedTimeFinder extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishingTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishingTimeFinder.java index 0b05110e787..ad856a00433 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishingTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/FinishingTimeFinder.java @@ -1,10 +1,10 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; +import com.sap.sse.common.TimePoint; public class FinishingTimeFinder extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallDisplayedFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallDisplayedFinder.java index 6e2c38f6634..fb6b20e650e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallDisplayedFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallDisplayedFinder.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; +import com.sap.sse.common.TimePoint; public class IndividualRecallDisplayedFinder extends IndividualRecallFinder { private final TimePoint at; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallFinder.java index 8995a35cfe6..4bbdce14757 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallFinder.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; +import com.sap.sse.common.TimePoint; public abstract class IndividualRecallFinder extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallRemovedFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallRemovedFinder.java index f92d9bb3f54..740ad9169a5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallRemovedFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IndividualRecallRemovedFinder.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; +import com.sap.sse.common.TimePoint; public class IndividualRecallRemovedFinder extends IndividualRecallFinder { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsFinishedAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsFinishedAnalyzer.java index 7a08186f230..2f26e16577e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsFinishedAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsFinishedAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sse.common.TimePoint; public class IsFinishedAnalyzer extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsInFinishingPhaseAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsInFinishingPhaseAnalyzer.java index 801b9005d9f..a26bd31959f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsInFinishingPhaseAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsInFinishingPhaseAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sse.common.TimePoint; public class IsInFinishingPhaseAnalyzer extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java index 785a242ad21..1e1ede1be12 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sse.common.TimePoint; public class IsIndividualRecallDisplayedAnalyzer extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/LastFlagsFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/LastFlagsFinder.java index 7553e8f68d5..d673ffc1c02 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/LastFlagsFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/LastFlagsFinder.java @@ -6,10 +6,10 @@ import java.util.Comparator; import java.util.Iterator; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; +import com.sap.sse.common.TimePoint; /** * Analysis returns the most recent {@link RaceLogFlagEvent}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/ProtestStartTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/ProtestStartTimeFinder.java index 18fb9bb852c..8e6c8996f7b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/ProtestStartTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/ProtestStartTimeFinder.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent; +import com.sap.sse.common.TimePoint; public class ProtestStartTimeFinder extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/RaceStatusAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/RaceStatusAnalyzer.java index 2722d93643b..62f687fd31e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/RaceStatusAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/RaceStatusAnalyzer.java @@ -1,7 +1,5 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -11,6 +9,8 @@ import com.sap.sailing.domain.racelog.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogRaceStatusEventComparator; import com.sap.sailing.domain.racelog.state.racingprocedure.ReadonlyRacingProcedure; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceStatusAnalyzer extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartTimeFinder.java index d4b2d9ce944..4648a96b878 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartTimeFinder.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.analyzing.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; +import com.sap.sse.common.TimePoint; public class StartTimeFinder extends RaceLogAnalyzer { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/NoAddingRaceLogWrapper.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/NoAddingRaceLogWrapper.java index bc6eaac844f..54ed306b72b 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/NoAddingRaceLogWrapper.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/NoAddingRaceLogWrapper.java @@ -9,14 +9,14 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RevokeEvent; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; /** * Wrapper for a {@link RaceLog} which will ignore all calls trying to add an {@link RaceLogEvent}. All other diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseAreaChangeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseAreaChangeEventImpl.java index 8d987d89efb..17261fdcb1d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseAreaChangeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseAreaChangeEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; +import com.sap.sse.common.TimePoint; public class RaceLogCourseAreaChangeEventImpl extends RaceLogEventImpl implements RaceLogCourseAreaChangedEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseDesignChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseDesignChangedEventImpl.java index 8ce8eafbd6e..47b92367e11 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseDesignChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogCourseDesignChangedEventImpl.java @@ -5,10 +5,10 @@ import java.util.List; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; +import com.sap.sse.common.TimePoint; public class RaceLogCourseDesignChangedEventImpl extends RaceLogEventImpl implements RaceLogCourseDesignChangedEvent { private static final long serialVersionUID = 1565936170747420547L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java index e064d5c9e9c..196850d7d22 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java @@ -10,8 +10,6 @@ import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -51,6 +49,8 @@ import com.sap.sailing.domain.racelog.tracking.events.RegisterCompetitorEventImp import com.sap.sailing.domain.racelog.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.racelog.tracking.events.StartTrackingEventImpl; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogEventFactoryImpl implements RaceLogEventFactory { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventImpl.java index 247492dbe7f..59ddc09745b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventImpl.java @@ -4,9 +4,9 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; +import com.sap.sse.common.TimePoint; public abstract class RaceLogEventImpl implements RaceLogEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventRestoreFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventRestoreFactoryImpl.java index 528005b7637..f00cdefb8e8 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventRestoreFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventRestoreFactoryImpl.java @@ -7,7 +7,6 @@ import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -48,6 +47,7 @@ import com.sap.sailing.domain.racelog.tracking.events.RegisterCompetitorEventImp import com.sap.sailing.domain.racelog.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.racelog.tracking.events.StartTrackingEventImpl; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public class RaceLogEventRestoreFactoryImpl extends RaceLogEventFactoryImpl implements RaceLogEventRestoreFactory { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningConfirmedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningConfirmedEventImpl.java index f6897b0fed3..ae288065dd2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningConfirmedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningConfirmedEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent; +import com.sap.sse.common.TimePoint; public class RaceLogFinishPositioningConfirmedEventImpl extends RaceLogFinishPositioningEventImpl implements RaceLogFinishPositioningConfirmedEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningEventImpl.java index 33a2110ec3f..2776e2f6517 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningEvent; +import com.sap.sse.common.TimePoint; public abstract class RaceLogFinishPositioningEventImpl extends RaceLogEventImpl implements RaceLogFinishPositioningEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningListChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningListChangedEventImpl.java index fda2333dd1f..956d9d5d08a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningListChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFinishPositioningListChangedEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; +import com.sap.sse.common.TimePoint; public class RaceLogFinishPositioningListChangedEventImpl extends RaceLogFinishPositioningEventImpl implements RaceLogFinishPositioningListChangedEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFlagEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFlagEventImpl.java index fe1eb529e71..a307fdc1a3e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFlagEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogFlagEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; +import com.sap.sse.common.TimePoint; public class RaceLogFlagEventImpl extends RaceLogEventImpl implements RaceLogFlagEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogGateLineOpeningTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogGateLineOpeningTimeEventImpl.java index 717d34a258c..605d8ff65e2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogGateLineOpeningTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogGateLineOpeningTimeEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent; +import com.sap.sse.common.TimePoint; public class RaceLogGateLineOpeningTimeEventImpl extends RaceLogEventImpl implements RaceLogGateLineOpeningTimeEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java index 27ca9f571d2..3e4c05f8b25 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java @@ -15,7 +15,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -28,6 +27,7 @@ import com.sap.sailing.domain.tracking.Track; import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView; import com.sap.sailing.domain.tracking.impl.TrackImpl; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * {@link Track} implementation for {@link RaceLogEvent}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPassChangeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPassChangeEventImpl.java index 5c7e77dd0a4..52c9a83c88f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPassChangeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPassChangeEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sse.common.TimePoint; public class RaceLogPassChangeEventImpl extends RaceLogEventImpl implements RaceLogPassChangeEvent { private static final long serialVersionUID = -3737606977320640630L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java index 9a6d7f08afc..1619888c507 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; +import com.sap.sse.common.TimePoint; public class RaceLogPathfinderEventImpl extends RaceLogEventImpl implements RaceLogPathfinderEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogProtestStartTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogProtestStartTimeEventImpl.java index 1ad2c53d865..81cf9ffeaa4 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogProtestStartTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogProtestStartTimeEventImpl.java @@ -4,10 +4,10 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent; +import com.sap.sse.common.TimePoint; public class RaceLogProtestStartTimeEventImpl extends RaceLogEventImpl implements RaceLogProtestStartTimeEvent { private static final long serialVersionUID = -1800827552916395996L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogRaceStatusEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogRaceStatusEventImpl.java index 73aaf108cf6..003f8016f8c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogRaceStatusEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogRaceStatusEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; +import com.sap.sse.common.TimePoint; public class RaceLogRaceStatusEventImpl extends RaceLogEventImpl implements RaceLogRaceStatusEvent { private static final long serialVersionUID = -8809758843066724482L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartProcedureChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartProcedureChangedEventImpl.java index 89fdc8277b0..4ad584c5ee7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartProcedureChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartProcedureChangedEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent; +import com.sap.sse.common.TimePoint; public class RaceLogStartProcedureChangedEventImpl extends RaceLogEventImpl implements RaceLogStartProcedureChangedEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartTimeEventImpl.java index 82f92b0382f..b56f661e4ca 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogStartTimeEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; +import com.sap.sse.common.TimePoint; public class RaceLogStartTimeEventImpl extends RaceLogRaceStatusEventImpl implements RaceLogStartTimeEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogWindFixEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogWindFixEventImpl.java index df76b9d5b1f..94c3d103348 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogWindFixEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogWindFixEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RaceLogWindFixEvent; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public class RaceLogWindFixEventImpl extends RaceLogEventImpl implements RaceLogWindFixEvent { private static final long serialVersionUID = 7879094280634905183L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/scoring/impl/AdditionalScoringInformationEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/scoring/impl/AdditionalScoringInformationEventImpl.java index f047869b925..70726240d6b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/scoring/impl/AdditionalScoringInformationEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/scoring/impl/AdditionalScoringInformationEventImpl.java @@ -4,12 +4,12 @@ import java.io.Serializable; import java.util.List; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.scoring.AdditionalScoringInformationEvent; import com.sap.sailing.domain.racelog.scoring.AdditionalScoringInformationType; +import com.sap.sse.common.TimePoint; public class AdditionalScoringInformationEventImpl extends RaceLogEventImpl implements AdditionalScoringInformationEvent { private static final long serialVersionUID = -7627714111951381979L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState.java index fc4b4d8badd..86b1b466143 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState.java @@ -1,7 +1,6 @@ package com.sap.sailing.domain.racelog.state; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.CompetitorResults; @@ -14,6 +13,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedurePrerequisiteAutoResolver; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; /** * Extension to the {@link ReadonlyRaceState} allowing write-access to the state of a race. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/ReadonlyRaceState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/ReadonlyRaceState.java index 3a4909ce656..901bb3e402c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/ReadonlyRaceState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/ReadonlyRaceState.java @@ -2,7 +2,6 @@ package com.sap.sailing.domain.racelog.state; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLog; @@ -13,6 +12,7 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventComparator; import com.sap.sailing.domain.racelog.impl.RaceLogImpl; import com.sap.sailing.domain.racelog.state.racingprocedure.ReadonlyRacingProcedure; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; /** * This interface gives you reading access to the state of a race. You can query various properties of the race diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateEventImpl.java index ab223e983bd..f4d02ed521f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateEventImpl.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.state.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.RaceStateEvent; +import com.sap.sse.common.TimePoint; public class RaceStateEventImpl implements RaceStateEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateImpl.java index 151ced36627..35c983dee51 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceStateImpl.java @@ -6,7 +6,6 @@ import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.configuration.ConfigurationLoader; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.base.configuration.impl.EmptyRegattaConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -25,6 +24,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedureFacto import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureFactoryImpl; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; /** * Write-enabled {@link RaceState}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/ReadonlyRaceStateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/ReadonlyRaceStateImpl.java index 8162e34d111..ee0e206ba10 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/ReadonlyRaceStateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/ReadonlyRaceStateImpl.java @@ -4,7 +4,6 @@ import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.configuration.ConfigurationLoader; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.base.configuration.impl.EmptyRegattaConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.CompetitorResults; @@ -32,6 +31,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedureFacto import com.sap.sailing.domain.racelog.state.racingprocedure.ReadonlyRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.ReadonlyRacingProcedureFactory; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/FlagPoleState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/FlagPoleState.java index 8837323cf6b..08aa9a15fe9 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/FlagPoleState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/FlagPoleState.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; +import com.sap.sse.common.TimePoint; /** * Allows you to query the current state of displayed and removed flags. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/RacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/RacingProcedure.java index 5345ca04cd8..e3bf65c8e5d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/RacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/RacingProcedure.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.racelog.state.racingprocedure; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * Base interface for all write-enabled {@link RacingProcedure}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ReadonlyRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ReadonlyRacingProcedure.java index e84c6eaacba..0d9bef700f3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ReadonlyRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ReadonlyRacingProcedure.java @@ -1,7 +1,6 @@ package com.sap.sailing.domain.racelog.state.racingprocedure; import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.analyzing.impl.RaceLogAnalyzer; @@ -10,6 +9,7 @@ import com.sap.sailing.domain.racelog.state.RaceStateChangedListener; import com.sap.sailing.domain.racelog.state.RaceStateEventProcessor; import com.sap.sailing.domain.racelog.state.RaceStateEventScheduler; import com.sap.sailing.domain.racelog.state.ReadonlyRaceState; +import com.sap.sse.common.TimePoint; /** * Read-only interface for every racing procedure. A racing procedure defines the starting sequence of a race various diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java index 45055dba2dc..c3c7c4ecfd2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Collections; import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.RaceLog; @@ -21,6 +20,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrere import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureChangedListeners; +import com.sap.sse.common.TimePoint; public class BasicRacingProcedureImpl extends BaseRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java index c93c0a09e4d..cd6279cecbd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.ess; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.ReadonlyRacingProcedure; +import com.sap.sse.common.TimePoint; public interface ReadonlyESSRacingProcedure extends ReadonlyRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java index 1230450aafb..b9c6223e4f8 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Collections; import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -25,6 +24,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.ess.ESSRacingProcedu import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureChangedListeners; +import com.sap.sse.common.TimePoint; public class ESSRacingProcedureImpl extends BaseRacingProcedure implements ESSRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/GateStartRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/GateStartRacingProcedure.java index 7770bdd4041..315384c059a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/GateStartRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/GateStartRacingProcedure.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.gate; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; +import com.sap.sse.common.TimePoint; public interface GateStartRacingProcedure extends ReadonlyGateStartRacingProcedure, RacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java index aa3758a3079..44b84762ae3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.gate; import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.ReadonlyRacingProcedure; +import com.sap.sse.common.TimePoint; public interface ReadonlyGateStartRacingProcedure extends ReadonlyRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java index 499ea21b54f..93a7b5496f7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.gate.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedurePrerequisite; +import com.sap.sse.common.TimePoint; /** * Easy access to the {@link GateStartRacingProcedure}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java index 4ac8ab8a3bc..1133bed9d16 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.gate.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; +import com.sap.sse.common.TimePoint; public class GateLaunchTimePrerequisite extends BaseGateStartPrerequisite implements RacingProcedurePrerequisite { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java index ca17dd62f43..8b7badc9bd2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java @@ -4,7 +4,6 @@ import java.util.Arrays; import java.util.Collection; import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -27,6 +26,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacing import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureChangedListeners; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class GateStartRacingProcedureImpl extends BaseRacingProcedure implements GateStartRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/PathfinderPrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/PathfinderPrerequisite.java index 305fb5c6288..1dc083f432f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/PathfinderPrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/gate/impl/PathfinderPrerequisite.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.gate.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; +import com.sap.sse.common.TimePoint; public class PathfinderPrerequisite extends BaseGateStartPrerequisite implements RacingProcedurePrerequisite { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedure.java index 5570871a475..dd1dcba5ac0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedure.java @@ -4,7 +4,6 @@ import java.util.Arrays; import java.util.Collection; import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogChangedListener; @@ -28,6 +27,7 @@ import com.sap.sailing.domain.racelog.state.impl.RaceStateEventImpl; import com.sap.sailing.domain.racelog.state.impl.RaceStateEvents; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedureChangedListener; +import com.sap.sse.common.TimePoint; /** * Base class for all your {@link RacingProcedure}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java index 8e103584490..a66d5637cd0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; +import com.sap.sse.common.TimePoint; /** * Base class for all {@link RacingProcedurePrerequisite}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/RRS26RacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/RRS26RacingProcedure.java index 6ba1fb310d8..0494d4e2613 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/RRS26RacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/RRS26RacingProcedure.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.rrs26; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; +import com.sap.sse.common.TimePoint; public interface RRS26RacingProcedure extends ReadonlyRRS26RacingProcedure, RacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java index 89abb715bcc..f9d5ef8859f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26RacingProcedure; +import com.sap.sse.common.TimePoint; /** * Easy access to the {@link RRS26RacingProcedure}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java index fdd564e3351..6966ea6a719 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Collections; import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -26,6 +25,7 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.impl.NoMorePrerequis import com.sap.sailing.domain.racelog.state.racingprocedure.impl.RacingProcedureChangedListeners; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26ChangedListener; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26RacingProcedure; +import com.sap.sse.common.TimePoint; public class RRS26RacingProcedureImpl extends BaseRacingProcedure implements RRS26RacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java index e141ce89033..d696342d335 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26RacingProcedure; +import com.sap.sse.common.TimePoint; public class StartmodePrerequisite extends BaseRRS26Prerequisite implements RacingProcedurePrerequisite { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/CloseOpenEndedDeviceMappingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/CloseOpenEndedDeviceMappingEvent.java index 02bb1b851f3..d9a41392c6d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/CloseOpenEndedDeviceMappingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/CloseOpenEndedDeviceMappingEvent.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.racelog.tracking; import java.io.Serializable; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.Revokable; +import com.sap.sse.common.TimePoint; /** * Closes the time range of a {@link DeviceMappingEvent}. This means that the {@link #getClosingTimePoint() timepoint} provided diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMapping.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMapping.java index 875057c55ba..f3030b571b5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMapping.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMapping.java @@ -5,8 +5,8 @@ import java.util.List; import com.sap.sailing.domain.base.Timed; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.racelog.tracking.analyzing.impl.DeviceMappingFinder; +import com.sap.sse.common.WithID; /** * @see DeviceMappingFinder {@code DeviceMappings} are derived from {@code DeviceMappingEvents}. The {@link Timed} interface diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMappingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMappingEvent.java index 853712e28f1..ba7f14a21af 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMappingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceMappingEvent.java @@ -2,11 +2,11 @@ package com.sap.sailing.domain.racelog.tracking; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.Revokable; import com.sap.sailing.domain.racelog.tracking.analyzing.impl.DefinedMarkFinder; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** * Event type for mapping {@link DeviceIdentifier devices} to {@code items} ({@link Competitor competitors} or {@link Mark marks}). diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/DeviceMappingFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/DeviceMappingFinder.java index 80b5b6c6d61..ca10563db56 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/DeviceMappingFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/DeviceMappingFinder.java @@ -7,9 +7,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -19,6 +17,8 @@ import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMapping; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; import com.sap.sailing.domain.racelog.tracking.impl.DeviceMappingImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** * Extracts the {@link DeviceMapping}s with the appropriate {@link TimeRange}s from the {@link RaceLog}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/LastPingMappingEventFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/LastPingMappingEventFinder.java index f88720758be..b2e446a55c0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/LastPingMappingEventFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/LastPingMappingEventFinder.java @@ -1,10 +1,10 @@ package com.sap.sailing.domain.racelog.tracking.analyzing.impl; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; +import com.sap.sse.common.WithID; public class LastPingMappingEventFinder extends RaceLogAnalyzer> { private final WithID item; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java index 48ab1c6cabc..321454b43e3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java @@ -4,8 +4,6 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; @@ -13,6 +11,8 @@ import com.sap.sailing.domain.racelog.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.racelog.tracking.CloseOpenEndedDeviceMappingEvent; import com.sap.sailing.domain.racelog.tracking.DeviceMapping; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Generates events that close the events that are responsible for the {@link #mapping} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/AbstractDeviceMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/AbstractDeviceMappingEventImpl.java index 4c4320912a8..b0a2970f454 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/AbstractDeviceMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/AbstractDeviceMappingEventImpl.java @@ -4,12 +4,12 @@ import java.io.Serializable; import java.util.Collections; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; public abstract class AbstractDeviceMappingEventImpl extends RaceLogEventImpl implements DeviceMappingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java index 6ae55f525c7..a7c080b2d1d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.Collections; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.CloseOpenEndedDeviceMappingEvent; +import com.sap.sse.common.TimePoint; public class CloseOpenEndedDeviceMappingEventImpl extends RaceLogEventImpl implements CloseOpenEndedDeviceMappingEvent { private static final long serialVersionUID = -2401732623610224918L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DefineMarkEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DefineMarkEventImpl.java index 5bed57f7fef..bb4c37f852c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DefineMarkEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DefineMarkEventImpl.java @@ -5,11 +5,11 @@ import java.util.Collections; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.DefineMarkEvent; +import com.sap.sse.common.TimePoint; public class DefineMarkEventImpl extends RaceLogEventImpl implements DefineMarkEvent { private static final long serialVersionUID = 277007856878002208L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DenoteForTrackingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DenoteForTrackingEventImpl.java index c3600530b63..18b1ced0df3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DenoteForTrackingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DenoteForTrackingEventImpl.java @@ -5,11 +5,11 @@ import java.util.Collections; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent; +import com.sap.sse.common.TimePoint; public class DenoteForTrackingEventImpl extends RaceLogEventImpl implements DenoteForTrackingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceCompetitorMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceCompetitorMappingEventImpl.java index 9338ba836c5..4de94c3dde5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceCompetitorMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceCompetitorMappingEventImpl.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.racelog.tracking.events; import java.io.Serializable; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sse.common.TimePoint; public class DeviceCompetitorMappingEventImpl extends AbstractDeviceMappingEventImpl implements DeviceCompetitorMappingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceMarkMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceMarkMappingEventImpl.java index 539eff2d742..42990a183ad 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceMarkMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/DeviceMarkMappingEventImpl.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.racelog.tracking.events; import java.io.Serializable; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent; +import com.sap.sse.common.TimePoint; public class DeviceMarkMappingEventImpl extends AbstractDeviceMappingEventImpl implements DeviceMarkMappingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RegisterCompetitorEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RegisterCompetitorEventImpl.java index c141b92bfcb..6d91da77781 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RegisterCompetitorEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RegisterCompetitorEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.Collections; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; +import com.sap.sse.common.TimePoint; public class RegisterCompetitorEventImpl extends RaceLogEventImpl implements RegisterCompetitorEvent { private static final long serialVersionUID = -30864810737555657L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RevokeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RevokeEventImpl.java index 640bbcbb126..79452f6226d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RevokeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/RevokeEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.Collections; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.RevokeEvent; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; +import com.sap.sse.common.TimePoint; public class RevokeEventImpl extends RaceLogEventImpl implements RevokeEvent { private static final long serialVersionUID = -30864810737555657L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/StartTrackingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/StartTrackingEventImpl.java index 6cebf36d276..f4567c8e66d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/StartTrackingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/events/StartTrackingEventImpl.java @@ -4,11 +4,11 @@ import java.io.Serializable; import java.util.Collections; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventVisitor; import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl; import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent; +import com.sap.sse.common.TimePoint; public class StartTrackingEventImpl extends RaceLogEventImpl implements StartTrackingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/impl/DeviceMappingImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/impl/DeviceMappingImpl.java index 2ffbab79491..7c3ae9e5164 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/impl/DeviceMappingImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/impl/DeviceMappingImpl.java @@ -4,13 +4,13 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMapping; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; public class DeviceMappingImpl implements DeviceMapping { private static final long serialVersionUID = -4602948402371623654L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/Track.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/Track.java index 62cd5b9c7ae..b0b7c62bd6b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/Track.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/Track.java @@ -5,8 +5,8 @@ import java.util.Iterator; import java.util.concurrent.locks.ReadWriteLock; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; /** * A track records {@link Timed} items for an object of type ItemType. It allows clients to ask for a value diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/TrackImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/TrackImpl.java index 88e4e1d968d..6fc368cdcdc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/TrackImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/TrackImpl.java @@ -7,13 +7,13 @@ import java.util.Iterator; import java.util.NavigableSet; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.Track; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; import com.sap.sailing.util.impl.UnmodifiableNavigableSet; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public class TrackImpl implements Track { private static final long serialVersionUID = -4075853657857657528L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/WindImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/WindImpl.java index fd07041f504..f92dd9e3b36 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/WindImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/tracking/impl/WindImpl.java @@ -3,9 +3,9 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public class WindImpl extends KnotSpeedWithBearingImpl implements Wind { private static final long serialVersionUID = 5431592324949471980L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/util/impl/LockUtil.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/util/impl/LockUtil.java index 3169c27ec8b..c3c5061fa4a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/util/impl/LockUtil.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/util/impl/LockUtil.java @@ -12,9 +12,9 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.logging.Level; import java.util.logging.Logger; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Supports lock management for {@link NamedReentrantReadWriteLock} which is a specialization of diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SailMasterConnectivityTest.java b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SailMasterConnectivityTest.java index 31acbd4a0b0..85bb8298db4 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SailMasterConnectivityTest.java +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SailMasterConnectivityTest.java @@ -25,7 +25,6 @@ import org.junit.Test; import org.junit.rules.Timeout; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.swisstimingadapter.Competitor; import com.sap.sailing.domain.swisstimingadapter.Course; import com.sap.sailing.domain.swisstimingadapter.Fix; @@ -39,6 +38,7 @@ import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage; import com.sap.sailing.domain.swisstimingadapter.StartList; import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory; import com.sap.sailing.domain.swisstimingadapter.impl.RaceImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class SailMasterConnectivityTest { diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SwissTimingSailMasterLiveTest.java b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SwissTimingSailMasterLiveTest.java index 26ddf95ae79..1cec156d839 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SwissTimingSailMasterLiveTest.java +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/SwissTimingSailMasterLiveTest.java @@ -20,7 +20,6 @@ import org.junit.Test; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.swisstimingadapter.Competitor; import com.sap.sailing.domain.swisstimingadapter.Course; import com.sap.sailing.domain.swisstimingadapter.Fix; @@ -31,6 +30,7 @@ import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector; import com.sap.sailing.domain.swisstimingadapter.SailMasterListener; import com.sap.sailing.domain.swisstimingadapter.StartList; import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @Ignore("This test doesn't work as long as the server doesn't play an actual race") diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/DomainFactory.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/DomainFactory.java index 9ca4001ee67..88ec9bc8bed 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/DomainFactory.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/DomainFactory.java @@ -10,13 +10,13 @@ import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.swisstimingadapter.impl.DomainFactoryImpl; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.TimePoint; import difflib.PatchFailedException; diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterAdapter.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterAdapter.java index 9cc91e9000b..a6590d96383 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterAdapter.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterAdapter.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.List; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public abstract class SailMasterAdapter implements SailMasterListener { diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterConnector.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterConnector.java index a8ba1c6dfaa..ca80510fe7f 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterConnector.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterConnector.java @@ -8,7 +8,7 @@ import java.util.Map; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface SailMasterConnector { diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterListener.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterListener.java index e6cf48b01af..e8b0b08aa6c 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterListener.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SailMasterListener.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.List; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface SailMasterListener { diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SwissTimingMessage.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SwissTimingMessage.java index 2c2444401e5..2d1c8f40aaa 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SwissTimingMessage.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/SwissTimingMessage.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.swisstimingadapter; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.udpconnector.UDPMessage; +import com.sap.sse.common.TimePoint; public interface SwissTimingMessage extends UDPMessage { String getRaceID(); diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java index 5505640be98..91948fc0f7e 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java @@ -29,9 +29,6 @@ import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.swisstimingadapter.Course; import com.sap.sailing.domain.swisstimingadapter.CrewMember; @@ -50,7 +47,10 @@ import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sse.common.Named; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.WithID; +import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.PatchFailedException; diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SailMasterConnectorImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SailMasterConnectorImpl.java index 413b31942dc..c055939037f 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SailMasterConnectorImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SailMasterConnectorImpl.java @@ -32,14 +32,12 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.swisstimingadapter.Competitor; import com.sap.sailing.domain.swisstimingadapter.Course; import com.sap.sailing.domain.swisstimingadapter.Fix; @@ -53,7 +51,9 @@ import com.sap.sailing.domain.swisstimingadapter.SailMasterListener; import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage; import com.sap.sailing.domain.swisstimingadapter.StartList; import com.sap.sailing.domain.swisstimingadapter.TrackerType; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Implements the connector to the SwissTiming Sail Master system. It uses a host name and port number to establish the diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageImpl.java index 4f798368caf..34aa22cc614 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageImpl.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.swisstimingadapter.impl; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.swisstimingadapter.SwissTimingMessage; +import com.sap.sse.common.TimePoint; public class SwissTimingMessageImpl implements SwissTimingMessage { private final String raceID; diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageParserImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageParserImpl.java index 5e89a68e33e..5efa7faec12 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageParserImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingMessageParserImpl.java @@ -5,10 +5,10 @@ import java.net.DatagramPacket; import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.swisstimingadapter.SwissTimingFormatException; import com.sap.sailing.domain.swisstimingadapter.SwissTimingMessage; import com.sap.sailing.domain.swisstimingadapter.SwissTimingMessageParser; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SwissTimingMessageParserImpl implements SwissTimingMessageParser { diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java index eb6a450c6a8..be4279a419e 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingRaceTrackerImpl.java @@ -25,13 +25,11 @@ import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; @@ -63,7 +61,9 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.PatchFailedException; diff --git a/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java b/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java index 499b9b7d44e..c6218ce5d76 100755 --- a/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java +++ b/java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java @@ -27,13 +27,11 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -52,7 +50,9 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.PatchFailedException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaTrackTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaTrackTest.java index 5b48b50fabc..98de1864113 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaTrackTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaTrackTest.java @@ -2,9 +2,11 @@ package com.sap.sailing.domain.common; import org.junit.Test; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaUtilTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaUtilTest.java index f19018ceb38..0d2d862830e 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaUtilTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/MediaUtilTest.java @@ -2,8 +2,9 @@ package com.sap.sailing.domain.common; import org.junit.Test; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaUtil; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/DurationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/DurationTest.java index 4e3e95bd190..3a8200e0987 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/DurationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/DurationTest.java @@ -1,16 +1,15 @@ package com.sap.sailing.domain.common.test; import static org.junit.Assert.*; - import static org.hamcrest.Matchers.*; import org.junit.Test; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.DurationFormatter; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DurationTest { @Test diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/LeaderboardDTODiffingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/LeaderboardDTODiffingTest.java index 0f10c876b2c..ad54fe6ec89 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/LeaderboardDTODiffingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/LeaderboardDTODiffingTest.java @@ -36,10 +36,10 @@ import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.LegEntryDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.test.StoredTrackBasedTest; import com.sap.sailing.util.ClonerImpl; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Tests the compressing / de-compressing functionality of {@link LeaderboardDTO} and {@link IncrementalLeaderboardDTO}. diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimePointTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimePointTest.java index b33a62b139a..6b5fe0ab91c 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimePointTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimePointTest.java @@ -2,11 +2,10 @@ package com.sap.sailing.domain.common.test; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; - import static org.hamcrest.Matchers.*; public class TimePointTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimeRangeTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimeRangeTest.java index d28decf1b2c..d1b6afb0602 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimeRangeTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/TimeRangeTest.java @@ -8,10 +8,10 @@ import junit.framework.Assert; import org.junit.Test; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.TimeRangeImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TimeRangeTest { protected TimeRange create(long from, long to) { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractManeuverDetectionTestCase.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractManeuverDetectionTestCase.java index 594cc9108d2..08ade4a6031 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractManeuverDetectionTestCase.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractManeuverDetectionTestCase.java @@ -10,9 +10,9 @@ import java.util.List; import java.util.TimeZone; import com.sap.sailing.domain.common.ManeuverType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Maneuver; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class AbstractManeuverDetectionTestCase extends OnlineTracTracBasedTest { protected SimpleDateFormat dateFormat; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/BeatAngleTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/BeatAngleTest.java index 798aed9e68c..b1f9ea8fbd6 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/BeatAngleTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/BeatAngleTest.java @@ -15,11 +15,9 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedLeg; @@ -31,6 +29,8 @@ import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; import com.sap.sailing.domain.tracking.impl.TrackedLegOfCompetitorImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class BeatAngleTest { private Competitor competitor; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConcurrencyTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConcurrencyTest.java index 351bc445305..166d8ee81e6 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConcurrencyTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConcurrencyTest.java @@ -21,13 +21,13 @@ import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConfidenceTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConfidenceTest.java index bd597bdeddc..8a569e74626 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConfidenceTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ConfidenceTest.java @@ -15,7 +15,6 @@ import com.sap.sailing.domain.base.PositionWithConfidence; import com.sap.sailing.domain.base.impl.PositionWithConfidenceImpl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager; import com.sap.sailing.domain.confidence.ConfidenceFactory; import com.sap.sailing.domain.common.confidence.BearingWithConfidence; @@ -29,7 +28,6 @@ import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.common.impl.RadianBearingImpl; import com.sap.sailing.domain.common.scalablevalue.ScalableValue; @@ -40,6 +38,8 @@ import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.ScalableWind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ConfidenceTest { private static class ScalableBearing implements ScalableValue { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardCourseChangeTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardCourseChangeTest.java index a34190aa8b0..22db5ade69d 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardCourseChangeTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardCourseChangeTest.java @@ -40,9 +40,7 @@ import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; @@ -56,6 +54,8 @@ import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardCourseChangeTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardForKielWeekTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardForKielWeekTest.java index 782638935fa..2c05345907c 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardForKielWeekTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardForKielWeekTest.java @@ -19,7 +19,6 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; @@ -27,6 +26,7 @@ import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRul import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardOfflineTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardOfflineTest.java index 42678bb910f..acea194a50e 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardOfflineTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardOfflineTest.java @@ -31,9 +31,7 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; @@ -43,7 +41,9 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCom import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardOfflineTest extends AbstractLeaderboardTest { private Set testRaces; 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 2db457a4f46..a80130cab88 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 @@ -37,13 +37,10 @@ import com.sap.sailing.domain.base.impl.MarkImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; @@ -75,7 +72,10 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.TimedComparator; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { private ArrayList series; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LineAnalysisTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LineAnalysisTest.java index 2d7432a2cf9..45c6e0a69bc 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LineAnalysisTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LineAnalysisTest.java @@ -12,15 +12,15 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LineAnalysisTest extends TrackBasedTest { private MillisecondsTimePoint now; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysis505Test.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysis505Test.java index 0546fb0b054..054bf81cc10 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysis505Test.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysis505Test.java @@ -23,11 +23,11 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisIDMChampionsFinalTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisIDMChampionsFinalTest.java index 4b055aa0d05..554603b2b68 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisIDMChampionsFinalTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisIDMChampionsFinalTest.java @@ -26,12 +26,10 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.Maneuver; @@ -39,6 +37,8 @@ import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisQingdao2014Test.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisQingdao2014Test.java index 1f8be667515..2be84b70fbf 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisQingdao2014Test.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverAnalysisQingdao2014Test.java @@ -23,11 +23,11 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnKielerWoche505Race2DataTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnKielerWoche505Race2DataTest.java index 99bb48b43f1..1a978d17d6a 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnKielerWoche505Race2DataTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnKielerWoche505Race2DataTest.java @@ -26,12 +26,10 @@ import com.sap.sailing.domain.base.impl.DouglasPeucker; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -39,6 +37,8 @@ import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnMdM2011SemifinalTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnMdM2011SemifinalTest.java index daec37b2762..c8b9c6770fd 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnMdM2011SemifinalTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ManeuverDetectionOnMdM2011SemifinalTest.java @@ -24,18 +24,18 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MarkPositionTimeFilterTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MarkPositionTimeFilterTest.java index b8f5f8cf21b..32ba7a83435 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MarkPositionTimeFilterTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MarkPositionTimeFilterTest.java @@ -14,16 +14,16 @@ import org.junit.Test; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.impl.MarkImpl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.DynamicGPSFixTrackImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class MarkPositionTimeFilterTest { private DynamicTrackedRace trackedRace; 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 50ebffd0334..cda23e75618 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 @@ -29,8 +29,6 @@ import com.sap.sailing.domain.base.impl.EventImpl; import com.sap.sailing.domain.base.impl.PersonImpl; import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; @@ -38,7 +36,9 @@ 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.sse.common.Duration; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class OfflineSerializationTest extends AbstractSerializationTest { /** diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java index a7cb7cd977f..6b0b52147b8 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java @@ -24,9 +24,7 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet; import com.sap.sailing.domain.tracking.DynamicTrackedRace; @@ -40,6 +38,8 @@ import com.sap.sailing.domain.tractracadapter.Receiver; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants; import com.sap.sailing.domain.tractracadapter.impl.DomainFactoryImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.model.lib.api.event.IRace; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassingInstructionParserTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassingInstructionParserTest.java index 6bcf24fc0bd..05cd2c091b9 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassingInstructionParserTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassingInstructionParserTest.java @@ -18,10 +18,10 @@ import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PolarSheetGenerationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PolarSheetGenerationTest.java index 8674732e8cc..59120e0fbc6 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PolarSheetGenerationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PolarSheetGenerationTest.java @@ -34,13 +34,11 @@ import com.sap.sailing.domain.common.PolarSheetsData; import com.sap.sailing.domain.common.PolarSheetsHistogramData; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.PolarSheetGenerationSettingsImpl; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.impl.WindSteppingWithMaxDistance; @@ -61,6 +59,8 @@ import com.sap.sailing.domain.tracking.impl.MarkPassingByTimeComparator; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PolarSheetGenerationTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PositionTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PositionTest.java index 8e96f7b2400..859074cf947 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PositionTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PositionTest.java @@ -14,10 +14,10 @@ import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.tracking.impl.CompactGPSFixImpl; import com.sap.sailing.domain.tracking.impl.CompactGPSFixMovingImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PositionTest { @Test diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReachingLegTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReachingLegTest.java index 7df2912df1f..6ad70dfcec2 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReachingLegTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReachingLegTest.java @@ -35,12 +35,10 @@ import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -54,6 +52,8 @@ import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ReachingLegTest extends TrackBasedTest { private List competitors; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/SerializationWithOnlineRaceTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/SerializationWithOnlineRaceTest.java index 9da39ea7707..b500ad8b156 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/SerializationWithOnlineRaceTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/SerializationWithOnlineRaceTest.java @@ -23,7 +23,6 @@ import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -31,6 +30,7 @@ import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.tractrac.model.lib.api.event.CreateModelException; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.subscription.lib.api.SubscriberInitializationException; public class SerializationWithOnlineRaceTest extends OnlineTracTracBasedTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StarbordSideOfStartLineRecognitionTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StarbordSideOfStartLineRecognitionTest.java index 101ebaedbb4..f69815b0ef7 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StarbordSideOfStartLineRecognitionTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StarbordSideOfStartLineRecognitionTest.java @@ -20,9 +20,7 @@ import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.impl.CourseImpl; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.LineDetails; @@ -30,6 +28,8 @@ import com.sap.sailing.domain.tracking.impl.DynamicGPSFixTrackImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StarbordSideOfStartLineRecognitionTest { private MillisecondsTimePoint now; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTest.java index a5ce16333ba..bc4bf784d0c 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTest.java @@ -27,15 +27,15 @@ import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.DynamicGPSFixMovingTrackImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class StoredTrackBasedTest extends TrackBasedTest { private static final String RESOURCES = "resources/"; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTestWithTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTestWithTrackedRace.java index bbbc2ee0c90..5deaa4bf368 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTestWithTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/StoredTrackBasedTestWithTrackedRace.java @@ -10,11 +10,11 @@ import java.util.Map; import org.junit.Before; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StoredTrackBasedTestWithTrackedRace extends StoredTrackBasedTest { @Before diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TackTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TackTest.java index 6d666d7b039..74404c45d89 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TackTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TackTest.java @@ -21,11 +21,11 @@ import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TackTest extends StoredTrackBasedTestWithTrackedRace { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TimeInLegProgressesTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TimeInLegProgressesTest.java index d46d1338b8d..3e3fb7032e6 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TimeInLegProgressesTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TimeInLegProgressesTest.java @@ -15,15 +15,15 @@ import org.junit.Before; import org.junit.Test; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackBasedTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackBasedTest.java index 78f6842b255..658702e200e 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackBasedTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackBasedTest.java @@ -29,12 +29,10 @@ import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -46,6 +44,8 @@ import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class TrackBasedTest { private DynamicTrackedRaceImpl trackedRace; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackSmootheningTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackSmootheningTest.java index b957b04ee7a..1744b6b2ca8 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackSmootheningTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackSmootheningTest.java @@ -17,11 +17,11 @@ import org.junit.Test; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; /** * Receives GPS tracks from a race. One test (if not ignored) stores these tracks in the resources/ diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackTest.java index 3b33a28e192..fe05ddca94f 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackTest.java @@ -32,14 +32,12 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.domain.common.impl.MeterPerSecondSpeedWithDegreeBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -51,7 +49,9 @@ import com.sap.sailing.domain.tracking.impl.DynamicGPSFixTrackImpl; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.TrackImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackTest { private DynamicGPSFixTrack track; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackedRaceCenterTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackedRaceCenterTest.java index b7e690ad8b2..75de0664623 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackedRaceCenterTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TrackedRaceCenterTest.java @@ -18,19 +18,19 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.impl.MarkImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.DynamicGPSFixTrackImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Tests the calculation of the center of the course, particularly the - * {@link TrackedRace#getCenterOfCourse(com.sap.sailing.domain.common.TimePoint)} method. + * {@link TrackedRace#getCenterOfCourse(com.sap.sse.common.TimePoint)} method. * * @author Axel Uhl (D043530) * diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UpdateMarkPassingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UpdateMarkPassingTest.java index 321475ad90e..a0f028a250d 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UpdateMarkPassingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UpdateMarkPassingTest.java @@ -21,15 +21,15 @@ import com.sap.sailing.domain.base.impl.CourseImpl; import com.sap.sailing.domain.base.impl.MarkImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class UpdateMarkPassingTest { @Test diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationLockingUnderLoadTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationLockingUnderLoadTest.java index 9cfd7aa2d50..baf3080cbe5 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationLockingUnderLoadTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationLockingUnderLoadTest.java @@ -17,14 +17,12 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import com.sap.sailing.domain.base.RaceDefinition; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; @@ -35,6 +33,8 @@ import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * See the issues documented in bug 1923 (http://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=1923). diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnConstructedTracksTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnConstructedTracksTest.java index b0c985afd43..8603a3769c3 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnConstructedTracksTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnConstructedTracksTest.java @@ -24,12 +24,10 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; @@ -44,7 +42,9 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.TrackBasedEstimationWindTrackImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindEstimationOnConstructedTracksTest extends StoredTrackBasedTest { private List competitors; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnKielerWoche505Race2DataTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnKielerWoche505Race2DataTest.java index 8f2c8709ab2..7b1c3194c6e 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnKielerWoche505Race2DataTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnKielerWoche505Race2DataTest.java @@ -18,11 +18,9 @@ import org.junit.Test; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -33,7 +31,9 @@ import com.sap.sailing.domain.tracking.impl.TrackBasedEstimationWindTrackImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.tractrac.model.lib.api.event.CreateModelException; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.subscription.lib.api.SubscriberInitializationException; public class WindEstimationOnKielerWoche505Race2DataTest extends OnlineTracTracBasedTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnStoredTracksTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnStoredTracksTest.java index 69aa7130da5..05680bea25b 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnStoredTracksTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindEstimationOnStoredTracksTest.java @@ -15,20 +15,20 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindEstimationOnStoredTracksTest extends StoredTrackBasedTestWithTrackedRace { // ---------------- BearingWithConfidenceCluster ----------------- diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindTest.java index 11421e712d8..9a2b2eee66c 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindTest.java @@ -36,7 +36,6 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.confidence.ConfidenceFactory; import com.sap.sailing.domain.common.confidence.Weigher; import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher; @@ -44,7 +43,6 @@ import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -60,8 +58,10 @@ import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindTest { private static final int AVERAGING_INTERVAL_MILLIS = 30000 /* 30s averaging interval */; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMarkPassingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMarkPassingTest.java index 222ba0cc500..8c6074fb0c3 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMarkPassingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMarkPassingTest.java @@ -20,11 +20,9 @@ import org.junit.AfterClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.markpassingcalculation.Candidate; import com.sap.sailing.domain.markpassingcalculation.CandidateChooser; @@ -40,7 +38,9 @@ import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.tractrac.model.lib.api.event.CreateModelException; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.subscription.lib.api.SubscriberInitializationException; public abstract class AbstractMarkPassingTest extends OnlineTracTracBasedTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMockedRaceMarkPassingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMockedRaceMarkPassingTest.java index 656f28ef973..7211814d188 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMockedRaceMarkPassingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMockedRaceMarkPassingTest.java @@ -28,11 +28,9 @@ import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.impl.HighPoint; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.DynamicTrackedRace; @@ -42,7 +40,9 @@ import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class AbstractMockedRaceMarkPassingTest { protected Competitor bob = new CompetitorImpl("Bob", "Bob", null, null, null); diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/CandidateFinderTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/CandidateFinderTest.java index 6380a98c7c2..4074acf5ef2 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/CandidateFinderTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/CandidateFinderTest.java @@ -10,12 +10,12 @@ import org.junit.Test; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.markpassingcalculation.CandidateFinder; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class CandidateFinderTest extends AbstractMockedRaceMarkPassingTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MarkPassingCalculatorPerformanceTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MarkPassingCalculatorPerformanceTest.java index 7689cb95ea3..0d3e0ac9bbe 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MarkPassingCalculatorPerformanceTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MarkPassingCalculatorPerformanceTest.java @@ -13,7 +13,6 @@ import junit.framework.Assert; import org.junit.AfterClass; import org.junit.Test; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.markpassingcalculation.Candidate; import com.sap.sailing.domain.markpassingcalculation.CandidateChooser; import com.sap.sailing.domain.markpassingcalculation.CandidateFinder; @@ -23,6 +22,7 @@ import com.sap.sailing.domain.test.measurements.MeasurementXMLFile; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class MarkPassingCalculatorPerformanceTest extends AbstractMockedRaceMarkPassingTest { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinAbstractMarkPassingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinAbstractMarkPassingTest.java index fb1a5dee65f..3c19d202434 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinAbstractMarkPassingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinAbstractMarkPassingTest.java @@ -29,11 +29,9 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.test.OnlineTracTracBasedTest; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; @@ -44,6 +42,8 @@ import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinMarkPassingSplineBasedTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinMarkPassingSplineBasedTest.java index 2b2999f499d..0ec42d3103d 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinMarkPassingSplineBasedTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/MartinMarkPassingSplineBasedTest.java @@ -19,7 +19,6 @@ import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.markpassingcalculation.splining.HermiteCurve; import com.sap.sailing.domain.markpassingcalculation.splining.StraightLine; @@ -28,6 +27,7 @@ import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sse.common.TimePoint; /** * This class tests a mark passing detection algorithm that interpolates the boats' positions between @@ -94,7 +94,7 @@ public class MartinMarkPassingSplineBasedTest extends MartinAbstractMarkPassingT } Vector2D point1 = new Vector2D(prevFix.getPosition()); Vector2D point2 = new Vector2D(fix.getPosition()); - Vector2D tangent1 = new Vector2D(prevFix.getSpeed().getBearing(), prevFix.getSpeed().getKnots() * TANGENT_SCALING_FACTOR /* abhängig von Bootsklasse, zeitl. Abstand zw. Fixes */); + Vector2D tangent1 = new Vector2D(prevFix.getSpeed().getBearing(), prevFix.getSpeed().getKnots() * TANGENT_SCALING_FACTOR /* abh�ngig von Bootsklasse, zeitl. Abstand zw. Fixes */); Vector2D tangent2 = new Vector2D(fix.getSpeed().getBearing(), fix.getSpeed().getKnots() * TANGENT_SCALING_FACTOR); HermiteCurve interpolatedCourse = new HermiteCurve(point1, point2, tangent1, tangent2); 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 583451c638e..0e5c8bca2bd 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 @@ -31,7 +31,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.racelog.Flags; @@ -63,6 +62,7 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class MockedTrackedRace implements DynamicTrackedRace { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithFixedRank.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithFixedRank.java index ab35163756e..94e19efcafc 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithFixedRank.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithFixedRank.java @@ -12,7 +12,7 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.impl.CourseImpl; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class MockedTrackedRaceWithFixedRank extends MockedTrackedRace { private static final long serialVersionUID = -8587203762630194172L; 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 5a9edb89323..f247a8860dd 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 @@ -24,7 +24,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.racelog.RaceLog; @@ -51,6 +50,7 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java index e252ad6e434..c382dea5ba6 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java @@ -21,7 +21,6 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet; @@ -41,6 +40,7 @@ import com.sap.sailing.domain.tractracadapter.impl.DomainFactoryImpl; import com.sap.sailing.domain.tractracadapter.impl.RaceCourseReceiver; import com.sap.sailing.domain.tractracadapter.impl.Simulator; import com.tractrac.model.lib.api.data.IPosition; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.model.lib.api.event.ICompetitor; @@ -64,7 +64,7 @@ public interface DomainFactory { com.sap.sailing.domain.common.Position createPosition(IPosition position); - com.sap.sailing.domain.common.TimePoint createTimePoint(long timestamp); + com.sap.sse.common.TimePoint createTimePoint(long timestamp); Course createCourse(String name, Iterable> controlPoints); diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java index 6445747068d..4d57036c72f 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java @@ -15,10 +15,10 @@ import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.util.DateParser; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceRecord { private static final Logger logger = Logger.getLogger(RaceRecord.class.getName()); diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracAdapter.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracAdapter.java index 71909ea6b6a..ad3add2cd32 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracAdapter.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracAdapter.java @@ -12,11 +12,11 @@ import java.util.List; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.tracking.RaceHandle; import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tracking.WindStore; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface TracTracAdapter { diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracControlPoint.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracControlPoint.java index caefebcceb3..63334e0d58e 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracControlPoint.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/TracTracControlPoint.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.tractracadapter; import java.util.UUID; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; import com.tractrac.model.lib.api.event.IEvent; import com.tractrac.model.lib.api.route.IControlPoint; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/AbstractWithID.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/AbstractWithID.java index 7e37f54c3e0..370d7b9e29f 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/AbstractWithID.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/AbstractWithID.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.tractracadapter.impl; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; /** * Implements hash code and equality based on the control point's UUID. diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 794521a1c31..e4458aebd1b 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -45,10 +45,8 @@ import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -76,8 +74,10 @@ import com.sap.sailing.domain.tractracadapter.TracTracControlPoint; import com.sap.sailing.domain.tractracadapter.TracTracRaceTracker; import com.sap.sailing.util.WeakIdentityHashMap; import com.tractrac.model.lib.api.data.IPosition; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.model.lib.api.event.ICompetitor; import com.tractrac.model.lib.api.event.ICompetitorClass; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java index ecc47c494f7..6edcc5b3acb 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/MarkPassingReceiver.java @@ -10,16 +10,16 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.tractrac.model.lib.api.data.IControlPassing; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.data.IControlPassings; import com.tractrac.model.lib.api.event.IEvent; import com.tractrac.model.lib.api.event.IRaceCompetitor; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java index 2ae5e70a74b..2cfd1880a1c 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java @@ -16,8 +16,6 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet; @@ -26,7 +24,9 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.domain.tractracadapter.TracTracControlPoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.event.IEvent; import com.tractrac.model.lib.api.event.IRace; import com.tractrac.model.lib.api.route.IControl; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceStartedAndFinishedReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceStartedAndFinishedReceiver.java index bde2217b370..72d81ae6b32 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceStartedAndFinishedReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceStartedAndFinishedReceiver.java @@ -5,12 +5,12 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.ControlPoint; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tractracadapter.DomainFactory; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.tractrac.model.lib.api.data.IStartStopData; import com.tractrac.model.lib.api.event.IEvent; import com.tractrac.model.lib.api.event.IRace; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java index 0fbef2ebfa0..b56519c9a53 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java @@ -7,7 +7,6 @@ import java.net.URISyntaxException; import java.net.URL; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.RaceTracker; @@ -15,6 +14,7 @@ import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tractracadapter.DomainFactory; +import com.sap.sse.common.TimePoint; import com.tractrac.model.lib.api.event.CreateModelException; import com.tractrac.subscription.lib.api.SubscriberInitializationException; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/Simulator.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/Simulator.java index 3bdf6cb0715..9e61efb7308 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/Simulator.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/Simulator.java @@ -10,10 +10,8 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; @@ -24,6 +22,8 @@ import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class Simulator { private static final Logger logger = Logger.getLogger(Simulator.class.getName()); diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java index c27327c7eaf..8556b9a8a7b 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java @@ -10,7 +10,6 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.tracking.RaceHandle; import com.sap.sailing.domain.tracking.TrackedRace; @@ -21,6 +20,7 @@ import com.sap.sailing.domain.tractracadapter.JSONService; import com.sap.sailing.domain.tractracadapter.RaceRecord; import com.sap.sailing.domain.tractracadapter.TracTracAdapter; import com.sap.sailing.domain.tractracadapter.TracTracConfiguration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class TracTracAdapterImpl implements TracTracAdapter { 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 4fb3bf2d559..af5930be97e 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 @@ -25,7 +25,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; @@ -46,6 +45,7 @@ import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.domain.tractracadapter.Receiver; import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants; import com.sap.sailing.domain.tractracadapter.TracTracRaceTracker; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.tractrac.model.lib.api.ModelLocator; import com.tractrac.model.lib.api.event.CreateModelException; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java index 9f014df4ebf..5679675f4cc 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java @@ -10,8 +10,8 @@ import java.util.logging.Logger; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.StartTimeChangedListener; +import com.sap.sse.common.TimePoint; public class TracTracStartTimeResetHandler extends UpdateHandler implements StartTimeChangedListener { diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java index 0608ed2232f..a4efe049624 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java @@ -11,8 +11,8 @@ import java.util.logging.Logger; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.StartTimeChangedListener; +import com.sap.sse.common.TimePoint; public class TracTracStartTimeUpdateHandler extends UpdateHandler implements StartTimeChangedListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java index a9bad5f525b..5c7bd10c123 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java @@ -9,7 +9,6 @@ import com.sap.sailing.domain.base.impl.DomainFactoryImpl; import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.PlacemarkDTO; @@ -22,6 +21,7 @@ import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.TimePoint; public interface DomainFactory extends SharedDomainFactory { /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java index 40e7bddd570..eda3492c879 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.base; import java.io.Serializable; -import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; /** * Tells the {@link BoatClass boat class} and the {@link Course course} for a single race that is usually part of a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java index 449bd68b010..fd16747d261 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; /** * The name shall be unique across all regattas tracked concurrently. In particular, if you want to diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java index 69356fe5bc5..85b5c593805 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java @@ -23,7 +23,6 @@ import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; @@ -34,7 +33,6 @@ import com.sap.sailing.domain.common.dto.RaceDTO; import com.sap.sailing.domain.common.dto.RaceStatusDTO; import com.sap.sailing.domain.common.dto.TrackedRaceDTO; import com.sap.sailing.domain.common.dto.TrackedRaceStatisticsDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ScoringScheme; @@ -60,7 +58,9 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl; import com.sap.sailing.geocoding.ReverseGeocoder; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DomainFactoryImpl extends SharedDomainFactoryImpl implements DomainFactory { private static Logger logger = Logger.getLogger(DomainFactoryImpl.class.getName()); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DouglasPeucker.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DouglasPeucker.java index 9b70bda3c90..f5d2948e45f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DouglasPeucker.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DouglasPeucker.java @@ -16,9 +16,9 @@ import java.util.concurrent.RunnableFuture; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixTrack; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java index 7664b9c0f54..d1f656a275d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java @@ -25,9 +25,9 @@ import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.common.ImageSize; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.ImageSizeImpl; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class EventImpl extends EventBaseImpl implements Event { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/KilometersPerHourSpeedWithBearingImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/KilometersPerHourSpeedWithBearingImpl.java index 1cb58678dd7..0a21afa70b2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/KilometersPerHourSpeedWithBearingImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/KilometersPerHourSpeedWithBearingImpl.java @@ -5,10 +5,10 @@ import com.sap.sailing.domain.common.CourseChange; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.AbstractSpeedWithAbstractBearingImpl; import com.sap.sailing.domain.common.impl.AbstractSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; +import com.sap.sse.common.TimePoint; public class KilometersPerHourSpeedWithBearingImpl extends KilometersPerHourSpeedImpl implements SpeedWithBearing { private static final long serialVersionUID = 5749611820871048625L; 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 93d0c8bf0a3..3bc4dbd1f06 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 @@ -15,18 +15,18 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.leaderboard.caching.LeaderboardDTOCache; import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** @@ -179,7 +179,7 @@ public interface Leaderboard extends LeaderboardBase { Map getCompetitorsForWhichThereAreCarriedPoints(); /** - * Shorthand for {@link TrackedRace#getRank(Competitor, com.sap.sailing.domain.common.TimePoint)} with the + * Shorthand for {@link TrackedRace#getRank(Competitor, com.sap.sse.common.TimePoint)} with the * additional logic that in case the race hasn't {@link TrackedRace#hasStarted(TimePoint) started} yet * or no {@link TrackedRace} exists for race, 0 will be returned for all those competitors. The tracked * race for the correct {@link Fleet} is determined using {@link RaceColumn#getTrackedRace(Competitor)}.

diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java index f6e7ef2b115..f21a7be3a32 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java @@ -18,7 +18,6 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.WithNationality; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.leaderboard.caching.LeaderboardCache; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -33,6 +32,7 @@ import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.util.impl.ConcurrentWeakHashMap; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; /** * Manages a {@link LeaderboardCache}. When a {@link Leaderboard} is {@link LeaderboardCache#add added} to the cache, it diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardGroup.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardGroup.java index 84472272866..0279d31161a 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardGroup.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardGroup.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.UUID; import com.sap.sailing.domain.base.LeaderboardGroupBase; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; /** * A leaderboard group is used to group one or more {@link Leaderboard}s. If can be used to represent all or part of the diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ResultDiscardingRule.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ResultDiscardingRule.java index ae524928f9d..4e56f8ec57a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ResultDiscardingRule.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ResultDiscardingRule.java @@ -5,7 +5,7 @@ import java.util.Set; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * A result discarding rule is used to determine for a competitor those races from a list of diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoreCorrection.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoreCorrection.java index 9a86db3d2f8..1fd99932582 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoreCorrection.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoreCorrection.java @@ -6,8 +6,8 @@ import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; /** * Manages score corrections for a competitor in a race, in particular handling the following use cases: diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java index 1b5a5d8cccc..3265f108ac5 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java @@ -11,8 +11,8 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/SettableScoreCorrection.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/SettableScoreCorrection.java index 171f26b02a5..b41b658e73d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/SettableScoreCorrection.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/SettableScoreCorrection.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.leaderboard; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface SettableScoreCorrection extends ScoreCorrection { void addScoreCorrectionListener(ScoreCorrectionListener listener); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java index 1ae4cc26ea8..db2fa16349e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java @@ -17,7 +17,6 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardCacheManager; @@ -28,11 +27,12 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; import com.sap.sailing.util.impl.ThreadFactoryWithPriority; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** * Caches the expensive to compute {@link LeaderboardDTO} results of a - * {@link SailingServiceImpl#computeLeaderboardByName(String, com.sap.sailing.domain.common.TimePoint, Collection, boolean)} call. + * {@link SailingServiceImpl#computeLeaderboardByName(String, com.sap.sse.common.TimePoint, Collection, boolean)} call. * By listening as {@link RaceChangeListener} on all tracked races attached to the leaderboard, and by updating this list * by listening as {@link RaceColumnListener} on the {@link Leaderboard}, each time a race attached to a leaderboard for which * this cache holds one or more {@link LeaderboardDTO}s changes, the cache entries for that leaderboard are removed. Also, diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCalculationReuseCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCalculationReuseCache.java index 318720b7a0c..c6c6403ba5c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCalculationReuseCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCalculationReuseCache.java @@ -7,19 +7,19 @@ import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.impl.AbstractSimpleLeaderboardImpl; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; /** * A cache structure that is used for a single call to - * {@link AbstractSimpleLeaderboardImpl#computeDTO(com.sap.sailing.domain.common.TimePoint, java.util.Collection, boolean, boolean, com.sap.sailing.domain.tracking.TrackedRegattaRegistry, com.sap.sailing.domain.base.DomainFactory)}. + * {@link AbstractSimpleLeaderboardImpl#computeDTO(com.sap.sse.common.TimePoint, java.util.Collection, boolean, boolean, com.sap.sailing.domain.tracking.TrackedRegattaRegistry, com.sap.sailing.domain.base.DomainFactory)}. * It is to be passed on to various query methods that may required common data that is expensive to compute and * depends on equal parameters, such as an equal time point. The underlying assumption is that during one leaderboard (re-)calculation cycle the * dynamic changes in the wind field and the mark positions can safely be ignored so that wind data for competitors and legs and the legs' diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java index f4ae690ef42..19d94fc6273 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java @@ -10,11 +10,11 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Computing a leaderboard live, particularly when the fleet tracked is large, requires considerable resources. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java index 59114f0d9a6..f68c204399f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java @@ -12,10 +12,10 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.ScoreCorrection; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; /** * Abstract leaderboard implementation that already knows about carried points, competitor display name re-keying, diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java index 287a24d80e3..0124019ae99 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java @@ -13,10 +13,10 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public abstract class AbstractScoringSchemeImpl implements ScoringScheme { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 1df3a765563..06364bd7ecb 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -40,7 +40,6 @@ import com.sap.sailing.domain.base.RaceColumnInSeries; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.MaxPointsReason; @@ -50,7 +49,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; @@ -59,7 +57,6 @@ import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.LegEntryDTO; import com.sap.sailing.domain.common.dto.RaceDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; @@ -91,7 +88,10 @@ import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; import com.sap.sailing.util.impl.RaceColumnListeners; import com.sap.sailing.util.impl.ThreadFactoryWithPriority; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Base implementation for various types of leaderboards. The {@link RaceColumnListener} implementation forwards events diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java index 9da8d934900..0ce6d2faeab 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java @@ -6,9 +6,9 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java index d42b8a7a1f4..a85ea2e808c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java @@ -9,10 +9,10 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java index 281a47b0310..c2a5e0e70b0 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java @@ -13,9 +13,9 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.NoWindError; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ScoringScheme; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java index 0a8ee7899c2..fb9e7fb803a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java @@ -6,9 +6,9 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/PerSeriesResultDiscardingRuleImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/PerSeriesResultDiscardingRuleImpl.java index 250dd101182..0e5c2800089 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/PerSeriesResultDiscardingRuleImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/PerSeriesResultDiscardingRuleImpl.java @@ -7,9 +7,9 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java index 58de4b67574..725ddd97fcb 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java @@ -14,7 +14,6 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; import com.sap.sailing.domain.leaderboard.ScoreCorrectionListener; @@ -22,6 +21,7 @@ import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ThresholdBasedResultDiscardingRuleImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ThresholdBasedResultDiscardingRuleImpl.java index d31f7134056..31fee166aa9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ThresholdBasedResultDiscardingRuleImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ThresholdBasedResultDiscardingRuleImpl.java @@ -19,9 +19,9 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindError; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; +import com.sap.sse.common.TimePoint; /** * Discards i results if the number of races started is greater or equal to 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 dba8eb2aeb1..5da296d39de 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 @@ -18,7 +18,6 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; import com.sap.sailing.domain.leaderboard.ScoreCorrectionListener; @@ -27,6 +26,7 @@ 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.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardScoreCorrection.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardScoreCorrection.java index 4e1e4cd2a94..11206d8011e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardScoreCorrection.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardScoreCorrection.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.leaderboard.meta; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class MetaLeaderboardScoreCorrection extends ScoreCorrectionImpl { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/Candidate.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/Candidate.java index 041869b02c6..8e6dd45374e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/Candidate.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/Candidate.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.markpassingcalculation; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * A possible passing of a {@link Waypoint}. It contains the {@link Waypoint} that it might be passing, a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateChooser.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateChooser.java index 261a20eccfa..97318ab4b97 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateChooser.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateChooser.java @@ -14,12 +14,12 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.impl.MarkPassingImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateFinder.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateFinder.java index a6a31d751f9..75814996290 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateFinder.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateFinder.java @@ -19,11 +19,11 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFix; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PerRaceAndCompetitorPolarSheetGenerationWorker.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PerRaceAndCompetitorPolarSheetGenerationWorker.java index 6c7270f181c..9b3fefc6072 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PerRaceAndCompetitorPolarSheetGenerationWorker.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PerRaceAndCompetitorPolarSheetGenerationWorker.java @@ -11,7 +11,6 @@ import java.util.Set; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -19,6 +18,7 @@ import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindWithConfidence; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarFix.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarFix.java index 2cd6b47d21f..dd9fa06a434 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarFix.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarFix.java @@ -10,13 +10,13 @@ import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public class PolarFix { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarSheetGenerationWorker.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarSheetGenerationWorker.java index 512ec0c81c0..8d56adaf30c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarSheetGenerationWorker.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polarsheets/PolarSheetGenerationWorker.java @@ -19,10 +19,10 @@ import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.PolarSheetsData; import com.sap.sailing.domain.common.PolarSheetsHistogramData; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.PolarSheetsDataImpl; import com.sap.sailing.domain.common.impl.WindSteppingWithMaxDistance; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; /** * Allows extracting data about average speed for each angle creating the foundation of polar-sheet generation. Tasks diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceStateOfSameDayHelper.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceStateOfSameDayHelper.java index c6a5d4f100e..30bcbf35bca 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceStateOfSameDayHelper.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceStateOfSameDayHelper.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.racelog; import java.util.Calendar; import java.util.Date; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class RaceStateOfSameDayHelper { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifier.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifier.java index 1c55f76dca8..5733f136311 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifier.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifier.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.trackfiles; import java.util.UUID; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sse.common.TimePoint; /** * Identifies a device that generated fixes imported from a track file, such as a GPX file. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifierImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifierImpl.java index 8073ace5fbd..0fee9f1d938 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifierImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/trackfiles/TrackFileImportDeviceIdentifierImpl.java @@ -4,10 +4,10 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackFileImportDeviceIdentifierImpl implements TrackFileImportDeviceIdentifier { private static final long serialVersionUID = 552465264341485161L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java index 34e528415b5..0c13b707efa 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java @@ -5,9 +5,9 @@ import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface DynamicTrackedRace extends TrackedRace { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/GPSFixTrack.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/GPSFixTrack.java index be51d2c670f..fc716b6cae2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/GPSFixTrack.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/GPSFixTrack.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.Weigher; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegBearingCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegBearingCache.java index 40af8fb53c3..4ebcbf5f692 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegBearingCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegBearingCache.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.tracking; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * When comprehensive calculations are prone to query a leg's bearing several times for the same leg for diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegTypeCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegTypeCache.java index dc086b3fd31..b319af6d2c6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegTypeCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LegTypeCache.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.tracking; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * When comprehensive calculations are prone to query the leg type several times for the same leg for the same time diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java index 76bad215d50..8f10b68174b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java @@ -5,7 +5,7 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NauticalSide; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * For a line such as a start or a finish line, tells the line's length at a given time, which side is diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java index 5fe31595664..249150da675 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java @@ -6,8 +6,8 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseListener; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; +import com.sap.sse.common.TimePoint; public interface RaceChangeListener extends CourseListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java index 8f6d1542470..895aa71be57 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.tracking; import java.io.IOException; import java.net.MalformedURLException; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface StartTimeChangedListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java index 9e3afe0911d..923ae63b150 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java @@ -10,8 +10,8 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; +import com.sap.sse.common.TimePoint; public interface TrackedLeg extends Serializable { Leg getLeg(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLegOfCompetitor.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLegOfCompetitor.java index ae3d5add2bd..99d8c1bb697 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLegOfCompetitor.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLegOfCompetitor.java @@ -7,12 +7,12 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface TrackedLegOfCompetitor extends Serializable { 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 3a117bc8ac3..f43031a9f58 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 @@ -23,7 +23,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimingConstants; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSource; @@ -32,6 +31,7 @@ import com.sap.sailing.domain.common.dto.TrackedRaceDTO; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRegatta.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRegatta.java index 4eb4c801d65..bdffd02721c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRegatta.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRegatta.java @@ -9,8 +9,8 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.base.impl.TrackedRaces; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; +import com.sap.sse.common.TimePoint; /** * Manages a set of {@link TrackedRace} objects that belong to the same {@link Regatta} (regatta, sailing regatta for a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindCache.java index f677429f7d3..cd9047f6c3a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindCache.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.tracking; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * When comprehensive calculations are prone to query wind several times for the same competitor in the same race for diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindTrack.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindTrack.java index 0c0ec09e328..9a8b2dde7db 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindTrack.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindTrack.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.tracking; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public interface WindTrack extends DynamicTrack { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindWithConfidence.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindWithConfidence.java index e9958ac0cf4..02216100872 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindWithConfidence.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/WindWithConfidence.java @@ -1,9 +1,9 @@ package com.sap.sailing.domain.tracking; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable; import com.sap.sailing.domain.tracking.impl.ScalableWind; +import com.sap.sse.common.TimePoint; /** * In order to scale a wind value, a specific type is used: {@link ScalableWind}. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java index cb76097f12b..e1acf1a7ced 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java @@ -5,7 +5,6 @@ import java.util.Map; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -13,6 +12,7 @@ import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public abstract class AbstractRaceChangeListener implements RaceChangeListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindAsNavigableSet.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindAsNavigableSet.java index d1255c3c8cf..691ba4e1812 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindAsNavigableSet.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindAsNavigableSet.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.tracking.impl; import java.util.NavigableSet; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Delivers what {@link TrackedRace#getWind(Position, TimePoint)} delivers, as a navigable set. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindTrackImpl.java index 3abf99cc582..f4853e03cb3 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CombinedWindTrackImpl.java @@ -1,19 +1,19 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.TrackBasedEstimationWindTrackImpl.EstimatedWindFixesAsNavigableSet; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** * A wind track that delivers the result of - * {@link TrackedRace#getWind(com.sap.sailing.domain.common.Position, com.sap.sailing.domain.common.TimePoint)}, + * {@link TrackedRace#getWind(com.sap.sailing.domain.common.Position, com.sap.sse.common.TimePoint)}, * using a {@link CombinedWindAsNavigableSet} as its internal raw fixes collection. Resolution of raw fixes is set to 10s. - * As the result of {@link TrackedRace#getWind(com.sap.sailing.domain.common.Position, com.sap.sailing.domain.common.TimePoint)} + * As the result of {@link TrackedRace#getWind(com.sap.sailing.domain.common.Position, com.sap.sse.common.TimePoint)} * is already a smoothened, outlier-removed and averaged value, the averaging methods {@link #getAveragedWind(Position, TimePoint)} * and {@link #getAveragedWindWithConfidence(Position, TimePoint)} are redefined such that they immediately delegate * to {@link TrackedRace#getWindWithConfidence(Position, TimePoint)}. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java index 1071c4b254e..56009cdc0fb 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java @@ -5,10 +5,10 @@ import com.sap.sailing.domain.common.AbstractPosition; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.AbstractSpeedWithAbstractBearingImpl; -import com.sap.sailing.domain.common.impl.AbstractTimePoint; import com.sap.sailing.domain.tracking.GPSFix; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.AbstractTimePoint; /** * A compact representation of a GPS fix which collects all primitive-typed attributes in one object to avoid diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java index 4b0a9c58173..a82a0fbf939 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java @@ -7,10 +7,10 @@ import com.sap.sailing.domain.common.CourseChange; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.AbstractSpeedWithAbstractBearingImpl; import com.sap.sailing.domain.common.impl.AbstractSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.GPSFixMoving; +import com.sap.sse.common.TimePoint; /** * A memory-conserving representation of a {@link GPSFixMoving} object that produces the fine-grained diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactWindImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactWindImpl.java index c4625b81211..03f8d0db6f9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactWindImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactWindImpl.java @@ -4,10 +4,10 @@ import com.sap.sailing.domain.common.AbstractBearing; import com.sap.sailing.domain.common.AbstractPosition; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.AbstractSpeedWithAbstractBearingImpl; -import com.sap.sailing.domain.common.impl.AbstractTimePoint; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.AbstractTimePoint; public class CompactWindImpl extends AbstractSpeedWithAbstractBearingImpl implements Wind { private static final long serialVersionUID = -5059956032663387929L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseBasedWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseBasedWindTrackImpl.java index 5689ee09d53..205a00825da 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseBasedWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseBasedWindTrackImpl.java @@ -2,13 +2,13 @@ package com.sap.sailing.domain.tracking.impl; import java.util.NavigableSet; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSourceType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.UnmodifiableNavigableSet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * The only "raw" fix produced by this wind track implementation is based on the course layout of the tracked race to diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CrossTrackErrorCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CrossTrackErrorCache.java index 5b5ddce5a03..7db5e246c46 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CrossTrackErrorCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CrossTrackErrorCache.java @@ -17,9 +17,7 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -31,6 +29,8 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.util.SmartFutureCache; import com.sap.sailing.util.SmartFutureCache.CacheUpdater; import com.sap.sailing.util.SmartFutureCache.UpdateInterval; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * (Re-)computing the cross track error for a competitor causes significant amounts of CPU cycles. The cross track error diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DistanceCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DistanceCache.java index 33742217036..4f5f95b4f9a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DistanceCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DistanceCache.java @@ -5,11 +5,11 @@ import java.util.Iterator; import java.util.NavigableSet; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java index 447a582196f..efec75d152e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.Team; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sse.common.TimePoint; public class DummyMarkPassingWithTimePointOnly implements MarkPassing { private static final long serialVersionUID = -5494669910047887984L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixMovingTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixMovingTrackImpl.java index 9fd5fb15d0e..7b327c018fd 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixMovingTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixMovingTrackImpl.java @@ -11,7 +11,6 @@ import com.sap.sailing.domain.base.impl.SpeedWithConfidenceImpl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.BearingWithConfidence; import com.sap.sailing.domain.common.confidence.BearingWithConfidenceCluster; import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager; @@ -22,6 +21,7 @@ import com.sap.sailing.domain.common.confidence.impl.BearingWithConfidenceImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.DynamicGPSFixTrack; import com.sap.sailing.domain.tracking.GPSFixMoving; +import com.sap.sse.common.TimePoint; public class DynamicGPSFixMovingTrackImpl extends GPSFixTrackImpl implements DynamicGPSFixTrack{ private static final long serialVersionUID = 9111448573301259784L; 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 e8670fd8143..4cfad9e3e35 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 @@ -28,11 +28,9 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimingConstants; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; @@ -57,7 +55,9 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class DynamicTrackedRaceImpl extends TrackedRaceImpl implements DynamicTrackedRace, GPSTrackListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java index f11e21ff146..7d766c7b750 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java @@ -3,7 +3,6 @@ package com.sap.sailing.domain.tracking.impl; import java.util.logging.Logger; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.WindSourceImpl; @@ -21,6 +20,7 @@ import com.sap.sailing.domain.racelog.analyzing.impl.WindFixesFinder; import com.sap.sailing.domain.racelog.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; /** * TODO: this class could be a good place to leverage more information about a race containing in the {@link RaceLog}. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixImpl.java index b1c10bee3cc..5adc6eb44d6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixImpl.java @@ -1,10 +1,10 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Equality / hash code are based on {@link #getPosition()}'s and {@link #getTimePoint()}'s equality / hash code. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixMovingImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixMovingImpl.java index c756f75a48f..5c9f8c3af5e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixMovingImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixMovingImpl.java @@ -2,12 +2,12 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFixMoving; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class GPSFixMovingImpl extends GPSFixImpl implements GPSFixMoving { private static final long serialVersionUID = 6508021498142383100L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixTrackImpl.java index 3afc15fa39d..10341649190 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/GPSFixTrackImpl.java @@ -27,7 +27,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.BearingWithConfidence; import com.sap.sailing.domain.common.confidence.BearingWithConfidenceCluster; import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager; @@ -37,7 +36,6 @@ import com.sap.sailing.domain.common.confidence.Weigher; import com.sap.sailing.domain.common.confidence.impl.BearingWithConfidenceImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -45,7 +43,9 @@ import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.GPSTrackListener; import com.sap.sailing.domain.tracking.WithValidityCache; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class GPSFixTrackImpl extends TrackImpl implements GPSFixTrack { private static final Logger logger = Logger.getLogger(GPSFixTrackImpl.class.getName()); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java index e2571591843..20da3d93a3d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java @@ -5,8 +5,8 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NauticalSide; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.LineDetails; +import com.sap.sse.common.TimePoint; public class LineDetailsImpl implements LineDetails { private final TimePoint timePoint; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ManeuverImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ManeuverImpl.java index 7c9bc505be2..a64eabd8176 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ManeuverImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ManeuverImpl.java @@ -5,8 +5,8 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.Maneuver; +import com.sap.sse.common.TimePoint; /** * @author Axel Uhl (d043530) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingForOffsetImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingForOffsetImpl.java index f1e6439c951..e031d89ebd9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingForOffsetImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingForOffsetImpl.java @@ -2,9 +2,9 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.MarkPassingForOffsetWaypoint; +import com.sap.sse.common.TimePoint; public class MarkPassingForOffsetImpl extends MarkPassingImpl implements MarkPassingForOffsetWaypoint { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingImpl.java index 7c4966c3d88..0c7ba574bab 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingImpl.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Waypoint; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sse.common.TimePoint; public class MarkPassingImpl implements MarkPassing { private static final long serialVersionUID = -2673562761742403742L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingManeuverImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingManeuverImpl.java index 8ab4dfb8235..f20cebb589a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingManeuverImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MarkPassingManeuverImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.MarkPassingManeuver; +import com.sap.sse.common.TimePoint; public class MarkPassingManeuverImpl extends ManeuverImpl implements MarkPassingManeuver { private static final long serialVersionUID = 8935348908557191614L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MaxSpeedCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MaxSpeedCache.java index 48cdcacc693..59ff6c80765 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MaxSpeedCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/MaxSpeedCache.java @@ -8,7 +8,6 @@ import java.util.Map.Entry; import java.util.NavigableSet; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -16,6 +15,7 @@ import com.sap.sailing.domain.tracking.GPSTrackListener; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; @@ -23,7 +23,7 @@ import com.sap.sse.common.Util.Pair; * Re-calculating the maximum speed over a {@link GPSFixTrack} is time consuming. When the track grows the way it * usually grows (extending at the end), caching can help to reduce the computational effort. The API for computing the * maximum speed ( - * {@link GPSFixTrack#getMaximumSpeedOverGround(com.sap.sailing.domain.common.TimePoint, com.sap.sailing.domain.common.TimePoint)} + * {@link GPSFixTrack#getMaximumSpeedOverGround(com.sap.sse.common.TimePoint, com.sap.sse.common.TimePoint)} * ) allows clients to specify an interval for which the top speed is to be computed. Therefore, this cache offers a * similar API which supports interval-based queries. *

diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/NoCachingWindLegTypeAndLegBearingCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/NoCachingWindLegTypeAndLegBearingCache.java index db8e22865fd..0e353696763 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/NoCachingWindLegTypeAndLegBearingCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/NoCachingWindLegTypeAndLegBearingCache.java @@ -4,11 +4,11 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; +import com.sap.sse.common.TimePoint; /** * This trivial "cache" implementation doesn't cache and may be used as a default for those cases where only few diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java index eff98aa1050..4f9e4e554f2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java @@ -10,12 +10,12 @@ import java.util.SortedSet; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.caching.LeaderboardDTOCalculationReuseCache; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindPositionMode; +import com.sap.sse.common.TimePoint; /** * Compares two competitors by their ranking in the overall race for a given time point. Competitors who haven't started diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ScalableWind.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ScalableWind.java index c9611e5c0c3..bd8efce45b0 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ScalableWind.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ScalableWind.java @@ -2,11 +2,11 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.common.AbstractPosition; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.scalablevalue.ScalableValue; import com.sap.sailing.domain.common.scalablevalue.impl.ScalablePosition; import com.sap.sailing.domain.common.scalablevalue.impl.ScalableSpeedWithBearing; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Wind values are scaled by separately scaling their speed and bearing, and separately scaling their time point, and diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ShortTimeWindCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ShortTimeWindCache.java index 21e12985a66..ca115d83d22 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ShortTimeWindCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/ShortTimeWindCache.java @@ -9,9 +9,9 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.WindWithConfidence; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; import com.sap.sse.common.Util.Triple; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java index c2f4f47f4e8..71442fed35d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java @@ -18,17 +18,13 @@ import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.confidence.Weigher; import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher; -import com.sap.sailing.domain.common.impl.AbstractTimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; -import com.sap.sailing.domain.common.impl.SerializableComparator; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; @@ -41,8 +37,12 @@ import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.AbstractTimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.impl.SerializableComparator; /** * A virtual wind track that computes and caches the wind bearing based on the boat tracks recorded in the tracked race diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index 48dfa7b8521..acf470926e1 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -21,7 +21,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.MeterDistance; @@ -36,6 +35,7 @@ import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; import com.sap.sailing.domain.tracking.WindPositionMode; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class TrackedLegImpl implements TrackedLeg, RaceChangeListener { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java index 4bd454355fa..88f611f705b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java @@ -13,14 +13,12 @@ import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; @@ -35,6 +33,8 @@ import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** 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 27926195106..5bfe0f03693 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 @@ -49,7 +49,6 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.BearingChangeAnalyzer; import com.sap.sailing.domain.common.CourseChange; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NauticalSide; @@ -61,7 +60,6 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimingConstants; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WindSource; @@ -76,7 +74,6 @@ import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher import com.sap.sailing.domain.common.impl.CentralAngleDistance; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; @@ -114,8 +111,11 @@ import com.sap.sailing.util.SmartFutureCache.EmptyUpdateInterval; import com.sap.sailing.util.impl.ArrayListNavigableSet; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.MillisecondsTimePoint; import difflib.DiffUtils; import difflib.Patch; 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 052cc12c2d7..7ee9077c398 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 @@ -18,7 +18,6 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet; import com.sap.sailing.domain.tracking.DynamicTrackedRace; @@ -26,6 +25,7 @@ import com.sap.sailing.domain.tracking.RaceListener; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.WindStore; +import com.sap.sse.common.TimePoint; public class TrackedRegattaImpl implements TrackedRegatta { private static final long serialVersionUID = 6480508193567014285L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindFixesAsNavigableSet.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindFixesAsNavigableSet.java index fb385c29c87..514df3ae523 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindFixesAsNavigableSet.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindFixesAsNavigableSet.java @@ -6,14 +6,14 @@ import java.util.NavigableSet; import java.util.SortedSet; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.WindTrackImpl.DummyWind; import com.sap.sailing.util.impl.AbstractUnmodifiableNavigableSet; import com.sap.sailing.util.impl.DescendingNavigableSet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Emulates a collection of {@link Wind} fixes for a {@link TrackedRace}. Subclasses have to specify a resolution and a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindTrackImpl.java index 83f46f02258..c3a1098d1e6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/VirtualWindTrackImpl.java @@ -3,10 +3,10 @@ package com.sap.sailing.domain.tracking.impl; import java.util.NavigableSet; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindWithConfidence; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java index 150a40a2bd5..215029a0086 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java @@ -18,7 +18,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher; import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager; import com.sap.sailing.domain.confidence.ConfidenceFactory; @@ -27,6 +26,7 @@ import com.sap.sailing.domain.tracking.WindListener; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.util.impl.ArrayListNavigableSet; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindwardToGoComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindwardToGoComparator.java index c062aa89d77..896a1c73250 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindwardToGoComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindwardToGoComparator.java @@ -9,12 +9,12 @@ import java.util.SortedSet; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NoWindError; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; import com.sap.sailing.domain.tracking.WindPositionMode; +import com.sap.sse.common.TimePoint; /** * Compares competitor tracks based on the windward distance they still have to go and/or leg completion times at a diff --git a/java/com.sap.sailing.ess40.resultimport.test/src/com/sap/sailing/ess40/resultimport/test/SimpleESS40ResultImportTest.java b/java/com.sap.sailing.ess40.resultimport.test/src/com/sap/sailing/ess40/resultimport/test/SimpleESS40ResultImportTest.java index 4cbd45a6293..01cc4328a2e 100755 --- a/java/com.sap.sailing.ess40.resultimport.test/src/com/sap/sailing/ess40/resultimport/test/SimpleESS40ResultImportTest.java +++ b/java/com.sap.sailing.ess40.resultimport.test/src/com/sap/sailing/ess40/resultimport/test/SimpleESS40ResultImportTest.java @@ -15,8 +15,8 @@ import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; import com.sap.sailing.domain.common.ScoreCorrectionProvider; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.ess40.resultimport.impl.ScoreCorrectionProviderImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class SimpleESS40ResultImportTest { diff --git a/java/com.sap.sailing.ess40.resultimport/src/com/sap/sailing/ess40/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.ess40.resultimport/src/com/sap/sailing/ess40/resultimport/impl/ScoreCorrectionProviderImpl.java index d3202a1614b..a8d5670fd1b 100755 --- a/java/com.sap.sailing.ess40.resultimport/src/com/sap/sailing/ess40/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.ess40.resultimport/src/com/sap/sailing/ess40/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -19,9 +19,9 @@ import java.util.regex.Pattern; import com.sap.sailing.domain.common.Base64Utils; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.ScoreCorrectionProvider; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider { private static final long serialVersionUID = -4870646572106575667L; diff --git a/java/com.sap.sailing.expeditionconnector.test/src/com/sap/sailing/expeditionconnector/test/UDPExpeditionReceiverTest.java b/java/com.sap.sailing.expeditionconnector.test/src/com/sap/sailing/expeditionconnector/test/UDPExpeditionReceiverTest.java index 0341aecbe52..3a7242ec22d 100755 --- a/java/com.sap.sailing.expeditionconnector.test/src/com/sap/sailing/expeditionconnector/test/UDPExpeditionReceiverTest.java +++ b/java/com.sap.sailing.expeditionconnector.test/src/com/sap/sailing/expeditionconnector/test/UDPExpeditionReceiverTest.java @@ -31,10 +31,8 @@ import org.junit.rules.Timeout; import com.sap.sailing.declination.Declination; import com.sap.sailing.declination.DeclinationService; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.test.mock.MockedTrackedRace; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.Wind; @@ -43,7 +41,9 @@ import com.sap.sailing.expeditionconnector.ExpeditionMessage; import com.sap.sailing.expeditionconnector.ExpeditionWindTracker; import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory; import com.sap.sailing.expeditionconnector.UDPExpeditionReceiver; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class UDPExpeditionReceiverTest { @Rule public Timeout TestTimeout = new Timeout(60 * 1000); diff --git a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionMessage.java b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionMessage.java index 262e9104d0f..66968025314 100755 --- a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionMessage.java +++ b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionMessage.java @@ -4,10 +4,10 @@ import java.util.Set; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.udpconnector.UDPMessage; +import com.sap.sse.common.TimePoint; public interface ExpeditionMessage extends UDPMessage { /* Here is a typical sequence of data as received from Expedition diff --git a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageImpl.java b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageImpl.java index f4d33928321..775c52c2df6 100755 --- a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageImpl.java +++ b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageImpl.java @@ -10,16 +10,16 @@ import java.util.TreeSet; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.expeditionconnector.ExpeditionMessage; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ExpeditionMessageImpl implements ExpeditionMessage { private final String originalMessage; diff --git a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageParser.java b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageParser.java index 9d0929fa457..60048e375bc 100755 --- a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageParser.java +++ b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/impl/ExpeditionMessageParser.java @@ -7,11 +7,11 @@ import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.expeditionconnector.ExpeditionMessage; import com.sap.sailing.expeditionconnector.UDPExpeditionReceiver; import com.sap.sailing.udpconnector.UDPMessageParser; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ExpeditionMessageParser implements UDPMessageParser { private static final Logger logger = Logger.getLogger(ExpeditionMessageParser.class.getName()); diff --git a/java/com.sap.sailing.freg.resultimport/src/com/sap/sailing/freg/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.freg.resultimport/src/com/sap/sailing/freg/resultimport/impl/ScoreCorrectionProviderImpl.java index f62f98967fb..22344d07ba5 100755 --- a/java/com.sap.sailing.freg.resultimport/src/com/sap/sailing/freg/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.freg.resultimport/src/com/sap/sailing/freg/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -11,13 +11,13 @@ import java.util.Set; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.ScoreCorrectionProvider; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultUrlProvider; import com.sap.sailing.resultimport.ResultUrlRegistry; import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, ResultUrlProvider { private static final long serialVersionUID = 5853404150107387702L; diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/common/client/CountdownTest.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/common/client/CountdownTest.java index 544c21cc430..0c0b9b7033f 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/common/client/CountdownTest.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/common/client/CountdownTest.java @@ -7,13 +7,13 @@ import static org.junit.Assert.assertThat; import org.junit.Test; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.gwt.home.client.shared.Countdown; import com.sap.sailing.gwt.home.client.shared.Countdown.CountdownListener; import com.sap.sailing.gwt.home.client.shared.Countdown.RemainingTime; import com.sap.sailing.gwt.home.client.shared.Countdown.Unit; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class CountdownTest { 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 60b1cb9d866..fe239e0b331 100755 --- 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 @@ -29,7 +29,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.racelog.Flags; @@ -61,6 +60,7 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class MockedTrackedRace implements DynamicTrackedRace { diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java index 90385ae0fe9..ed5b0bf0344 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java @@ -31,13 +31,11 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.PolarSheetGenerationSettingsImpl; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.impl.WindSteppingWithMaxDistance; @@ -56,6 +54,8 @@ import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl; import com.sap.sailing.gwt.ui.client.SailingService; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PolarSheetGenerationServiceTest { diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index a41b9e4dcc0..7f5f6efb6d2 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -19,27 +19,28 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.resultimport, org.moxieapps.gwt.highcharts;bundle-version="1.5.0", com.sap.sailing.geocoding, - com.sap.sailing.server.replication, + com.sap.sse.replication, com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sailing.freg.resultimport, com.sap.sailing.domain.swisstimingreplayadapter, - com.sap.sailing.simulator;bundle-version="1.0.0", + com.sap.sailing.simulator, com.google.gwt.osgi;bundle-version="2.6.0", com.sap.sailing.domain.igtimiadapter, com.sap.sailing.xrr.resultimport, - com.sap.sailing.datamining.shared;bundle-version="1.0.0", - com.sap.sailing.datamining;bundle-version="1.0.0", - com.sap.sse.gwt;bundle-version="1.0.0", - com.sap.sailing.domain.racelogtrackingadapter;bundle-version="1.0.0", - com.sap.sailing.manage2sail;bundle-version="1.0.0", - com.sap.sse.common;bundle-version="1.0.0", - com.sap.sse.datamining.shared;bundle-version="1.0.0", - com.sap.sse.datamining;bundle-version="1.0.0", - com.sap.sse.security;bundle-version="1.0.0", - com.sap.sse.security.ui;bundle-version="1.0.0", + com.sap.sailing.datamining.shared, + com.sap.sailing.datamining, + com.sap.sse.gwt, + com.sap.sailing.domain.racelogtrackingadapter, + com.sap.sailing.manage2sail, + com.sap.sse.common, + com.sap.sse.datamining.shared, + com.sap.sse.datamining, + com.sap.sse.security, + com.sap.sse.security.ui, org.apache.shiro.web;bundle-version="1.2.2", org.apache.shiro.ehcache;bundle-version="1.2.3", - com.sap.sse.gwt.adminconsole;bundle-version="1.0.0" + com.sap.sse.gwt.adminconsole, + com.sap.sse.operationaltransformation Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator Bundle-ActivationPolicy: lazy Import-Package: javax.jms;version="1.1.0", diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/Countdown.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/Countdown.java index 26204f70c74..0c34b52eee0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/Countdown.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/Countdown.java @@ -2,10 +2,10 @@ package com.sap.sailing.gwt.home.client.shared; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Timer; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.gwt.common.client.i18n.TextMessages; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * A countdown notifying about changes in the two most significant time units. I.e. days+hours or hours+minutes or minutes+seconds or seconds only. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/StageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/StageTeaser.java index 8333255f927..090d002fe75 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/StageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/StageTeaser.java @@ -10,12 +10,12 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.gwt.home.client.shared.Countdown; import com.sap.sailing.gwt.home.client.shared.Countdown.CountdownListener; import com.sap.sailing.gwt.home.client.shared.Countdown.RemainingTime; import com.sap.sailing.gwt.ui.shared.EventBaseDTO; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class StageTeaser extends Composite { @UiField DivElement bandCount; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java index d5140da1321..3490ec93491 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java @@ -39,8 +39,6 @@ import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionModel; import com.google.gwt.view.client.SingleSelectionModel; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaUtil; import com.sap.sailing.gwt.ui.client.MediaServiceAsync; @@ -51,6 +49,8 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.media.NewMediaWithRaceSelectionDialog; import com.sap.sailing.gwt.ui.client.media.TimeFormatUtil; import com.sap.sailing.gwt.ui.shared.RegattaDTO; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaPlayerManagerComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaPlayerManagerComponent.java index eb498116778..b38c75cdfd1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaPlayerManagerComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaPlayerManagerComponent.java @@ -22,8 +22,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MediaType; import com.sap.sailing.domain.common.media.MediaTrack.Status; @@ -40,6 +38,8 @@ import com.sap.sailing.gwt.ui.client.media.shared.VideoSynchPlayer; import com.sap.sailing.gwt.ui.client.shared.components.Component; import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialogComponent; import com.sap.sailing.gwt.ui.usermanagement.UserRoles; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; import com.sap.sse.gwt.client.player.PlayStateListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaDialog.java index 73ca48a5024..fa314b414d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaDialog.java @@ -16,13 +16,13 @@ import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.YoutubeApi; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class NewMediaDialog extends DataEntryDialog { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaWithRaceSelectionDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaWithRaceSelectionDialog.java index c5d51a5ab60..5eee712abb3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaWithRaceSelectionDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/NewMediaWithRaceSelectionDialog.java @@ -5,14 +5,14 @@ import java.util.Set; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.gwt.ui.adminconsole.AssignRacesToMediaDialog; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.RegattasDisplayer; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.ErrorReporter; public class NewMediaWithRaceSelectionDialog extends NewMediaDialog { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/TimeFormatUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/TimeFormatUtil.java index 11be88021f5..2fa7730d7fc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/TimeFormatUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/TimeFormatUtil.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.ui.client.media; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.NumberFormat; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; import com.sap.sailing.gwt.ui.client.NumberFormatterFactory; +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsDurationImpl; public class TimeFormatUtil { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java index fca58bb3d51..d84ea1dd138 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java @@ -3,11 +3,11 @@ package com.sap.sailing.gwt.ui.client.media; import com.google.gwt.media.client.MediaBase; import com.google.gwt.media.client.Video; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.gwt.ui.client.media.shared.VideoSynchPlayer; import com.sap.sailing.gwt.ui.client.media.shared.WithWidget; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.player.Timer; public class VideoHtmlPlayer extends AbstractHtmlMediaPlayer implements VideoSynchPlayer, MediaSynchAdapter, WithWidget { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java index 4102a3052e8..316bf36cb58 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java @@ -8,12 +8,12 @@ import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.gwt.ui.client.media.shared.AbstractMediaPlayer; import com.sap.sailing.gwt.ui.client.media.shared.VideoSynchPlayer; import com.sap.sailing.gwt.ui.client.media.shared.WithWidget; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.player.Timer; public class VideoYoutubePlayer extends AbstractMediaPlayer implements VideoSynchPlayer, MediaSynchAdapter, WithWidget { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java index a0218d3c173..2181ef7269e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java @@ -13,7 +13,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -28,6 +27,7 @@ import com.sap.sailing.server.masterdata.DummyTrackedRace; import com.sap.sailing.util.SmartFutureCache; import com.sap.sailing.util.SmartFutureCache.AbstractCacheUpdater; import com.sap.sailing.util.SmartFutureCache.UpdateInterval; +import com.sap.sse.common.TimePoint; /** * Calculating the quick ranks for many clients for a live race is expensive and therefore benefits from consolidation 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 01846ae689a..c83b9fdb1ac 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 @@ -105,7 +105,6 @@ import com.sap.sailing.domain.common.CountryCode; import com.sap.sailing.domain.common.DataImportProgress; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.common.LeaderboardType; import com.sap.sailing.domain.common.LegType; @@ -133,7 +132,6 @@ import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; @@ -159,8 +157,6 @@ import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.PolarSheetGenerationResponseImpl; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.common.impl.WindSourceImpl; @@ -401,11 +397,15 @@ import com.sap.sailing.simulator.impl.SimulationParametersImpl; import com.sap.sailing.simulator.util.SailingSimulatorConstants; import com.sap.sailing.simulator.windfield.WindFieldGenerator; import com.sap.sailing.simulator.windfield.impl.WindFieldTrackedRaceImpl; -import com.sap.sailing.util.BuildVersion; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.BuildVersion; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java index 3c1d2c6895e..90b0ef1d54e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java @@ -14,16 +14,13 @@ import java.util.logging.Logger; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.BoatClassDTO; import com.sap.sailing.domain.common.dto.PositionDTO; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.gwt.ui.client.SimulatorService; @@ -77,7 +74,10 @@ import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; import com.sap.sailing.simulator.windfield.WindFieldGeneratorFactory; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorMeasured; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SimulatorServiceImpl extends RemoteServiceServlet implements SimulatorService { private static final long serialVersionUID = 4445427185387524086L; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceUtils.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceUtils.java index b3e4e09713b..7ee3bbae706 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceUtils.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceUtils.java @@ -7,7 +7,6 @@ import java.util.List; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.PositionDTO; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; @@ -19,6 +18,7 @@ import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.SimulatorUISelection; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.impl.SimulatorUISelectionImpl; +import com.sap.sse.common.TimePoint; public class SimulatorServiceUtils { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java index 9e8dcdbedf4..a5a9f1fec49 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.ui.shared; import java.util.Date; import com.google.gwt.user.client.rpc.IsSerializable; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.dto.PositionDTO; +import com.sap.sse.common.Duration; public class WindFieldGenParamsDTO implements IsSerializable { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java index 70944141cea..bc97226e3a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java @@ -42,9 +42,7 @@ import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.RequiresResize; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.VerticalPanel; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.dto.BoatClassDTO; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; import com.sap.sailing.gwt.ui.client.SimulatorServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.TimePanel; @@ -57,6 +55,8 @@ import com.sap.sailing.gwt.ui.shared.WindPatternDTO; import com.sap.sailing.gwt.ui.simulator.windpattern.WindPatternDisplay; import com.sap.sailing.gwt.ui.simulator.windpattern.WindPatternSetting; import com.sap.sailing.simulator.util.SailingSimulatorConstants; +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator; import com.sap.sse.gwt.client.controls.slider.SliderBar; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java index c26918cfedf..c4fd412798e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java @@ -5,7 +5,6 @@ import java.util.List; import com.google.gwt.core.client.GWT; import com.sap.sailing.domain.common.Bounds; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.impl.BoundsImpl; import com.sap.sailing.domain.common.impl.DegreePosition; @@ -13,6 +12,7 @@ import com.sap.sailing.gwt.ui.shared.SimulatorWindDTO; import com.sap.sailing.gwt.ui.shared.WindFieldDTO; import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO; import com.sap.sailing.gwt.ui.simulator.StreamletParameters; +import com.sap.sse.common.Duration; public class SimulatorField implements VectorField { private boolean swarmDebug = false; diff --git a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java index 201a859064e..63615e9c345 100755 --- a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java +++ b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java @@ -23,7 +23,6 @@ import org.w3c.dom.Node; import org.xml.sax.SAXException; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.Crewmember; import com.sap.sailing.kiworesultimport.ParserFactory; @@ -32,6 +31,7 @@ import com.sap.sailing.kiworesultimport.ResultList; import com.sap.sailing.kiworesultimport.ResultListParser; import com.sap.sailing.kiworesultimport.Skipper; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ParserTest { private static final String SAMPLE_INPUT_NAME = "2011-06-18_49er_Wettfahrt_2_Extra.xml"; diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/RegattaSummary.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/RegattaSummary.java index dde6e98cb96..cacdc85cd28 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/RegattaSummary.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/RegattaSummary.java @@ -1,6 +1,6 @@ package com.sap.sailing.kiworesultimport; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; /** * Derived object, providing a view onto the data parsed from the result ZIP diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java index 18c06c1ca7f..b6113daaed6 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java @@ -1,6 +1,6 @@ package com.sap.sailing.kiworesultimport; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface ResultList { String getLegend(); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java index 6a32cde9e63..2ffddc794ec 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java @@ -2,7 +2,7 @@ package com.sap.sailing.kiworesultimport; import java.text.ParseException; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface Start { String getBoatClass(); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/StartReport.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/StartReport.java index a5ae79b5677..940529bacbc 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/StartReport.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/StartReport.java @@ -2,7 +2,7 @@ package com.sap.sailing.kiworesultimport; import java.text.ParseException; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface StartReport { String getDateAsString(); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RegattaSummaryImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RegattaSummaryImpl.java index 7e57b7fba5f..a2c95bfc51f 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RegattaSummaryImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RegattaSummaryImpl.java @@ -5,10 +5,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.RaceSummary; import com.sap.sailing.kiworesultimport.RegattaSummary; +import com.sap.sse.common.TimePoint; public class RegattaSummaryImpl implements RegattaSummary { private final Iterable races; diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java index 5c369f13453..623c07b4590 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java @@ -13,11 +13,11 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.BoatResultInRace; import com.sap.sailing.kiworesultimport.ResultList; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ResultListImpl extends AbstractNodeWrapper implements ResultList { private static final Logger logger = Logger.getLogger(ResultListImpl.class.getName()); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ScoreCorrectionProviderImpl.java index eb9ef508dc4..cbaeb9750e2 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ScoreCorrectionProviderImpl.java @@ -14,13 +14,13 @@ import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import com.sap.sailing.domain.common.RegattaScoreCorrections; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.kiworesultimport.ParserFactory; import com.sap.sailing.kiworesultimport.RegattaSummary; import com.sap.sailing.kiworesultimport.ZipFile; import com.sap.sailing.kiworesultimport.ZipFileParser; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.impl.AbstractFileBasedScoreCorrectionProvider; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl extends AbstractFileBasedScoreCorrectionProvider { diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartImpl.java index 76a000e5135..e52c66f1d20 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartImpl.java @@ -7,9 +7,9 @@ import java.text.SimpleDateFormat; import org.w3c.dom.Element; import org.w3c.dom.Node; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.kiworesultimport.Start; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StartImpl extends AbstractNodeWrapper implements Start { private static final DateFormat df = new SimpleDateFormat("yyyy-MM-ddX"); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartReportImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartReportImpl.java index 36b1e40f00c..4e51e9023d9 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartReportImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/StartReportImpl.java @@ -10,10 +10,10 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.kiworesultimport.Start; import com.sap.sailing.kiworesultimport.StartReport; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StartReportImpl extends AbstractNodeWrapper implements StartReport { private static final DateFormat df = new SimpleDateFormat("yyyy-MM-ddX"); diff --git a/java/com.sap.sailing.manage2sail.resultimport.test/src/com/sap/sailing/manage2sail/resultimport/test/ParserTest.java b/java/com.sap.sailing.manage2sail.resultimport.test/src/com/sap/sailing/manage2sail/resultimport/test/ParserTest.java index 921f2a988d5..51a3936b6ac 100644 --- a/java/com.sap.sailing.manage2sail.resultimport.test/src/com/sap/sailing/manage2sail/resultimport/test/ParserTest.java +++ b/java/com.sap.sailing.manage2sail.resultimport.test/src/com/sap/sailing/manage2sail/resultimport/test/ParserTest.java @@ -24,8 +24,6 @@ import org.xml.sax.SAXException; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.manage2sail.resultimport.ScoreCorrectionProviderImpl; @@ -36,7 +34,9 @@ import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; import com.sap.sailing.resultimport.impl.ResultUrlRegistryImpl; import com.sap.sailing.xrr.resultimport.ParserFactory; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ParserTest { private static final String SAMPLE_INPUT_NAME_29er = "YES_29er_XRR.xml"; diff --git a/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/Manage2SailResultDocumentProvider.java b/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/Manage2SailResultDocumentProvider.java index 33f7dbf2395..f3a71db39eb 100644 --- a/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/Manage2SailResultDocumentProvider.java +++ b/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/Manage2SailResultDocumentProvider.java @@ -7,7 +7,6 @@ import java.net.URLConnection; import java.util.ArrayList; import java.util.List; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.manage2sail.EventResultDescriptor; import com.sap.sailing.manage2sail.Manage2SailEventResultsParserImpl; import com.sap.sailing.manage2sail.RegattaResultDescriptor; @@ -15,6 +14,7 @@ import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.ResultUrlProvider; import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class Manage2SailResultDocumentProvider implements ResultDocumentProvider { private final ResultUrlProvider resultUrlProvider; diff --git a/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/ScoreCorrectionProviderImpl.java index 4dc9ee1a665..c7518b218cd 100644 --- a/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.manage2sail.resultimport/src/com/sap/sailing/manage2sail/resultimport/ScoreCorrectionProviderImpl.java @@ -15,7 +15,6 @@ import org.xml.sax.SAXException; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.ScoreCorrectionProvider; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.ResultUrlProvider; @@ -27,6 +26,7 @@ import com.sap.sailing.xrr.resultimport.schema.Division; import com.sap.sailing.xrr.resultimport.schema.Event; import com.sap.sailing.xrr.resultimport.schema.EventGender; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, ResultUrlProvider { diff --git a/java/com.sap.sailing.media.persistence.test/src/com/sap/sailing/media/persistence/test/MediaDBTest.java b/java/com.sap.sailing.media.persistence.test/src/com/sap/sailing/media/persistence/test/MediaDBTest.java index 94d0b4176cf..425bf369413 100644 --- a/java/com.sap.sailing.media.persistence.test/src/com/sap/sailing/media/persistence/test/MediaDBTest.java +++ b/java/com.sap.sailing.media.persistence.test/src/com/sap/sailing/media/persistence/test/MediaDBTest.java @@ -10,16 +10,16 @@ import org.hamcrest.core.Is; import org.junit.Test; import com.mongodb.MongoException; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; import com.sap.sailing.domain.persistence.media.MediaDB; import com.sap.sailing.domain.persistence.media.MediaDBFactory; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java index ab0fab6b8a1..ba806fe1358 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java @@ -17,7 +17,6 @@ import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; @@ -26,6 +25,7 @@ import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class AbstractTestStoringAndRetrievingRaceLogInRegatta extends RaceLogMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/RaceLogMongoDBTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/RaceLogMongoDBTest.java index 8051674ddac..6b73a63889f 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/RaceLogMongoDBTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/RaceLogMongoDBTest.java @@ -21,7 +21,6 @@ import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; @@ -29,6 +28,7 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; public abstract class RaceLogMongoDBTest extends AbstractMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java index 29b88c95dcd..d05c7004d65 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java @@ -15,8 +15,6 @@ import com.mongodb.MongoException; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.impl.CompetitorImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory; @@ -36,7 +34,9 @@ import com.sap.sailing.domain.racelog.tracking.test.mock.MockEmptyServiceFinderF import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneImeiServiceFinderFactory; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifierImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StoreAndLoadDeviceIdentifierTest extends AbstractMongoDBTest { public StoreAndLoadDeviceIdentifierTest() throws UnknownHostException, MongoException { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogEventsTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogEventsTest.java index 82e0801a9cb..164c60df454 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogEventsTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogEventsTest.java @@ -22,8 +22,6 @@ import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.persistence.PersistenceFactory; @@ -50,7 +48,9 @@ import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent; import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneImeiServiceFinderFactory; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java index da29b16b241..bd5bd1f3340 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java @@ -21,7 +21,6 @@ import com.mongodb.MongoException; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; @@ -36,6 +35,7 @@ import com.sap.sailing.domain.racelog.RaceLogIdentifierTemplate; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.racelog.impl.RaceLogIdentifierImpl; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StoreAndLoadRaceLogsTest extends AbstractMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreGPSFixTrackTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreGPSFixTrackTest.java index 73766339ad1..87e198b66e0 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreGPSFixTrackTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreGPSFixTrackTest.java @@ -13,11 +13,9 @@ import com.mongodb.MongoException; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory; @@ -41,7 +39,9 @@ import com.sap.sailing.domain.tracking.impl.DynamicGPSFixMovingTrackImpl; import com.sap.sailing.domain.tracking.impl.DynamicGPSFixTrackImpl; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class StoreGPSFixTrackTest extends AbstractMongoDBTest { public StoreGPSFixTrackTest() throws UnknownHostException, MongoException { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestRaceLogRemovalInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestRaceLogRemovalInRegatta.java index c1a5fafee9e..f93d051f6d1 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestRaceLogRemovalInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestRaceLogRemovalInRegatta.java @@ -12,12 +12,12 @@ import com.mongodb.MongoException; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.base.impl.FleetImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestRaceLogRemovalInRegatta extends AbstractTestStoringAndRetrievingRaceLogInRegatta { private final String blueFleetName = "Blue"; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java index 4a84092253d..8bdfefd967b 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java @@ -54,8 +54,6 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.leaderboard.EventResolver; import com.sap.sailing.domain.leaderboard.Leaderboard; @@ -84,7 +82,9 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest { private static final Logger logger = Logger.getLogger(TestStoringAndLoadingEventsAndRegattas.class.getName()); 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 e76795b0c62..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 @@ -33,7 +33,6 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; @@ -56,6 +55,7 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrection; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboards.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboards.java index 4e786b69d9b..6c538210dff 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboards.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingLeaderboards.java @@ -26,7 +26,6 @@ import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; @@ -40,6 +39,7 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank; import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest { public TestStoringAndRetrievingLeaderboards() throws UnknownHostException, MongoException { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogEventData.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogEventData.java index 0dba38e3048..f44c9f8467e 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogEventData.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogEventData.java @@ -12,8 +12,6 @@ import com.mongodb.BasicDBObject; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MongoException; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; @@ -22,6 +20,8 @@ import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndRetrievingRaceLogEventData extends AbstractMongoDBTest { private static final String RACELOG_TEST_COLLECTION = "racelog_test_collection"; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java index d7e0325ad4a..0e81012f4e9 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java @@ -26,7 +26,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -65,6 +64,7 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventComparator; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoDBTest { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java index d80004a359f..141f915c873 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java @@ -25,7 +25,6 @@ import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -52,6 +51,7 @@ import com.sap.sailing.domain.racelog.RaceLogWindFixEvent; import com.sap.sailing.domain.racelog.impl.CompetitorResultsImpl; import com.sap.sailing.domain.tracking.Wind; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStoringAndRetrievingRaceLogInRegatta { public TestStoringAndRetrievingRaceLogInRegatta() throws UnknownHostException, MongoException { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java index 6e204689e2a..ff96bb0c50b 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java @@ -12,16 +12,16 @@ import com.mongodb.BasicDBObject; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MongoException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TestStoringAndRetrievingWindData extends AbstractMongoDBTest { private static final String WIND_TEST_COLLECTION = "wind_test_collection"; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracksTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracksTest.java index 38bd84784a0..5a6ca70c2fc 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracksTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracksTest.java @@ -19,13 +19,11 @@ import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; @@ -43,7 +41,9 @@ import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.domain.tractracadapter.Receiver; import com.sap.sailing.domain.tractracadapter.ReceiverType; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBConfiguration; public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLiveTest { diff --git a/java/com.sap.sailing.nmeaconnector.test/src/com/sap/sailing/nmeaconnector/test/ReadWindVaneDataTest.java b/java/com.sap.sailing.nmeaconnector.test/src/com/sap/sailing/nmeaconnector/test/ReadWindVaneDataTest.java index 468c941717a..1da05cf1d8f 100755 --- a/java/com.sap.sailing.nmeaconnector.test/src/com/sap/sailing/nmeaconnector/test/ReadWindVaneDataTest.java +++ b/java/com.sap.sailing.nmeaconnector.test/src/com/sap/sailing/nmeaconnector/test/ReadWindVaneDataTest.java @@ -43,10 +43,8 @@ import slash.navigation.gpx.GpxRoute; import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; @@ -56,7 +54,9 @@ import com.sap.sailing.domain.tracking.impl.WindComparator; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; import com.sap.sailing.nmeaconnector.NmeaFactory; import com.sap.sailing.nmeaconnector.NmeaUtil; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ReadWindVaneDataTest { @Test diff --git a/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/NmeaUtil.java b/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/NmeaUtil.java index 83562b98fbd..405cdcfa95d 100755 --- a/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/NmeaUtil.java +++ b/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/NmeaUtil.java @@ -6,8 +6,8 @@ import net.sf.marineapi.nmea.util.Units; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.Wind; +import com.sap.sse.common.TimePoint; public interface NmeaUtil { Wind getWind(TimePoint timePoint, Position position, MWVSentence mwvSentence); diff --git a/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/impl/NmeaUtilImpl.java b/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/impl/NmeaUtilImpl.java index ebc57a42fdb..c6f6fef4f9f 100755 --- a/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/impl/NmeaUtilImpl.java +++ b/java/com.sap.sailing.nmeaconnector/src/com/sap/sailing/nmeaconnector/impl/NmeaUtilImpl.java @@ -8,7 +8,6 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; @@ -16,6 +15,7 @@ import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.nmeaconnector.NmeaUtil; +import com.sap.sse.common.TimePoint; public class NmeaUtilImpl implements NmeaUtil { diff --git a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/ResultDocumentDescriptor.java b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/ResultDocumentDescriptor.java index 1a0af7a0ba9..d51aaae98d8 100644 --- a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/ResultDocumentDescriptor.java +++ b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/ResultDocumentDescriptor.java @@ -3,7 +3,7 @@ package com.sap.sailing.resultimport; import java.io.InputStream; import com.sap.sailing.domain.common.CompetitorGenderType; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface ResultDocumentDescriptor { String getEventName(); diff --git a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/FileBasedResultDocumentProvider.java b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/FileBasedResultDocumentProvider.java index 4ae3f3341dd..ccc7a48d0d1 100755 --- a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/FileBasedResultDocumentProvider.java +++ b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/FileBasedResultDocumentProvider.java @@ -7,9 +7,9 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class FileBasedResultDocumentProvider implements ResultDocumentProvider { private static final Logger logger = Logger.getLogger(FileBasedResultDocumentProvider.class.getName()); diff --git a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/ResultDocumentDescriptorImpl.java b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/ResultDocumentDescriptorImpl.java index 579a4b3cb0e..e94701ffdad 100644 --- a/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/ResultDocumentDescriptorImpl.java +++ b/java/com.sap.sailing.resultimport/src/com/sap/sailing/resultimport/impl/ResultDocumentDescriptorImpl.java @@ -3,8 +3,8 @@ package com.sap.sailing.resultimport.impl; import java.io.InputStream; import com.sap.sailing.domain.common.CompetitorGenderType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.ResultDocumentDescriptor; +import com.sap.sse.common.TimePoint; public class ResultDocumentDescriptorImpl implements ResultDocumentDescriptor { private InputStream inputStream; diff --git a/java/com.sap.sailing.sailwave.resultimport.test/src/com/sap/sailing/sailwave/resultimport/test/ParserTest.java b/java/com.sap.sailing.sailwave.resultimport.test/src/com/sap/sailing/sailwave/resultimport/test/ParserTest.java index f13e75a7e26..379f5f28acc 100644 --- a/java/com.sap.sailing.sailwave.resultimport.test/src/com/sap/sailing/sailwave/resultimport/test/ParserTest.java +++ b/java/com.sap.sailing.sailwave.resultimport.test/src/com/sap/sailing/sailwave/resultimport/test/ParserTest.java @@ -19,15 +19,15 @@ import org.junit.Test; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; import com.sap.sailing.sailwave.resultimport.CsvParserFactory; import com.sap.sailing.sailwave.resultimport.impl.ScoreCorrectionProviderImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ParserTest { private static final String SAMPLE_INPUT_NAME_49er = "49er_R1-6.csv"; diff --git a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParser.java b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParser.java index 56e5d44f659..083d9cf58ba 100644 --- a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParser.java +++ b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParser.java @@ -1,7 +1,7 @@ package com.sap.sailing.sailwave.resultimport; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.RegattaResults; +import com.sap.sse.common.TimePoint; public interface CsvParser { RegattaResults parseResults() throws Exception; diff --git a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParserFactory.java b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParserFactory.java index 06b49488d7f..902567d0e8a 100644 --- a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParserFactory.java +++ b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/CsvParserFactory.java @@ -2,8 +2,8 @@ package com.sap.sailing.sailwave.resultimport; import java.io.InputStream; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.sailwave.resultimport.impl.CsvParserFactoryImpl; +import com.sap.sse.common.TimePoint; public interface CsvParserFactory { CsvParserFactory INSTANCE = new CsvParserFactoryImpl(); diff --git a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserFactoryImpl.java b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserFactoryImpl.java index fd014756b3b..97579eb3b32 100644 --- a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserFactoryImpl.java +++ b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserFactoryImpl.java @@ -2,9 +2,9 @@ package com.sap.sailing.sailwave.resultimport.impl; import java.io.InputStream; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.sailwave.resultimport.CsvParser; import com.sap.sailing.sailwave.resultimport.CsvParserFactory; +import com.sap.sse.common.TimePoint; public class CsvParserFactoryImpl implements CsvParserFactory { @Override diff --git a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserImpl.java b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserImpl.java index d4243762919..76d61073b65 100644 --- a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserImpl.java +++ b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/CsvParserImpl.java @@ -8,13 +8,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.CompetitorEntry; import com.sap.sailing.resultimport.CompetitorRow; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.impl.CompetitorRowImpl; import com.sap.sailing.resultimport.impl.DefaultCompetitorEntryImpl; import com.sap.sailing.sailwave.resultimport.CsvParser; +import com.sap.sse.common.TimePoint; public class CsvParserImpl implements CsvParser { diff --git a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/ScoreCorrectionProviderImpl.java index e845e6506b6..5d09cea183a 100644 --- a/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.sailwave.resultimport/src/com/sap/sailing/sailwave/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -9,7 +9,6 @@ import java.util.Set; import java.util.logging.Logger; import com.sap.sailing.domain.common.RegattaScoreCorrections; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; @@ -17,6 +16,7 @@ import com.sap.sailing.resultimport.impl.AbstractDocumentBasedScoreCorrectionPro import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl; import com.sap.sailing.sailwave.resultimport.CsvParser; import com.sap.sailing.sailwave.resultimport.CsvParserFactory; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl extends AbstractDocumentBasedScoreCorrectionProvider { diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java index 41eae059486..332718f86d9 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java @@ -25,13 +25,13 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.Augmenter; import org.openqa.selenium.remote.RemoteWebDriver; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.selenium.core.Managed; import com.sap.sailing.selenium.core.SeleniumRunner; import com.sap.sailing.selenium.core.TestEnvironment; import com.sap.sailing.selenium.core.WindowManager; import com.sap.sailing.selenium.pages.HostPage; +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** *

Abstract base class for unit tests with Selenium. This class is already annotated as required to get executed diff --git a/java/com.sap.sailing.server.gateway.ess40/src/com/sap/sailing/server/gateway/ess40/ESS40ResultsAsCSVServlet.java b/java/com.sap.sailing.server.gateway.ess40/src/com/sap/sailing/server/gateway/ess40/ESS40ResultsAsCSVServlet.java index d8b34af2103..64cab6d02c9 100644 --- a/java/com.sap.sailing.server.gateway.ess40/src/com/sap/sailing/server/gateway/ess40/ESS40ResultsAsCSVServlet.java +++ b/java/com.sap.sailing.server.gateway.ess40/src/com/sap/sailing/server/gateway/ess40/ESS40ResultsAsCSVServlet.java @@ -18,11 +18,11 @@ import javax.servlet.http.HttpServletResponse; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.gateway.AbstractCSVHttpServlet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Exports leaderboards of the ESS40 Series to a specific .csv format which is used by a native iOS app to show them. diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerTest.java index da407f47f20..9351a3dcd5b 100755 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerTest.java @@ -19,8 +19,6 @@ import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.base.impl.VenueImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer; @@ -32,6 +30,8 @@ import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerialize import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventDataJsonSerializerTest { protected final UUID expectedId = UUID.randomUUID(); diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerWithNullValuesTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerWithNullValuesTest.java index fe4d370ec18..3bee26cc81a 100755 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerWithNullValuesTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventDataJsonSerializerWithNullValuesTest.java @@ -19,8 +19,6 @@ import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.base.impl.VenueImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer; @@ -32,6 +30,8 @@ import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerialize import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventDataJsonSerializerWithNullValuesTest { protected final UUID expectedId = UUID.randomUUID(); diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventWithNullStartAndEndDataJsonSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventWithNullStartAndEndDataJsonSerializerTest.java index 8686bccb3fb..ddfc72afdf7 100755 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventWithNullStartAndEndDataJsonSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EventWithNullStartAndEndDataJsonSerializerTest.java @@ -20,7 +20,6 @@ import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.LeaderboardGroupBase; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.base.impl.VenueImpl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer; @@ -31,6 +30,7 @@ import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerialize import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer; +import com.sap.sse.common.TimePoint; public class EventWithNullStartAndEndDataJsonSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/AbstractEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/AbstractEventSerializerTest.java index a55dc20553d..8f950a75eb6 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/AbstractEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/AbstractEventSerializerTest.java @@ -14,12 +14,12 @@ import org.junit.Before; import org.junit.Test; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl; import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.BaseRaceLogEventSerializer; +import com.sap.sse.common.TimePoint; public abstract class AbstractEventSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogCourseDesignChangedEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogCourseDesignChangedEventSerializerTest.java index ec5c2f25b2f..c78b2f10e63 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogCourseDesignChangedEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogCourseDesignChangedEventSerializerTest.java @@ -21,8 +21,6 @@ import com.sap.sailing.domain.base.impl.MarkImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; @@ -42,7 +40,9 @@ import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSeri import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseDesignChangedEventSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogCourseDesignChangedEventSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogFinishPositioningConfirmedEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogFinishPositioningConfirmedEventSerializerTest.java index 4178ac8d4df..999f45ce070 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogFinishPositioningConfirmedEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogFinishPositioningConfirmedEventSerializerTest.java @@ -14,8 +14,6 @@ import org.junit.Test; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; @@ -30,7 +28,9 @@ import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializ import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFinishPositioningConfirmedEventSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogFinishPositioningConfirmedEventSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogWindFixEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogWindFixEventSerializerTest.java index f5b8cb2ded5..244a030237c 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogWindFixEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogWindFixEventSerializerTest.java @@ -12,11 +12,9 @@ import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.RaceLogWindFixEvent; @@ -35,7 +33,9 @@ import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogWindFixEventSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogWindFixEventSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/StartTimeEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/StartTimeEventSerializerTest.java index 2b4f6c31628..da87dcad3d2 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/StartTimeEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/StartTimeEventSerializerTest.java @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import org.junit.Test; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTimeEventSerializer; +import com.sap.sse.common.TimePoint; public class StartTimeEventSerializerTest extends RaceStatusEventSerializerTest { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/EventBaseJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/EventBaseJsonDeserializer.java index b329b762b79..9139a137641 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/EventBaseJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/EventBaseJsonDeserializer.java @@ -14,10 +14,10 @@ import com.sap.sailing.domain.base.LeaderboardGroupBase; import com.sap.sailing.domain.base.Venue; import com.sap.sailing.domain.base.impl.StrippedEventImpl; import com.sap.sailing.domain.common.impl.ImageSizeImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventBaseJsonDeserializer implements JsonDeserializer { private final JsonDeserializer venueDeserializer; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixJsonDeserializer.java index 1ba6862b36c..5f1a5722567 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixJsonDeserializer.java @@ -5,13 +5,13 @@ import java.util.Date; import org.json.simple.JSONObject; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class GPSFixJsonDeserializer extends TypeBasedJsonDeserializer { public static final String TYPE = "GPSFix"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixNmeaDTOJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixNmeaDTOJsonDeserializer.java index 624e20b3670..2dd4d59f14a 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixNmeaDTOJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GPSFixNmeaDTOJsonDeserializer.java @@ -8,13 +8,13 @@ import net.sf.marineapi.nmea.sentence.RMCSentence; import org.json.simple.JSONObject; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class GPSFixNmeaDTOJsonDeserializer extends TypeBasedJsonDeserializer { public static final String TYPE = "GPSFixNmea"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/WindJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/WindJsonDeserializer.java index 470974deefc..d5d812402a1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/WindJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/WindJsonDeserializer.java @@ -7,12 +7,12 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindJsonDeserializer implements JsonDeserializer { private JsonDeserializer positionDeserializer; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java index 198848ec14d..2b9951186b1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java @@ -8,8 +8,6 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogEventRestoreFactory; @@ -18,6 +16,8 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializationExcepti import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.BaseRaceLogEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class BaseRaceLogEventDeserializer implements JsonDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogAdditionalScoringInformationEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogAdditionalScoringInformationEventDeserializer.java index ac06ffe727c..43f34e19673 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogAdditionalScoringInformationEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogAdditionalScoringInformationEventDeserializer.java @@ -6,12 +6,12 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.scoring.AdditionalScoringInformationType; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogAdditionalScoringInformationEventDeserializer extends BaseRaceLogEventDeserializer { public static final String FIELD_TYPE = "additionalScoringInformationType"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCloseOpenEndedDeviceMappingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCloseOpenEndedDeviceMappingEventDeserializer.java index 69113afb3f2..e3e1f9bc8f9 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCloseOpenEndedDeviceMappingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCloseOpenEndedDeviceMappingEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogCloseOpenEndedDeviceMappingEventDeserializer extends BaseRaceLogEventDeserializer { public static final String FIELD_DEVICE_MAPPING_EVENT_ID = "deviceMappingEventId"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseAreaChangedEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseAreaChangedEventDeserializer.java index 11f0e1402f4..d55af47c0f2 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseAreaChangedEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseAreaChangedEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseAreaChangedEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogCourseAreaChangedEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseDesignChangedEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseDesignChangedEventDeserializer.java index 4f90a76b3ce..d1b6c1b1332 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseDesignChangedEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogCourseDesignChangedEventDeserializer.java @@ -7,13 +7,13 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseDesignChangedEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogCourseDesignChangedEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDefineMarkEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDefineMarkEventDeserializer.java index 37e6130f737..ad5481525cf 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDefineMarkEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDefineMarkEventDeserializer.java @@ -7,13 +7,13 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDefineMarkEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogDefineMarkEventDeserializer extends BaseRaceLogEventDeserializer { private final JsonDeserializer markDeserializer; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDenoteForTrackingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDenoteForTrackingEventDeserializer.java index b4c24b1cc10..23a2d090c77 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDenoteForTrackingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDenoteForTrackingEventDeserializer.java @@ -8,12 +8,12 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.SharedDomainFactory; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDenoteForTrackingEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogDenoteForTrackingEventDeserializer extends BaseRaceLogEventDeserializer { private final SharedDomainFactory domainFactory; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceCompetitorMappingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceCompetitorMappingEventDeserializer.java index 8529e661bcf..53e334c436c 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceCompetitorMappingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceCompetitorMappingEventDeserializer.java @@ -5,12 +5,12 @@ import java.io.Serializable; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogDeviceCompetitorMappingEventDeserializer extends RaceLogDeviceMappingEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMappingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMappingEventDeserializer.java index e3378d3f5cd..2df294c0d82 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMappingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMappingEventDeserializer.java @@ -6,9 +6,6 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.WithID; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; @@ -16,6 +13,9 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializationExcepti import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDeviceMappingEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class RaceLogDeviceMappingEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMarkMappingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMarkMappingEventDeserializer.java index 593eb6e86b7..d57be1b8385 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMarkMappingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDeviceMarkMappingEventDeserializer.java @@ -6,12 +6,12 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogDeviceMarkMappingEventDeserializer extends RaceLogDeviceMappingEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningConfirmedEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningConfirmedEventDeserializer.java index b279bcf6bf8..4a4722e84db 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningConfirmedEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningConfirmedEventDeserializer.java @@ -8,7 +8,6 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; @@ -17,6 +16,7 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializationExcepti import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFinishPositioningConfirmedEventSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class RaceLogFinishPositioningConfirmedEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningListChangedEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningListChangedEventDeserializer.java index 27df1c8ef6b..4ed4cc76266 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningListChangedEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFinishPositioningListChangedEventDeserializer.java @@ -8,7 +8,6 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; @@ -17,6 +16,7 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializationExcepti import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFinishPositioningListChangedEventSerializer; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class RaceLogFinishPositioningListChangedEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFlagEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFlagEventDeserializer.java index 2852c80a812..cd3167fc2a9 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFlagEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogFlagEventDeserializer.java @@ -6,12 +6,12 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFlagEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogFlagEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogGateLineOpeningTimeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogGateLineOpeningTimeEventDeserializer.java index 06cee6835cf..781c8f9cdd5 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogGateLineOpeningTimeEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogGateLineOpeningTimeEventDeserializer.java @@ -6,12 +6,12 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogGateLineOpeningTimeEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogGateLineOpeningTimeEventDeserializer extends BaseRaceLogEventDeserializer implements JsonDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPassChangeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPassChangeEventDeserializer.java index e0b138f7778..2349b55f61b 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPassChangeEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPassChangeEventDeserializer.java @@ -6,10 +6,10 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogPassChangeEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPathFinderEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPathFinderEventDeserializer.java index dbdb2d781f4..2bb26dc0f2e 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPathFinderEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogPathFinderEventDeserializer.java @@ -6,12 +6,12 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPathfinderEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogPathFinderEventDeserializer extends BaseRaceLogEventDeserializer implements JsonDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogProtestStartTimeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogProtestStartTimeEventDeserializer.java index 35793b7e930..4ca36d00aca 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogProtestStartTimeEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogProtestStartTimeEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogProtestStartTimeEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogProtestStartTimeEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRaceStatusEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRaceStatusEventDeserializer.java index 0f6498c4a2e..39763d9664c 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRaceStatusEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRaceStatusEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRaceStatusEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogRaceStatusEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRegisterCompetitorEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRegisterCompetitorEventDeserializer.java index 06f4c869e3d..a6197afe5a2 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRegisterCompetitorEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRegisterCompetitorEventDeserializer.java @@ -6,10 +6,10 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogRegisterCompetitorEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRevokeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRevokeEventDeserializer.java index 5ca9610cf80..ef26f3d72d1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRevokeEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogRevokeEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRevokeEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogRevokeEventDeserializer extends BaseRaceLogEventDeserializer { public RaceLogRevokeEventDeserializer(JsonDeserializer competitorDeserializer) { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartProcedureChangedEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartProcedureChangedEventDeserializer.java index 50e8f72f564..23819a41a75 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartProcedureChangedEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartProcedureChangedEventDeserializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartProcedureChangedEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogStartProcedureChangedEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTimeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTimeEventDeserializer.java index 41ece90c9a3..87a45a5881d 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTimeEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTimeEventDeserializer.java @@ -6,14 +6,14 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTimeEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogStartTimeEventDeserializer extends RaceLogRaceStatusEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTrackingEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTrackingEventDeserializer.java index 4ea227f342c..f890561f4e1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTrackingEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogStartTrackingEventDeserializer.java @@ -6,11 +6,11 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sse.common.TimePoint; public class RaceLogStartTrackingEventDeserializer extends BaseRaceLogEventDeserializer { public RaceLogStartTrackingEventDeserializer(JsonDeserializer competitorDeserializer) { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogWindFixEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogWindFixEventDeserializer.java index 49603f6ff72..50610a54a4e 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogWindFixEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogWindFixEventDeserializer.java @@ -6,7 +6,6 @@ import java.util.List; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.tracking.Wind; @@ -14,6 +13,7 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializationExcepti import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogWindFixEventSerializer; +import com.sap.sse.common.TimePoint; public class RaceLogWindFixEventDeserializer extends BaseRaceLogEventDeserializer { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesJsonSerializer.java index 56b0f92e76b..ddfa73c4d31 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesJsonSerializer.java @@ -6,9 +6,9 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SeriesJsonSerializer implements JsonSerializer { public static final String FIELD_NAME = "name"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/TrackedRaceJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/TrackedRaceJsonSerializer.java index 522675995eb..4aabbbd6629 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/TrackedRaceJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/TrackedRaceJsonSerializer.java @@ -2,9 +2,9 @@ package com.sap.sailing.server.gateway.serialization.impl; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.TimePoint; public class TrackedRaceJsonSerializer implements JsonSerializer { public static final String FIELD_NAME = "name"; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDeviceMappingEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDeviceMappingEventSerializer.java index 47ce6b66fb0..a651ae4bcf7 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDeviceMappingEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDeviceMappingEventSerializer.java @@ -3,11 +3,11 @@ package com.sap.sailing.server.gateway.serialization.racelog.impl; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceMappingEvent; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.WithID; public abstract class RaceLogDeviceMappingEventSerializer extends BaseRaceLogEventSerializer { private final JsonSerializer deviceSerializer; diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/impl/WindJsonGetServletRefactoringTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/impl/WindJsonGetServletRefactoringTest.java index 8f10372ca58..81d61de15c4 100755 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/impl/WindJsonGetServletRefactoringTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/impl/WindJsonGetServletRefactoringTest.java @@ -23,13 +23,11 @@ import org.mockito.ArgumentMatcher; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; @@ -38,6 +36,8 @@ import com.sap.sailing.domain.tracking.impl.CombinedWindTrackImpl; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; import com.sap.sailing.server.gateway.impl.WindJsonGetServlet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * After refactoring the {@link WindJsonGetServlet} to first copy the relevant fixes to hold the read lock only diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/AbstractJsonExportTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/AbstractJsonExportTest.java index 6c715cdf302..3622f14ea39 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/AbstractJsonExportTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/AbstractJsonExportTest.java @@ -28,11 +28,11 @@ import com.sap.sailing.domain.base.impl.NationalityImpl; import com.sap.sailing.domain.base.impl.PersonImpl; import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBConfiguration; import com.sap.sse.mongodb.MongoDBService; diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardGroupJsonExportTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardGroupJsonExportTest.java index 373e7f7529a..8b500548687 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardGroupJsonExportTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardGroupJsonExportTest.java @@ -21,12 +21,12 @@ import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.impl.LeaderboardGroupsJsonGetServlet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardGroupJsonExportTest extends AbstractJsonExportTest { private Regatta regatta; diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardJsonExportTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardJsonExportTest.java index 4cc1486f9eb..4b6b5694c7f 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardJsonExportTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/LeaderboardJsonExportTest.java @@ -28,12 +28,12 @@ import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.impl.LeaderboardJsonGetServlet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardJsonExportTest extends AbstractJsonExportTest { private Regatta regatta; diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/RaceLogSerializationTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/RaceLogSerializationTest.java index c3424afbf65..5d18effda71 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/RaceLogSerializationTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/RaceLogSerializationTest.java @@ -18,8 +18,6 @@ import com.sap.sailing.domain.base.impl.CompetitorImpl; import com.sap.sailing.domain.base.impl.NationalityImpl; import com.sap.sailing.domain.base.impl.PersonImpl; import com.sap.sailing.domain.base.impl.TeamImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; @@ -42,6 +40,8 @@ import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierJsonSer import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer; import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler; import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.PlaceHolderDeviceIdentifierJsonHandler; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogSerializationTest { private JsonSerializer serializer; diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/AbstractJaxRsApiTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/AbstractJaxRsApiTest.java index dd573bde700..9104b802747 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/AbstractJaxRsApiTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/AbstractJaxRsApiTest.java @@ -22,11 +22,11 @@ import com.sap.sailing.domain.base.impl.NationalityImpl; import com.sap.sailing.domain.base.impl.PersonImpl; import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBConfiguration; import com.sap.sse.mongodb.MongoDBService; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java index ddfb6a97ddc..49bb96ace12 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java @@ -10,8 +10,6 @@ import org.osgi.util.tracker.ServiceTracker; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; @@ -19,6 +17,8 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.racelog.tracking.CachedOsgiTypeBasedServiceFinderFactory; import com.sap.sailing.util.DateParser; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class SailingServerHttpServlet extends HttpServlet { private static final long serialVersionUID = -6514453597593669376L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/expeditionimport/WindLogParser.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/expeditionimport/WindLogParser.java index cbbbba28a12..f44cf136fa5 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/expeditionimport/WindLogParser.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/expeditionimport/WindLogParser.java @@ -16,13 +16,13 @@ import java.util.regex.Pattern; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindLogParser { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java index af62dd7e22e..232e598c87d 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java @@ -25,13 +25,11 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRace; @@ -41,7 +39,9 @@ import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.RaceRecord; import com.sap.sailing.server.gateway.SailingServerHttpServlet; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class AdminApp extends SailingServerHttpServlet { private static final long serialVersionUID = -6849138354941569249L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/EventRaceStatesJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/EventRaceStatesJsonGetServlet.java index fdfa9c792c2..f07bd2c30e5 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/EventRaceStatesJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/EventRaceStatesJsonGetServlet.java @@ -18,7 +18,6 @@ import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.RaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.racelog.RaceLog; @@ -32,6 +31,7 @@ import com.sap.sailing.domain.racelog.state.ReadonlyRaceState; import com.sap.sailing.domain.racelog.state.impl.ReadonlyRaceStateImpl; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.ReadonlyGateStartRacingProcedure; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; +import com.sap.sse.common.TimePoint; public class EventRaceStatesJsonGetServlet extends AbstractJsonHttpServlet { private static final long serialVersionUID = -4820965681871902242L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardGroupJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardGroupJsonGetServlet.java index ae19af6d41d..3b2860218dc 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardGroupJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardGroupJsonGetServlet.java @@ -13,8 +13,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; @@ -22,6 +20,8 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardGroupJsonGetServlet extends AbstractJsonHttpServlet { private static final long serialVersionUID = 1351616646322956825L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardJsonGetServlet.java index 44ab2f4fa25..1d0799c9b52 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/LeaderboardJsonGetServlet.java @@ -27,8 +27,6 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardCacheManager; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; @@ -41,7 +39,9 @@ import com.sap.sailing.server.gateway.ParseHttpParameterException; import com.sap.sailing.util.SmartFutureCache; import com.sap.sailing.util.SmartFutureCache.CacheUpdater; import com.sap.sailing.util.SmartFutureCache.UpdateInterval; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Exports a leaderboard to the JSON format. Uses a {@link SmartFutureCache}. diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java index d3b4c834573..2862b3b78b4 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java @@ -26,8 +26,6 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -38,6 +36,8 @@ import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RegattaAndRaceDataJsonGetServlet extends AbstractJsonHttpServlet { private static final Logger logger = Logger.getLogger(RegattaAndRaceDataJsonGetServlet.class.getName()); diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java index 98f1f35b796..0b122fb4ff4 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java @@ -16,16 +16,16 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindJsonGetServlet extends AbstractJsonHttpServlet { static final String ALL = "ALL"; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/MarkPositionsJsonExportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/MarkPositionsJsonExportServlet.java index cba62ca842f..ff5cf988a06 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/MarkPositionsJsonExportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/MarkPositionsJsonExportServlet.java @@ -14,7 +14,6 @@ import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogServletConstants; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.tracking.TrackedRace; @@ -24,6 +23,7 @@ import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSeri import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.PositionedMarkJsonSerializer; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class MarkPositionsJsonExportServlet extends AbstractJsonHttpServlet { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java index fa90f81ec05..f8d2620fda9 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java @@ -10,13 +10,13 @@ import org.osgi.util.tracker.ServiceTracker; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.util.DateParser; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class AbstractSailingServerResource { @Context ServletContext servletContext; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java index 5b2694af404..414963a36d8 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java @@ -6,11 +6,11 @@ import java.util.Iterator; import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.gateway.jaxrs.UnitSerializationUtil; +import com.sap.sse.common.TimePoint; public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer { public static final String FIELD_ID = "id"; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java index 8f68107f597..7c45bcc8234 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java @@ -17,8 +17,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; @@ -26,6 +24,8 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; @Path("/v1/leaderboardgroups") public class LeaderboardGroupsResource extends AbstractSailingServerResource { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java index 6a367dae510..2c31e92f0aa 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java @@ -30,20 +30,20 @@ import com.sap.sailing.domain.base.Waypoint; 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.TimePoint; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; @Path("/v1/leaderboards") public class LeaderboardsResource extends AbstractSailingServerResource { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java index 7ff1717f657..1bd534ac3ee 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java @@ -32,8 +32,6 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -60,7 +58,9 @@ import com.sap.sailing.server.gateway.serialization.impl.RegattaJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.SeriesJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; @Path("/v1/regattas") public class RegattasResource extends AbstractSailingServerResource { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/TrackedRaceJsonSerializer.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/TrackedRaceJsonSerializer.java index eeb32c420f1..038dedcbc9a 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/TrackedRaceJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/TrackedRaceJsonSerializer.java @@ -6,13 +6,13 @@ import java.util.List; import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.TimePoint; public class TrackedRaceJsonSerializer implements JsonSerializer { public static final String FIELD_ID = "id"; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/WindTrackJsonSerializer.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/WindTrackJsonSerializer.java index d61c2f7cc68..b87aadc1cea 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/WindTrackJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/WindTrackJsonSerializer.java @@ -1,9 +1,9 @@ package com.sap.sailing.server.gateway.jaxrs.api; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.TimePoint; public interface WindTrackJsonSerializer extends JsonSerializer { void setFromTime(TimePoint fromTime); diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/DeviceWithTimeRangeImpl.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/DeviceWithTimeRangeImpl.java index 73744583cca..e28518ea1d5 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/DeviceWithTimeRangeImpl.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/DeviceWithTimeRangeImpl.java @@ -1,9 +1,9 @@ package com.sap.sailing.server.gateway.trackfiles.impl; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; import com.sap.sailing.domain.racelog.tracking.DeviceWithTimeRange; +import com.sap.sse.common.TimePoint; public class DeviceWithTimeRangeImpl implements DeviceWithTimeRange { private static final long serialVersionUID = -4676108888517968890L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/TrackFilesImportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/TrackFilesImportServlet.java index 50fae0e43ca..5ce34acc34a 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/TrackFilesImportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/TrackFilesImportServlet.java @@ -28,7 +28,6 @@ import org.osgi.framework.Filter; import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; @@ -38,6 +37,7 @@ import com.sap.sailing.domain.trackimport.GPSFixImporter; import com.sap.sailing.domain.trackimport.GPSFixImporter.Callback; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; /** diff --git a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF index 77f23b14242..9deff679013 100644 --- a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: com.sap.sailing.server.replication.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Fragment-Host: com.sap.sailing.server.replication +Fragment-Host: com.sap.sse.replication Import-Package: com.rabbitmq.client;version="2.8.4" Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain.common, @@ -22,4 +22,5 @@ Require-Bundle: com.sap.sailing.server, org.junit4;bundle-version="4.8.2", org.hamcrest;bundle-version="1.1.0", com.sap.sse.common, - org.mockito.mockito-core;bundle-version="1.9.5" + org.mockito.mockito-core;bundle-version="1.9.5", + com.sap.sailing.domain.shared.android diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index b350881238c..20623c7efdc 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -290,8 +290,8 @@ public abstract class AbstractServerReplicationTest { } }.start(); ObjectInputStream dis = resolveAgainst.createObjectInputStreamResolvingAgainstThisFactory(pis); - getRacingEventService().clearReplicaState(); - getRacingEventService().initiallyFillFrom(dis); + getReplicable().clearReplicaState(); + getReplicable().initiallyFillFrom(dis); dis.close(); } } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/CompetitorReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/CompetitorReplicationTest.java index 795e96016c3..0e7c7502894 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/CompetitorReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/CompetitorReplicationTest.java @@ -32,7 +32,6 @@ import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRace; @@ -43,6 +42,7 @@ import com.sap.sailing.server.operationaltransformation.AllowCompetitorResetToDe import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sailing.server.operationaltransformation.UpdateCompetitor; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Tests replication of competitors in conjunction with the {@link CompetitorStore} concepts, particularly the diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java index d93a3ce7fdb..a1e5345f32c 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java @@ -22,11 +22,11 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.ShutdownSignalException; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.impl.ReplicationMasterDescriptorImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ConnectionResetAndReconnectTest extends AbstractServerReplicationTest { static final Logger logger = Logger.getLogger(ConnectionResetAndReconnectTest.class.getName()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java index 8071f493f85..529c4d197d5 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java @@ -22,7 +22,6 @@ import com.sap.sailing.domain.base.impl.DynamicCompetitor; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.DelayedLeaderboardCorrections; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; @@ -43,6 +42,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPoin import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServerReplicationTest { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/EventReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/EventReplicationTest.java index e830dab24dd..00a31421c77 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/EventReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/EventReplicationTest.java @@ -15,13 +15,13 @@ import org.junit.Test; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.server.operationaltransformation.AddLeaderboardGroupToEvent; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardGroupFromEvent; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventReplicationTest extends AbstractServerReplicationTest { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index 42bd55f6354..77b893b5fd4 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -33,9 +33,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; @@ -51,7 +48,10 @@ import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.impl.Replicator; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; public class InitialLoadReplicationObjectIdentityTest extends AbstractServerReplicationTest { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index f47e4a87fad..70080cf6c3f 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java @@ -5,14 +5,14 @@ import java.util.Set; import org.junit.Test; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; import static org.hamcrest.core.Is.*; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java index b1a586120c5..54a1aa1af5f 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java @@ -35,7 +35,6 @@ import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO; import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; @@ -60,6 +59,7 @@ import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard import com.sap.sailing.server.operationaltransformation.RenameLeaderboard; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; public class RaceLogReplicationTest extends AbstractServerReplicationTest { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java index 82b3e9e6e1d..a5c274dca9b 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java @@ -29,12 +29,12 @@ import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.CourseDesignerMode; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.FleetDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.server.operationaltransformation.UpdateSeries; import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RegattaReplicationTest extends AbstractServerReplicationTest { @Test diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationStopTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationStopTest.java index acf2e40f76a..435f59c6de7 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationStopTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationStopTest.java @@ -13,9 +13,9 @@ import java.util.UUID; import org.junit.Test; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ReplicationStopTest extends AbstractServerReplicationTest { @Test 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 af3c312988b..58023d7e10a 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 @@ -23,23 +23,24 @@ 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; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.impl.LowPoint; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.test.AbstractTracTracLiveTest; import com.sap.sailing.domain.tracking.DynamicTrackedRace; -import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.RaceHandle; +import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.TrackedRace; -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.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; +import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { private TrackedRace masterTrackedRace; @@ -72,7 +73,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { MillisecondsTimePoint endOfTracking = new MillisecondsTimePoint(cal.getTimeInMillis()); master.addOperationExecutionListener(new OperationExecutionListener() { @Override - public void executed(RacingEventServiceOperation operation) { + public void executed(OperationWithTransformationSupport> operation) { if (operation instanceof CreateTrackedRace) { synchronized (notifier) { notifier[0] = true; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackedRaceContentsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackedRaceContentsReplicationTest.java index 4b1509a99a6..0126653d107 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackedRaceContentsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackedRaceContentsReplicationTest.java @@ -36,7 +36,6 @@ import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.persistence.MongoWindStore; import com.sap.sailing.domain.persistence.MongoWindStoreFactory; @@ -57,6 +56,7 @@ import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sailing.server.operationaltransformation.TrackRegatta; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackedRaceContentsReplicationTest extends AbstractServerReplicationTest { private Competitor competitor; diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/HasRacingEventService.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/HasRacingEventService.java deleted file mode 100755 index 33b5ae8b041..00000000000 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/HasRacingEventService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.sap.sailing.server.replication.impl; - -import com.sap.sailing.server.RacingEventService; - -public interface HasRacingEventService { - RacingEventService getRacingEventService(); -} diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MasterDataImporterMediaTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MasterDataImporterMediaTest.java index 30c2991b360..c24b3f43864 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MasterDataImporterMediaTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MasterDataImporterMediaTest.java @@ -26,8 +26,6 @@ import org.mockito.Mockito; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; import com.sap.sailing.domain.persistence.DomainObjectFactory; @@ -36,6 +34,8 @@ import com.sap.sailing.domain.persistence.media.MediaDB; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.server.RacingEventService; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class MasterDataImporterMediaTest { diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MediaLibaryTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MediaLibaryTest.java index 425af810f6c..8277675d4bc 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MediaLibaryTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/impl/MediaLibaryTest.java @@ -9,19 +9,18 @@ import java.util.Set; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.TimeRangeImpl; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.media.MediaTrack.MimeType; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import static org.junit.Assert.*; - import static org.hamcrest.Matchers.*; 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 fa490b435f1..ef295836baa 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 @@ -12,8 +12,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; @@ -25,7 +23,9 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardDiscardingRulesTest { diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java index 4c418fccd9e..d90c31fd30f 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java @@ -65,15 +65,12 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DataImportProgressImpl; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; @@ -110,7 +107,10 @@ import com.sap.sailing.server.gateway.jaxrs.spi.MasterDataResource; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.masterdata.DummyTrackedRace; import com.sap.sailing.server.masterdata.MasterDataImporter; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBConfiguration; import com.sap.sse.mongodb.MongoDBService; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java index 4c58bd18d4c..938b2b71380 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogInRaceColumnTest.java @@ -7,8 +7,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.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; @@ -23,6 +21,8 @@ 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.CreateFlexibleLeaderboard; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; import com.sap.sse.operationaltransformation.OperationalTransformer; import com.sap.sse.operationaltransformation.Peer; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java index 74c0b810653..855cd5ca1f8 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceLogOperationalTransformationTest.java @@ -12,7 +12,6 @@ import org.junit.Before; import org.junit.Test; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; @@ -22,6 +21,7 @@ import com.sap.sailing.domain.racelog.impl.RaceLogStartTimeEventImpl; import com.sap.sailing.server.operationaltransformation.racelog.RaceLogEventWithTransformationSupport; import com.sap.sailing.server.operationaltransformation.racelog.RaceLogStartTimeEventWithTransformationSupport; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.operationaltransformation.OperationalTransformer; import com.sap.sse.operationaltransformation.Peer; import com.sap.sse.operationaltransformation.PeerImpl; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java index 852734d46ad..198b4f6c975 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java @@ -36,11 +36,9 @@ import com.sap.sailing.domain.base.impl.RaceDefinitionImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO; import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; @@ -71,7 +69,9 @@ import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sailing.server.operationaltransformation.RemoveEvent; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveRegatta; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/WindByRaceLogTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/WindByRaceLogTest.java index b9105bbe59c..892c873ca9b 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/WindByRaceLogTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/WindByRaceLogTest.java @@ -29,13 +29,11 @@ import com.sap.sailing.domain.base.impl.TeamImpl; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; import com.sap.sailing.domain.racelog.RaceLog; @@ -59,7 +57,9 @@ import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboar import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sailing.server.operationaltransformation.DisconnectLeaderboardColumnFromTrackedRace; import com.sap.sailing.server.operationaltransformation.TrackRegatta; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindByRaceLogTest { diff --git a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/AbstractDataRetriever.java b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/AbstractDataRetriever.java index dab33e6112a..81ee42b086b 100644 --- a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/AbstractDataRetriever.java +++ b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/AbstractDataRetriever.java @@ -27,10 +27,10 @@ import slash.navigation.tcx.Tcx1Format; import slash.navigation.tcx.Tcx2Format; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.trackfiles.TrackFilesFormat; import com.sap.sailing.domain.trackimport.FormatNotSupportedException; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; public abstract class AbstractDataRetriever implements DataRetriever { diff --git a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/ManueverDataRetriever.java b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/ManueverDataRetriever.java index d670bd9aa59..3e01d756369 100644 --- a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/ManueverDataRetriever.java +++ b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/ManueverDataRetriever.java @@ -7,11 +7,11 @@ import slash.navigation.gpx.GpxRoute; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.trackfiles.TrackFilesFormat; import com.sap.sailing.domain.trackimport.FormatNotSupportedException; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; public class ManueverDataRetriever extends AbstractDataRetriever { diff --git a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/RouteConverterGPSFixImporterImpl.java b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/RouteConverterGPSFixImporterImpl.java index 03c0f69ad3c..87bfec60788 100644 --- a/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/RouteConverterGPSFixImporterImpl.java +++ b/java/com.sap.sailing.server.trackfiles/src/com/sap/sailing/server/trackfiles/impl/RouteConverterGPSFixImporterImpl.java @@ -85,14 +85,14 @@ import slash.navigation.zip.ZipFormat; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Only supports such navigation formats for which RouteConverter implements own parser. diff --git a/java/com.sap.sailing.server/META-INF/MANIFEST.MF b/java/com.sap.sailing.server/META-INF/MANIFEST.MF index 85d6baaf7b3..8e70497bb5b 100644 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -23,7 +23,8 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.shared.android, com.sap.sailing.server.gateway.serialization, com.sap.sse.common, - com.sap.sse.operationaltransformation + com.sap.sse.operationaltransformation, + com.sap.sse.replication Bundle-ClassPath: . Export-Package: com.sap.sailing.server, com.sap.sailing.server.impl; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/OperationExecutionListener.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/OperationExecutionListener.java deleted file mode 100755 index 32fe48cba0e..00000000000 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/OperationExecutionListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.sap.sailing.server; - -public interface OperationExecutionListener { - void executed(RacingEventServiceOperation operation); -} 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 a56d936080c..88163fba063 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 @@ -40,7 +40,6 @@ import com.sap.sailing.domain.common.RegattaFetcher; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory; @@ -67,6 +66,9 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.server.masterdata.DataImportLockWithProgress; +import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sailing.server.replication.Replicable; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; import com.sap.sse.common.search.KeywordQuery; @@ -92,7 +94,7 @@ import com.sap.sse.common.search.Searchable; * */ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher, - LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable { + LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable, Replicable> { @Override Regatta getRegatta(RegattaName regattaName); @@ -293,13 +295,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch void updateLeaderboardGroup(String oldName, String newName, String description, String displayName, List leaderboardNames, int[] overallLeaderboardDiscardThresholds, ScoringSchemeType overallLeaderboardScoringSchemeType); - /** - * Executes an operation whose effects need to be replicated to any replica of this service known and - * {@link OperationExecutionListener#executed(RacingEventServiceOperation) notifies} all registered - * operation execution listeners about the execution of the operation. - */ - T apply(RacingEventServiceOperation operation); - void addOperationExecutionListener(OperationExecutionListener listener); void removeOperationExecutionListener(OperationExecutionListener listener); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java index b191f2455d3..18eeb21e368 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java @@ -1,5 +1,7 @@ package com.sap.sailing.server; +import com.sap.sailing.server.replication.OperationExecutionListener; + public interface Replicator { /** diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/LeaderboardSearchResultBaseRanker.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/LeaderboardSearchResultBaseRanker.java index a942f6d21a2..a891fc249fe 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/LeaderboardSearchResultBaseRanker.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/LeaderboardSearchResultBaseRanker.java @@ -7,9 +7,9 @@ import java.util.List; import com.sap.sailing.domain.base.LeaderboardSearchResultBase; import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class LeaderboardSearchResultBaseRanker implements Comparator { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java index 98c4dce764d..fcd2e4f8a60 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java @@ -15,10 +15,10 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.TimePoint; class MediaLibrary { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java index 6c6d191869b..59e1e82a959 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java @@ -10,7 +10,6 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLog; @@ -25,6 +24,7 @@ import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrection; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrectionMetadata; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class RaceLogScoringReplicator implements RaceColumnListener { 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 bcf5046759b..4803aa0a2e6 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 @@ -2,6 +2,7 @@ package com.sap.sailing.server.impl; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; @@ -75,13 +76,11 @@ import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.Renamable; import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO; import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO; import com.sap.sailing.domain.common.impl.DataImportProgressImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory; @@ -138,7 +137,6 @@ import com.sap.sailing.domain.tracking.WindTracker; import com.sap.sailing.domain.tracking.WindTrackerFactory; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory; -import com.sap.sailing.server.OperationExecutionListener; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.Replicator; @@ -183,11 +181,14 @@ import com.sap.sailing.server.operationaltransformation.UpdateRaceTimes; import com.sap.sailing.server.operationaltransformation.UpdateTrackedRaceStatus; import com.sap.sailing.server.operationaltransformation.UpdateWindAveragingTime; import com.sap.sailing.server.operationaltransformation.UpdateWindSourcesToExclude; +import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; -import com.sap.sailing.util.BuildVersion; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; +import com.sap.sse.common.BuildVersion; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.ResultImpl; @@ -2094,6 +2095,16 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport } } + @Override + public ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is) throws IOException { + return getBaseDomainFactory().createObjectInputStreamResolvingAgainstThisFactory(is); + } + + @Override + public Serializable getId() { + return getClass().getName(); + } + @Override public void replicate(RacingEventServiceOperation operation) { for (OperationExecutionListener listener : operationExecutionListeners.keySet()) { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java index bb457002f71..794c921119d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java @@ -24,7 +24,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; @@ -50,6 +49,7 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class DummyTrackedRace extends TrackedRaceWithWindEssentials { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java index 0768a94c4a0..f69739ad775 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java @@ -4,9 +4,9 @@ import java.net.URL; import java.util.UUID; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; /** * Creates an {@link Event} in the server, with a new venue and an empty course area list. diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java index 4be2f4eabb6..4b839e6a943 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java @@ -3,9 +3,9 @@ package com.sap.sailing.server.operationaltransformation; import java.net.URL; import java.util.UUID; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; public class UpdateEvent extends AbstractEventOperation { private static final long serialVersionUID = -8271559266421161532L; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java index 782f7b34654..ecb91f059ce 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java @@ -4,11 +4,11 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard.Entry; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class UpdateLeaderboardMaxPointsReason extends AbstractLeaderboardColumnOperation> { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java index 5383df3a2f7..ac34e5c1123 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java @@ -3,10 +3,10 @@ package com.sap.sailing.server.operationaltransformation; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class UpdateLeaderboardScoreCorrection extends AbstractLeaderboardColumnOperation> { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java index 2b364b2d011..30c52c4e9f8 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java @@ -1,11 +1,11 @@ package com.sap.sailing.server.operationaltransformation; import com.sap.sailing.domain.common.NoWindException; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; public class UpdateLeaderboardScoreCorrectionMetadata extends AbstractLeaderboardOperation { private static final long serialVersionUID = -977025759476022993L; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java index 6f97b7794a5..ac011175e00 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java @@ -1,10 +1,10 @@ package com.sap.sailing.server.operationaltransformation; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; public class UpdateRaceTimes extends AbstractRaceOperation { private static final long serialVersionUID = 7054690983295760375L; diff --git a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/SimulatorTest.java b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/SimulatorTest.java index 16fd9731d41..624e6242f20 100644 --- a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/SimulatorTest.java +++ b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/SimulatorTest.java @@ -10,12 +10,8 @@ import junit.framework.Assert; import org.junit.Test; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; @@ -27,6 +23,10 @@ import com.sap.sailing.simulator.util.SailingSimulatorConstants; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorBlastImpl; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SimulatorTest { diff --git a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/TreeGrowTest.java b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/TreeGrowTest.java index 6d102285d06..b937a2ffabd 100644 --- a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/TreeGrowTest.java +++ b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/TreeGrowTest.java @@ -8,15 +8,11 @@ import junit.framework.Assert; import org.junit.Test; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; @@ -28,6 +24,10 @@ import com.sap.sailing.simulator.util.SailingSimulatorConstants; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorOscillationImpl; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TreeGrowTest { diff --git a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/WindFieldGeneratorTest.java b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/WindFieldGeneratorTest.java index 42ea29dc9b3..b7a0750023a 100644 --- a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/WindFieldGeneratorTest.java +++ b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/WindFieldGeneratorTest.java @@ -14,14 +14,10 @@ import java.util.logging.Logger; import org.junit.Test; import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.simulator.impl.RectangularGrid; import com.sap.sailing.simulator.impl.TimedPositionWithSpeedImpl; @@ -30,7 +26,11 @@ import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorBlastImpl; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorCombined; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorImpl; import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorOscillationImpl; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Test for @WindFieldGenerator diff --git a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/util/PathGenerator1TurnerEval.java b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/util/PathGenerator1TurnerEval.java index 2e78a389cdd..dd6ed6e3fe8 100644 --- a/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/util/PathGenerator1TurnerEval.java +++ b/java/com.sap.sailing.simulator.test/src/com/sap/sailing/simulator/test/util/PathGenerator1TurnerEval.java @@ -11,9 +11,7 @@ import java.io.ObjectInputStream; import junit.framework.Assert; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; @@ -22,6 +20,8 @@ import com.sap.sailing.simulator.impl.PolarDiagramCSV; import com.sap.sailing.simulator.impl.SimulationParametersImpl; import com.sap.sailing.simulator.util.SailingSimulatorConstants; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGenerator1TurnerEval { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1Turner.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1Turner.java index 978d0da19f6..0a3feafe243 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1Turner.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1Turner.java @@ -8,15 +8,15 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreePosition; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGenerator1Turner extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerLeftDirect.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerLeftDirect.java index cea23d98d76..ca494e45866 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerLeftDirect.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerLeftDirect.java @@ -7,14 +7,14 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGenerator1TurnerLeftDirect extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerRightDirect.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerRightDirect.java index 837e71af5e4..40b4bddef57 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerRightDirect.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGenerator1TurnerRightDirect.java @@ -7,14 +7,14 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGenerator1TurnerRightDirect extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDijkstra.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDijkstra.java index 58d92730a11..86ac217d256 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDijkstra.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDijkstra.java @@ -12,8 +12,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; @@ -21,7 +19,9 @@ import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGeneratorDijkstra extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDynProgForward.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDynProgForward.java index f74afafc7d8..ee42cffa0c9 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDynProgForward.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorDynProgForward.java @@ -9,8 +9,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; @@ -19,6 +17,8 @@ import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindField; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGeneratorDynProgForward extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistEuclidian.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistEuclidian.java index 8508edd3a37..91bf9d1ea4c 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistEuclidian.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistEuclidian.java @@ -8,14 +8,14 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGeneratorOpportunistEuclidian extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistVMG.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistVMG.java index 7abafa62585..cee6640bb3c 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistVMG.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorOpportunistVMG.java @@ -7,14 +7,14 @@ import java.util.logging.Logger; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGeneratorOpportunistVMG extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTracTrac.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTracTrac.java index 826236df469..cadd71fe7f3 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTracTrac.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTracTrac.java @@ -17,7 +17,6 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; @@ -33,6 +32,7 @@ import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; +import com.sap.sse.common.TimePoint; @SuppressWarnings("restriction") public class PathGeneratorTracTrac extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java index 6dee9aa366b..f191a1b98e8 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java @@ -13,9 +13,7 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.simulator.Path; @@ -24,7 +22,9 @@ import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathGeneratorTreeGrowWind extends PathGeneratorBase { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathImpl.java index a202bda9a4e..c688735f9ad 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathImpl.java @@ -13,14 +13,14 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindField; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PathImpl implements Path, Serializable { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionImpl.java index e24f240c049..1bcb98a1b85 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionImpl.java @@ -1,8 +1,8 @@ package com.sap.sailing.simulator.impl; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.simulator.TimedPosition; +import com.sap.sse.common.TimePoint; public class TimedPositionImpl implements TimedPosition { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedImpl.java index c031aa56822..51449f2470a 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedImpl.java @@ -2,8 +2,8 @@ package com.sap.sailing.simulator.impl; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.simulator.TimedPositionWithSpeed; +import com.sap.sse.common.TimePoint; public class TimedPositionWithSpeedImpl implements TimedPositionWithSpeed { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedSimple.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedSimple.java index 00e2ec6851a..e3c0afd30d2 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedSimple.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/TimedPositionWithSpeedSimple.java @@ -3,8 +3,8 @@ package com.sap.sailing.simulator.impl; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.simulator.TimedPositionWithSpeed; +import com.sap.sse.common.TimePoint; public class TimedPositionWithSpeedSimple implements TimedPositionWithSpeed { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/WindFieldGenerator.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/WindFieldGenerator.java index 45748eb3cab..e2ce541c223 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/WindFieldGenerator.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/WindFieldGenerator.java @@ -4,10 +4,10 @@ package com.sap.sailing.simulator.windfield; import java.io.Serializable; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.simulator.Grid; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public interface WindFieldGenerator extends WindField, Serializable { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorBlastImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorBlastImpl.java index af35125b379..c1ed8392b49 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorBlastImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorBlastImpl.java @@ -6,10 +6,8 @@ import umontreal.iro.lecuyer.randvar.GeometricGen; import umontreal.iro.lecuyer.randvar.NormalGen; import umontreal.iro.lecuyer.rng.RandomStream; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.Wind; @@ -18,6 +16,8 @@ import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class WindFieldGeneratorBlastImpl extends WindFieldGeneratorImpl implements WindFieldGenerator { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorCombined.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorCombined.java index 9e384c819a6..34ee76eb581 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorCombined.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorCombined.java @@ -1,9 +1,7 @@ package com.sap.sailing.simulator.windfield.impl; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; @@ -11,6 +9,8 @@ import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public class WindFieldGeneratorCombined extends WindFieldGeneratorImpl implements WindFieldGenerator { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorImpl.java index c696bf8b115..9733e80b84c 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorImpl.java @@ -5,10 +5,8 @@ import java.util.Map; import java.util.logging.Logger; import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.tracking.Wind; @@ -22,6 +20,8 @@ import com.sap.sailing.simulator.impl.TimedPositionImpl; import com.sap.sailing.simulator.impl.TimedPositionWithSpeedImpl; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public abstract class WindFieldGeneratorImpl implements WindFieldGenerator { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorMeasured.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorMeasured.java index f7ad8712628..022add64dad 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorMeasured.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorMeasured.java @@ -4,9 +4,7 @@ import java.util.List; import java.util.logging.Logger; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.Wind; @@ -17,6 +15,8 @@ import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public class WindFieldGeneratorMeasured extends WindFieldGeneratorImpl implements WindFieldGenerator { diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorOscillationImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorOscillationImpl.java index 67b2a1f53c7..1daf8f2b1b4 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorOscillationImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/windfield/impl/WindFieldGeneratorOscillationImpl.java @@ -4,11 +4,9 @@ import java.util.logging.Logger; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; @@ -18,6 +16,8 @@ import com.sap.sailing.simulator.Grid; import com.sap.sailing.simulator.TimedPosition; import com.sap.sailing.simulator.windfield.WindControlParameters; import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class WindFieldGeneratorOscillationImpl extends WindFieldGeneratorImpl implements WindFieldGenerator { diff --git a/java/com.sap.sailing.velum.resultimport.test/src/com/sap/sailing/velum/resultimport/test/ParserTest.java b/java/com.sap.sailing.velum.resultimport.test/src/com/sap/sailing/velum/resultimport/test/ParserTest.java index b182d827013..0f42cd364e2 100644 --- a/java/com.sap.sailing.velum.resultimport.test/src/com/sap/sailing/velum/resultimport/test/ParserTest.java +++ b/java/com.sap.sailing.velum.resultimport.test/src/com/sap/sailing/velum/resultimport/test/ParserTest.java @@ -19,15 +19,15 @@ import org.junit.Test; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; import com.sap.sailing.velum.resultimport.CsvParserFactory; import com.sap.sailing.velum.resultimport.impl.ScoreCorrectionProviderImpl; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ParserTest { private static final String SAMPLE_INPUT_NAME_NIXDORF_POKAL_4WF = "Star_HNVPokal4WF.csv"; diff --git a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParser.java b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParser.java index 3fd00e17721..dfefa9b7931 100644 --- a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParser.java +++ b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParser.java @@ -1,7 +1,7 @@ package com.sap.sailing.velum.resultimport; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.RegattaResults; +import com.sap.sse.common.TimePoint; public interface CsvParser { RegattaResults parseResults() throws Exception; diff --git a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParserFactory.java b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParserFactory.java index b6bd5403f56..159ba8eec57 100644 --- a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParserFactory.java +++ b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/CsvParserFactory.java @@ -2,8 +2,8 @@ package com.sap.sailing.velum.resultimport; import java.io.InputStream; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.velum.resultimport.impl.CsvParserFactoryImpl; +import com.sap.sse.common.TimePoint; public interface CsvParserFactory { CsvParserFactory INSTANCE = new CsvParserFactoryImpl(); diff --git a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserFactoryImpl.java b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserFactoryImpl.java index 2a7685e29aa..ef16f999534 100644 --- a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserFactoryImpl.java +++ b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserFactoryImpl.java @@ -2,9 +2,9 @@ package com.sap.sailing.velum.resultimport.impl; import java.io.InputStream; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.velum.resultimport.CsvParser; import com.sap.sailing.velum.resultimport.CsvParserFactory; +import com.sap.sse.common.TimePoint; public class CsvParserFactoryImpl implements CsvParserFactory { @Override diff --git a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserImpl.java b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserImpl.java index 97d1926c949..e279ebc7863 100644 --- a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserImpl.java +++ b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/CsvParserImpl.java @@ -9,13 +9,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.CompetitorEntry; import com.sap.sailing.resultimport.CompetitorRow; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.impl.CompetitorRowImpl; import com.sap.sailing.resultimport.impl.DefaultCompetitorEntryImpl; import com.sap.sailing.velum.resultimport.CsvParser; +import com.sap.sse.common.TimePoint; public class CsvParserImpl implements CsvParser { diff --git a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/ScoreCorrectionProviderImpl.java index 275a1d216b6..46851ff0084 100644 --- a/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.velum.resultimport/src/com/sap/sailing/velum/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -9,7 +9,6 @@ import java.util.Set; import java.util.logging.Logger; import com.sap.sailing.domain.common.RegattaScoreCorrections; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.RegattaResults; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; @@ -17,6 +16,7 @@ import com.sap.sailing.resultimport.impl.AbstractDocumentBasedScoreCorrectionPro import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl; import com.sap.sailing.velum.resultimport.CsvParser; import com.sap.sailing.velum.resultimport.CsvParserFactory; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl extends AbstractDocumentBasedScoreCorrectionProvider { diff --git a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/ExportAction.java b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/ExportAction.java index ae8b3e38399..cb4cb4fcbc4 100644 --- a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/ExportAction.java +++ b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/ExportAction.java @@ -24,7 +24,6 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.tracking.GPSFixMoving; @@ -33,6 +32,7 @@ import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; diff --git a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java index ce3e3e4983c..ffc9666e5c0 100644 --- a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java +++ b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java @@ -28,18 +28,14 @@ import com.sap.sailing.domain.base.SpeedWithConfidence; import com.sap.sailing.domain.base.impl.SpeedWithConfidenceImpl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -50,8 +46,12 @@ import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sailing.server.RacingEventService; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Exports all data from a leaderboard into XML format. diff --git a/java/com.sap.sailing.xrr.resultimport.test/src/com/sap/sailing/xrr/resultimport/test/ParserTest.java b/java/com.sap.sailing.xrr.resultimport.test/src/com/sap/sailing/xrr/resultimport/test/ParserTest.java index 08d32ee7269..3ad987baaca 100755 --- a/java/com.sap.sailing.xrr.resultimport.test/src/com/sap/sailing/xrr/resultimport/test/ParserTest.java +++ b/java/com.sap.sailing.xrr.resultimport.test/src/com/sap/sailing/xrr/resultimport/test/ParserTest.java @@ -29,15 +29,15 @@ import org.xml.sax.SAXException; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.common.RegattaScoreCorrections; import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl; import com.sap.sailing.xrr.resultimport.ParserFactory; import com.sap.sailing.xrr.resultimport.impl.ScoreCorrectionProviderImpl; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ParserTest { private static final String SAMPLE_INPUT_NAME_LASER = "Laser_20130403_111958.xml"; diff --git a/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/ScoreCorrectionProviderImpl.java b/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/ScoreCorrectionProviderImpl.java index 7222f7f87cc..329446b7be6 100755 --- a/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/ScoreCorrectionProviderImpl.java +++ b/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/ScoreCorrectionProviderImpl.java @@ -15,7 +15,6 @@ import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import com.sap.sailing.domain.common.RegattaScoreCorrections; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.resultimport.ResultDocumentDescriptor; import com.sap.sailing.resultimport.ResultDocumentProvider; import com.sap.sailing.resultimport.impl.AbstractDocumentBasedScoreCorrectionProvider; @@ -24,6 +23,7 @@ import com.sap.sailing.xrr.resultimport.ParserFactory; import com.sap.sailing.xrr.resultimport.schema.Division; import com.sap.sailing.xrr.resultimport.schema.Event; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; public class ScoreCorrectionProviderImpl extends AbstractDocumentBasedScoreCorrectionProvider { diff --git a/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/XRRParserUtil.java b/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/XRRParserUtil.java index 3871320da02..81c9a1d6c56 100644 --- a/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/XRRParserUtil.java +++ b/java/com.sap.sailing.xrr.resultimport/src/com/sap/sailing/xrr/resultimport/impl/XRRParserUtil.java @@ -3,9 +3,9 @@ package com.sap.sailing.xrr.resultimport.impl; import javax.xml.datatype.DatatypeConstants; import javax.xml.datatype.XMLGregorianCalendar; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class XRRParserUtil { public static TimePoint calculateTimePointForRegattaResults(RegattaResults regattaResult) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/BuildVersion.java b/java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java similarity index 93% rename from java/com.sap.sailing.domain/src/com/sap/sailing/util/BuildVersion.java rename to java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java index 5821ad55628..64032435927 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/BuildVersion.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java @@ -1,4 +1,4 @@ -package com.sap.sailing.util; +package com.sap.sse.common; import java.io.BufferedReader; import java.io.File; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Duration.java b/java/com.sap.sse.common/src/com/sap/sse/common/Duration.java similarity index 90% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Duration.java rename to java/com.sap.sse.common/src/com/sap/sse/common/Duration.java index aa6b73c250e..f42cc046004 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Duration.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/Duration.java @@ -1,8 +1,8 @@ -package com.sap.sailing.domain.common; +package com.sap.sse.common; import java.io.Serializable; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsDurationImpl; /** * A time duration that can be converted to various time units and that interoperates with {@link TimePoint}. diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimePoint.java b/java/com.sap.sse.common/src/com/sap/sse/common/TimePoint.java similarity index 88% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimePoint.java rename to java/com.sap.sse.common/src/com/sap/sse/common/TimePoint.java index 22af26ad0bb..8b44f7090a9 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TimePoint.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/TimePoint.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.common; +package com.sap.sse.common; import java.io.Serializable; import java.util.Date; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/WithID.java b/java/com.sap.sse.common/src/com/sap/sse/common/WithID.java similarity index 77% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/WithID.java rename to java/com.sap.sse.common/src/com/sap/sse/common/WithID.java index 5cd0c487ca5..3b6dcd2b081 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/WithID.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/WithID.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.common; +package com.sap.sse.common; import java.io.Serializable; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractTimePoint.java b/java/com.sap.sse.common/src/com/sap/sse/common/impl/AbstractTimePoint.java similarity index 95% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractTimePoint.java rename to java/com.sap.sse.common/src/com/sap/sse/common/impl/AbstractTimePoint.java index e2b0e00677d..67c3122345b 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractTimePoint.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/impl/AbstractTimePoint.java @@ -1,10 +1,10 @@ -package com.sap.sailing.domain.common.impl; +package com.sap.sse.common.impl; import java.util.Comparator; import java.util.Date; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; public abstract class AbstractTimePoint implements TimePoint { private static final long serialVersionUID = 8825508619301420378L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsDurationImpl.java b/java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsDurationImpl.java similarity index 96% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsDurationImpl.java rename to java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsDurationImpl.java index 02bdee46345..5797596aa80 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsDurationImpl.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsDurationImpl.java @@ -1,6 +1,6 @@ -package com.sap.sailing.domain.common.impl; +package com.sap.sse.common.impl; -import com.sap.sailing.domain.common.Duration; +import com.sap.sse.common.Duration; public class MillisecondsDurationImpl implements Duration { private static final long serialVersionUID = -4257982564719184723L; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsTimePoint.java b/java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsTimePoint.java similarity index 90% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsTimePoint.java rename to java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsTimePoint.java index 44c012a37af..1daebba8bb3 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/MillisecondsTimePoint.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/impl/MillisecondsTimePoint.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.common.impl; +package com.sap.sse.common.impl; import java.util.Date; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializableComparator.java b/java/com.sap.sse.common/src/com/sap/sse/common/impl/SerializableComparator.java similarity index 73% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializableComparator.java rename to java/com.sap.sse.common/src/com/sap/sse/common/impl/SerializableComparator.java index 8fa8925aaf8..116e0b65e5d 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializableComparator.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/impl/SerializableComparator.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.common.impl; +package com.sap.sse.common.impl; import java.io.Serializable; import java.util.Comparator; diff --git a/java/com.sap.sailing.server.replication/.classpath b/java/com.sap.sse.replication/.classpath similarity index 100% rename from java/com.sap.sailing.server.replication/.classpath rename to java/com.sap.sse.replication/.classpath diff --git a/java/com.sap.sailing.server.replication/.gitignore b/java/com.sap.sse.replication/.gitignore similarity index 100% rename from java/com.sap.sailing.server.replication/.gitignore rename to java/com.sap.sse.replication/.gitignore diff --git a/java/com.sap.sailing.server.replication/.project b/java/com.sap.sse.replication/.project similarity index 88% rename from java/com.sap.sailing.server.replication/.project rename to java/com.sap.sse.replication/.project index 4f618fe50f1..6a166c69e75 100644 --- a/java/com.sap.sailing.server.replication/.project +++ b/java/com.sap.sse.replication/.project @@ -1,6 +1,6 @@ - com.sap.sailing.server.replication + com.sap.sse.replication diff --git a/java/com.sap.sailing.server.replication/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse.replication/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from java/com.sap.sailing.server.replication/.settings/org.eclipse.jdt.core.prefs rename to java/com.sap.sse.replication/.settings/org.eclipse.jdt.core.prefs diff --git a/java/com.sap.sailing.server.replication/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sse.replication/.settings/org.eclipse.pde.core.prefs similarity index 100% rename from java/com.sap.sailing.server.replication/.settings/org.eclipse.pde.core.prefs rename to java/com.sap.sse.replication/.settings/org.eclipse.pde.core.prefs diff --git a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF similarity index 76% rename from java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF rename to java/com.sap.sse.replication/META-INF/MANIFEST.MF index dad66979c26..41d1230f996 100644 --- a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Server Replication -Bundle-SymbolicName: com.sap.sailing.server.replication +Bundle-SymbolicName: com.sap.sse.replication Bundle-Version: 1.0.0.qualifier Bundle-Activator: com.sap.sailing.server.replication.impl.Activator Bundle-Vendor: SAP @@ -9,11 +9,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: com.sap.sailing.server.replication, com.sap.sailing.server.replication.impl -Require-Bundle: com.sap.sailing.server, - com.sap.sailing.server.gateway, - com.sap.sailing.domain.common, - com.sap.sailing.domain.shared.android, - com.sap.sse.common, +Require-Bundle: com.sap.sse.common, com.sap.sse.operationaltransformation Bundle-ClassPath: . Web-ContextPath: /replication diff --git a/java/com.sap.sailing.server.replication/WEB-INF/web.xml b/java/com.sap.sse.replication/WEB-INF/web.xml similarity index 100% rename from java/com.sap.sailing.server.replication/WEB-INF/web.xml rename to java/com.sap.sse.replication/WEB-INF/web.xml diff --git a/java/com.sap.sailing.server.replication/build.properties b/java/com.sap.sse.replication/build.properties similarity index 100% rename from java/com.sap.sailing.server.replication/build.properties rename to java/com.sap.sse.replication/build.properties diff --git a/java/com.sap.sailing.server.replication/pom.xml b/java/com.sap.sse.replication/pom.xml similarity index 86% rename from java/com.sap.sailing.server.replication/pom.xml rename to java/com.sap.sse.replication/pom.xml index a39d087a75c..1f17de470ba 100644 --- a/java/com.sap.sailing.server.replication/pom.xml +++ b/java/com.sap.sse.replication/pom.xml @@ -7,6 +7,6 @@ com.sap.sailing 1.0.0-SNAPSHOT - com.sap.sailing.server.replication + com.sap.sse.replication eclipse-plugin diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java new file mode 100755 index 00000000000..ee3dccae403 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java @@ -0,0 +1,8 @@ +package com.sap.sailing.server.replication; + +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; + +public interface OperationExecutionListener { + void executed(OperationWithTransformationSupport> operation); +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java similarity index 62% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java index 32e7dd76bd2..d7fc165bcf0 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -1,11 +1,15 @@ package com.sap.sailing.server.replication; +import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; +import java.net.MalformedURLException; import org.osgi.framework.BundleContext; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** * Represents a replicable part of an application. Such a replicable part is usually holder of the application state and @@ -31,10 +35,13 @@ import com.sap.sailing.domain.common.WithID; * operation need to identify the {@link Replicable} they refer to. This identification is added as an OSGi service registry * parameter that is used during service discovery. * + * @param the type of state to which the operations are applied; usually this will be set to the implementing subclass + * @param type of operation that the replicable accepts + * * @author Axel Uhl (D043530) * */ -public interface Replicable extends WithID { +public interface Replicable> extends WithID { /** * The name of the property to use in the properties dictionary in a call to * {@link BundleContext#registerService(Class, Object, java.util.Dictionary)} when registering a {@link Replicable}. @@ -47,7 +54,25 @@ public interface Replicable extends WithID { * Produces an object input stream that can choose to resolve objects against a cache so that duplicate instances * are avoided. */ - ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is); - - + ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is) throws IOException; + + /** + * Executes an operation whose effects need to be replicated to any replica of this service known and + * {@link OperationExecutionListener#executed(RacingEventServiceOperation) notifies} all registered + * operation execution listeners about the execution of the operation. + */ + T apply(RacingEventServiceOperation operation); + +// FIXME the problem here: Operation is used inconsistently; for one thing, in terms of operationaltransformation, +// the operation is expected to return the same state type (e.g., a RacingEventService); however, in our use as in +// RacingEventService, the operation can be modeled to return an actual return type, such as a String or a Regatta. + void apply(O operation); + + void addOperationExecutionListener(OperationExecutionListener listener); + + void removeOperationExecutionListener(OperationExecutionListener listener); + + void clearReplicaState() throws MalformedURLException, IOException, InterruptedException; + + void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException, InterruptedException; } diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java similarity index 90% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationService.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java index 2729c37df2a..d38f679cdb9 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java @@ -6,9 +6,9 @@ import java.util.Map; import java.util.UUID; import com.rabbitmq.client.Channel; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.replication.impl.ReplicaDescriptor; import com.sap.sailing.server.replication.impl.ReplicationServlet; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public interface ReplicationService { static String SAILING_SERVER_REPLICATION_TOPIC = "SailingServerReplicationTopic"; @@ -44,7 +44,7 @@ public interface ReplicationService { * For a replica replicating off this master, provides statistics in the form of number of operations sent to that * replica by type, where the operation type is the key, represented as the operation's class name */ - Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); + Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); double getAverageNumberOfOperationsPerMessage(ReplicaDescriptor replicaDescriptor); diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java new file mode 100755 index 00000000000..e0cdc58425c --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java @@ -0,0 +1,7 @@ +package com.sap.sailing.server.replication.impl; + +import com.sap.sailing.server.replication.Replicable; + +public interface HasReplicable { + Replicable getReplicable(); +} diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java similarity index 96% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java index 9415e8b6227..f07ee073b4b 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java @@ -7,10 +7,8 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.rabbitmq.client.Channel; -import com.sap.sailing.domain.common.Duration; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsDurationImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsDurationImpl; /** * Output stream that can split its contents into messages for RabbitMQ. This stream creates a RabbitMQ queue and sends diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java similarity index 85% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java index 516e3925564..e72d787ede4 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java @@ -7,9 +7,9 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.common.Util; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public class ReplicationInstancesManager { @@ -19,7 +19,7 @@ public class ReplicationInstancesManager { */ private Set replicaDescriptors; - private Map>, Integer>> replicationCounts; + private Map>, Integer>> replicationCounts; /** * Used to calculate the average number of operations per message sent/received for each replica. @@ -47,7 +47,7 @@ public class ReplicationInstancesManager { public ReplicationInstancesManager() { replicaDescriptors = new HashSet(); - replicationCounts = new HashMap>,Integer>>(); + replicationCounts = new HashMap>,Integer>>(); totalMessageCount = new HashMap<>(); totalNumberOfOperations = new HashMap<>(); totalQueueMessagesRawSizeInBytes = new HashMap(); @@ -73,7 +73,7 @@ public class ReplicationInstancesManager { public void registerReplica(ReplicaDescriptor replica) { replicaDescriptors.add(replica); - replicationCounts.put(replica, new HashMap>, Integer>()); + replicationCounts.put(replica, new HashMap>, Integer>()); } public void unregisterReplica(ReplicaDescriptor replica) { @@ -89,15 +89,15 @@ public class ReplicationInstancesManager { */ public void log(List> classes, long sizeOfQueueMessageInBytes) { for (ReplicaDescriptor replica : getReplicaDescriptors()) { - Map>, Integer> counts = replicationCounts.get(replica); + Map>, Integer> counts = replicationCounts.get(replica); if (counts == null) { - counts = new HashMap>, Integer>(); + counts = new HashMap>, Integer>(); replicationCounts.put(replica, counts); } for (Class replicatedOperationClass : classes) { // safe because replicatedOperation is declared of type RacingEventserviceOperation @SuppressWarnings("unchecked") - Class> operationClass = (Class>) replicatedOperationClass; + Class> operationClass = (Class>) replicatedOperationClass; Integer count = counts.get(operationClass); if (count == null) { count = 0; @@ -123,7 +123,7 @@ public class ReplicationInstancesManager { } } - public Map>, Integer> getStatistics(ReplicaDescriptor replica) { + public Map>, Integer> getStatistics(ReplicaDescriptor replica) { return replicationCounts.get(replica); } diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java similarity index 97% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java index 30eb06cb151..dde7a1f39fb 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java @@ -13,7 +13,7 @@ import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.util.BuildVersion; +import com.sap.sse.common.BuildVersion; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { private static final String REPLICATION_SERVLET = "/replication/replication"; diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java similarity index 91% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 1c075850ddc..4d578b937c1 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -29,12 +29,13 @@ import com.rabbitmq.client.AMQP.Queue.DeleteOk; import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; -import com.sap.sailing.server.OperationExecutionListener; -import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.util.BuildVersion; +import com.sap.sse.common.BuildVersion; +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** * Can observe a {@link RacingEventService} for the operations it performs that require replication. Only observes as @@ -51,14 +52,14 @@ import com.sap.sailing.util.BuildVersion; * @author Frank Mittag, Axel Uhl (d043530) * */ -public class ReplicationServiceImpl implements ReplicationService, OperationExecutionListener, HasRacingEventService { +public class ReplicationServiceImpl implements ReplicationService, OperationExecutionListener, HasReplicable { private static final Logger logger = Logger.getLogger(ReplicationServiceImpl.class.getName()); private final ReplicationInstancesManager replicationInstancesManager; - private final ServiceTracker racingEventServiceTracker; + private final ServiceTracker, Replicable> racingEventServiceTracker; - private final RacingEventService localService; + private final Replicable localService; /** * null, if this instance is not currently replicating from some master; the master's descriptor otherwise @@ -177,7 +178,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec private ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager, - RacingEventService localService, boolean createRacingEventServiceTracker) throws IOException { + Replicable localService, boolean createRacingEventServiceTracker) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); @@ -205,13 +206,13 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * the name of the exchange to which replicas can bind */ public ReplicationServiceImpl(String exchangeName, String exchangeHost, - final ReplicationInstancesManager replicationInstancesManager, RacingEventService localService) throws IOException { + final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); } - protected ServiceTracker getRacingEventServiceTracker() { - return new ServiceTracker( - Activator.getDefaultContext(), RacingEventService.class.getName(), null); + protected ServiceTracker, Replicable> getRacingEventServiceTracker() { + return new ServiceTracker, Replicable>( + Activator.getDefaultContext(), Replicable.class.getName(), null); } private Channel createMasterChannelAndDeclareFanoutExchange() throws IOException { @@ -241,8 +242,8 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } @Override - public RacingEventService getRacingEventService() { - RacingEventService result; + public Replicable getReplicable() { + Replicable result; if (localService != null) { result = localService; } else { @@ -266,7 +267,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } private void addAsListenerToRacingEventService() { - getRacingEventService().addOperationExecutionListener(this); + getReplicable().addOperationExecutionListener(this); } @Override @@ -285,14 +286,14 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } private void removeAsListenerFromRacingEventService() { - getRacingEventService().removeOperationExecutionListener(this); + getReplicable().removeOperationExecutionListener(this); } /** * Schedules a single operation for broadcast. The operation is added to {@link #outboundBuffer}, and if not already scheduled, * a {@link #timer} is created and scheduled to send in {@link #TRANSMISSION_DELAY_MILLIS} milliseconds. */ - private void broadcastOperation(RacingEventServiceOperation operation) throws IOException { + private void broadcastOperation(OperationWithTransformationSupport operation) throws IOException { // need to write the operations one by one, making sure the ObjectOutputStream always writes // identical objects again if required because they may have changed state in between ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -428,20 +429,19 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec replicator = new Replicator(master, this, /* startSuspended */ true, consumer); // start receiving messages already now, but start in suspended mode replicatorThread = new Thread(replicator, "Replicator receiving from "+master.getMessagingHostname()+"/"+master.getExchangeName()); - final RacingEventService racingEventService = getRacingEventService(); + final Replicable replicable = getReplicable(); // clear racingEventService state here, before starting to receive and de-serialized operations which builds up new state, e.g., in competitor store - racingEventService.clearReplicaState(); // see also bug 2437 + replicable.clearReplicaState(); // see also bug 2437 replicatorThread.start(); logger.info("Started replicator thread"); InputStream is = initialLoadURL.openStream(); final String queueName = new BufferedReader(new InputStreamReader(is)).readLine(); try { RabbitInputStreamProvider rabbitInputStreamProvider = new RabbitInputStreamProvider(master.createChannel(), queueName); - ObjectInputStream ois = racingEventService.getBaseDomainFactory() - .createObjectInputStreamResolvingAgainstThisFactory( + ObjectInputStream ois = replicable.createObjectInputStreamResolvingAgainstCache( new GZIPInputStream(rabbitInputStreamProvider.getInputStream())); logger.info("Starting to receive initial load"); - racingEventService.initiallyFillFrom(ois); + replicable.initiallyFillFrom(ois); logger.info("Done receiving initial load"); replicator.setSuspended(false); // apply queued operations } finally { @@ -497,7 +497,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * replicas by publishing it to the fan-out exchange. */ @Override - public void executed(RacingEventServiceOperation operation) { + public void executed(OperationWithTransformationSupport> operation) { try { broadcastOperation(operation); } catch (Exception e) { @@ -510,7 +510,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } @Override - public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { + public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { return replicationInstancesManager.getStatistics(replicaDescriptor); } diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java similarity index 100% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java similarity index 88% rename from java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java rename to java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java index 87e6f717862..2add48eaa73 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java @@ -21,10 +21,8 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; -import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** * Receives {@link RacingEventServiceOperation}s through JMS and @@ -46,8 +44,8 @@ public class Replicator implements Runnable { private static final int CHECK_COUNT = 150; // how long to check, value is CHECK_INTERVAL second steps private final ReplicationMasterDescriptor master; - private final HasRacingEventService racingEventServiceTracker; - private final List> queue; + private final HasReplicable replicableProvider; + private final List> queue; private QueueingConsumer consumer; @@ -90,10 +88,10 @@ public class Replicator implements Runnable { * @param consumer * the RabbitMQ consumer from which to load messages */ - public Replicator(ReplicationMasterDescriptor master, HasRacingEventService racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { - this.queue = new ArrayList>(); + public Replicator(ReplicationMasterDescriptor master, HasReplicable racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { + this.queue = new ArrayList>(); this.master = master; - this.racingEventServiceTracker = racingEventServiceTracker; + this.replicableProvider = racingEventServiceTracker; this.suspended = startSuspended; this.consumer = consumer; } @@ -139,16 +137,16 @@ public class Replicator implements Runnable { // Set this object's class's class loader as context for de-serialization so that all exported classes // of all required bundles/packages can be deserialized at least Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); - ObjectInputStream ois = racingEventServiceTracker.getRacingEventService().getBaseDomainFactory() + ObjectInputStream ois = replicableProvider.getReplicable().getBaseDomainFactory() .createObjectInputStreamResolvingAgainstThisFactory( new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage))); int operationsInMessage = 0; try { while (true) { byte[] serializedOperation = (byte[]) ois.readObject(); - ObjectInputStream operationOIS = racingEventServiceTracker.getRacingEventService().getBaseDomainFactory() - .createObjectInputStreamResolvingAgainstThisFactory(new ByteArrayInputStream(serializedOperation)); - RacingEventServiceOperation operation = (RacingEventServiceOperation) operationOIS.readObject(); + ObjectInputStream operationOIS = replicableProvider.getReplicable() + .createObjectInputStreamResolvingAgainstCache(new ByteArrayInputStream(serializedOperation)); + OperationWithTransformationSupport operation = (OperationWithTransformationSupport) operationOIS.readObject(); operationCount++; operationsInMessage++; if (operationCount % 10000l == 0) { @@ -223,7 +221,7 @@ public class Replicator implements Runnable { * If the replicator is currently {@link #suspended}, the operation is queued, otherwise immediately applied to * the receiving replica. */ - private synchronized void applyOrQueue(RacingEventServiceOperation operation) { + private synchronized void applyOrQueue(OperationWithTransformationSupport operation) { if (suspended) { queue(operation); } else { @@ -231,11 +229,11 @@ public class Replicator implements Runnable { } } - private synchronized void apply(final RacingEventServiceOperation operation) { + private synchronized void apply(final OperationWithTransformationSupport operation) { Runnable runnable = new Runnable() { @Override public void run() { - racingEventServiceTracker.getRacingEventService().apply(operation); + replicableProvider.getReplicable().apply(operation); } }; if (operation.requiresSynchronousExecution()) { diff --git a/java/pom.xml b/java/pom.xml index a97bd1f9132..7b0589927e8 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -27,6 +27,7 @@ com.sap.sse.security.userstore.mongodb com.sap.sse.operationaltransformation com.sap.sse.operationaltransformation.test + com.sap.sse.replication com.sap.sse.common.test com.sap.sailing.domain.common com.sap.sailing.domain.shared.android @@ -56,7 +57,6 @@ com.sap.sailing.server.gateway com.sap.sailing.server.gateway.ess40 com.sap.sailing.server.gateway.serialization - com.sap.sailing.server.replication com.sap.sailing.www com.sap.sailing.www.events com.sap.sailing.xmlexport diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/LaunchActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/LaunchActivity.java index 3595e4bf0a5..218633facf9 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/LaunchActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/LaunchActivity.java @@ -20,8 +20,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.impl.CompetitorImpl; import com.sap.sailing.domain.base.impl.MarkImpl; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogServletConstants; import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -31,6 +29,8 @@ import com.sap.sailing.domain.racelog.tracking.impl.SmartphoneUUIDIdentifierImpl import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class LaunchActivity extends BaseActivity { private final JsonSerializer eventSerializer = diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/OfflineDataManager.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/OfflineDataManager.java index 5757d4b8698..9b90fda7971 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/OfflineDataManager.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/OfflineDataManager.java @@ -37,8 +37,6 @@ import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.domain.base.racegroup.impl.RaceGroupImpl; import com.sap.sailing.domain.base.racegroup.impl.SeriesWithRowsImpl; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEventAuthor; @@ -54,6 +52,8 @@ import com.sap.sailing.racecommittee.app.domain.ManagedRace; import com.sap.sailing.racecommittee.app.domain.configuration.impl.PreferencesRegattaConfigurationLoader; import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceIdentifierImpl; import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class OfflineDataManager extends DataManager { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/ManagedRace.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/ManagedRace.java index 70532b823f1..3cd0483730f 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/ManagedRace.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/ManagedRace.java @@ -4,11 +4,11 @@ import java.util.Collection; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.state.RaceState; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; public interface ManagedRace extends ManagedRaceIdentifier, Named, WithID { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/WindActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/WindActivity.java index b5f709a66f6..249e98ad3ff 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/WindActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/WindActivity.java @@ -29,7 +29,6 @@ import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.racecommittee.app.AppConstants; @@ -38,6 +37,7 @@ import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.racecommittee.app.ui.views.CompassView; import com.sap.sailing.racecommittee.app.ui.views.CompassView.CompassDirectionListener; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class WindActivity extends SessionActivity implements CompassDirectionListener, LocationListener { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/racelist/RaceListDataTypeRace.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/racelist/RaceListDataTypeRace.java index f6b92fae2b6..8fca289d42e 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/racelist/RaceListDataTypeRace.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/racelist/RaceListDataTypeRace.java @@ -6,10 +6,10 @@ import java.util.Locale; import android.app.Fragment; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.domain.ManagedRace; +import com.sap.sse.common.TimePoint; public class RaceListDataTypeRace implements RaceListDataType { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/RaceInfoFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/RaceInfoFragment.java index 6adea0ea34a..94a34c7190b 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/RaceInfoFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/RaceInfoFragment.java @@ -16,7 +16,6 @@ import android.widget.TextView; import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.RaceStateChangedListener; import com.sap.sailing.domain.racelog.state.ReadonlyRaceState; import com.sap.sailing.domain.racelog.state.impl.BaseRaceStateChangedListener; @@ -30,6 +29,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.chooser.RaceInfoFragmentCh import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceInfoListener; import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.SetStartTimeRaceFragment; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceInfoFragment extends RaceFragment implements RaceInfoListener { private final static String TAG = RaceInfoFragment.class.getName(); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java index 4fc86f5c7e9..a2fc91807de 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java @@ -8,13 +8,13 @@ import android.view.ViewGroup; import android.widget.ImageButton; import com.sap.sailing.android.shared.logging.ExLog; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.RaceState; import com.sap.sailing.racecommittee.app.AppConstants; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.logging.LogEvent; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class AbortModeSelectionDialog extends RaceDialogFragment { Flags abortFlag; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/PositioningFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/PositioningFragment.java index e55f0fa2887..9da6c4c707a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/PositioningFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/PositioningFragment.java @@ -28,7 +28,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorStore; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.CompetitorResults; import com.sap.sailing.domain.racelog.impl.CompetitorResultsImpl; import com.sap.sailing.racecommittee.app.R; @@ -42,6 +41,7 @@ import com.sap.sailing.racecommittee.app.ui.adapters.finishing.CompetitorsAdapte import com.sap.sailing.racecommittee.app.ui.comparators.NaturalNamedComparator; import com.sap.sse.common.Named; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class PositioningFragment extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java index a99e9a4af4f..bfac38ba175 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java @@ -18,8 +18,6 @@ import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TimePicker; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder; import com.sap.sailing.racecommittee.app.R; @@ -27,6 +25,8 @@ import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager; import com.sap.sailing.racecommittee.app.domain.ManagedRace; import com.sap.sailing.racecommittee.app.domain.impl.BoatClassSeriesFleet; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ProtestTimeDialogFragment extends AttachedDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java index 4c1c66e3b6c..0bca370d3da 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java @@ -11,11 +11,11 @@ import android.widget.Button; import android.widget.TimePicker; import android.widget.Toast; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder; import com.sap.sailing.racecommittee.app.R; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceFinishedTimeDialog extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishingTimeDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishingTimeDialog.java index 83271c9b221..82337836981 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishingTimeDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishingTimeDialog.java @@ -11,11 +11,11 @@ import android.widget.Button; import android.widget.TimePicker; import android.widget.Toast; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder; import com.sap.sailing.racecommittee.app.R; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceFinishingTimeDialog extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByMapCourseDesignDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByMapCourseDesignDialog.java index 01668f4896f..78245babff3 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByMapCourseDesignDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByMapCourseDesignDialog.java @@ -34,7 +34,6 @@ import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.impl.CourseDataImpl; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.analyzing.impl.LastWindFixFinder; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.racecommittee.app.AppConstants; @@ -51,6 +50,7 @@ import com.sap.sailing.racecommittee.app.domain.coursedesign.TargetTime; import com.sap.sailing.racecommittee.app.ui.activities.WindActivity; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ByMapCourseDesignDialog extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java index a9a9009df84..09b83db460e 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java @@ -17,10 +17,10 @@ import android.widget.ListAdapter; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.impl.CourseDataImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ByNameCourseDesignDialog extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ESSCourseDesignDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ESSCourseDesignDialog.java index 325b662280e..7a3b1e8aa56 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ESSCourseDesignDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ESSCourseDesignDialog.java @@ -33,7 +33,6 @@ import com.sap.sailing.domain.base.impl.ControlPointWithTwoMarksImpl; import com.sap.sailing.domain.base.impl.CourseDataImpl; import com.sap.sailing.domain.base.impl.WaypointImpl; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.data.InMemoryDataStore; @@ -47,6 +46,7 @@ import com.sap.sailing.racecommittee.app.ui.comparators.NaturalNamedComparator; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; import com.sap.sailing.racecommittee.app.ui.utils.ESSMarkImageHelper; import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ESSCourseDesignDialog extends RaceDialogFragment { // private final static String TAG = diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseGateLaunchTimesDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseGateLaunchTimesDialog.java index b2db39e2fba..06a36102e7b 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseGateLaunchTimesDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseGateLaunchTimesDialog.java @@ -9,12 +9,12 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Toast; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent; import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent.GateLineOpeningTimes; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.impl.GateLaunchTimePrerequisite; import com.sap.sailing.racecommittee.app.R; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceChooseGateLaunchTimesDialog extends PrerequisiteRaceDialog { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChoosePathFinderDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChoosePathFinderDialog.java index 73fdc31e0cd..ccbfa330787 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChoosePathFinderDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChoosePathFinderDialog.java @@ -11,12 +11,12 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Toast; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.GateStartRacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.gate.impl.PathfinderPrerequisite; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.domain.ManagedRace; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceChoosePathFinderDialog extends PrerequisiteRaceDialog { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseStartModeDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseStartModeDialog.java index afa2297098e..f5c9bd1a071 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseStartModeDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/prerequisite/RaceChooseStartModeDialog.java @@ -15,12 +15,12 @@ import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.ImageButton; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26RacingProcedure; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.impl.StartmodePrerequisite; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.utils.FlagsBitmapCache; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceChooseStartModeDialog extends PrerequisiteRaceDialog { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/BaseRaceInfoRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/BaseRaceInfoRaceFragment.java index 86b50c78433..bcef69334c8 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/BaseRaceInfoRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/BaseRaceInfoRaceFragment.java @@ -5,8 +5,6 @@ import java.util.List; import android.app.Activity; import android.widget.TextView; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.FlagPole; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.FlagPoleState; @@ -19,6 +17,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; import com.sap.sailing.racecommittee.app.ui.utils.CourseDesignerChooser; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class BaseRaceInfoRaceFragment extends RaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/SetStartTimeRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/SetStartTimeRaceFragment.java index a77cd48e034..35d2c90d1bb 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/SetStartTimeRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/SetStartTimeRaceFragment.java @@ -22,8 +22,6 @@ import android.widget.TextView; import android.widget.TimePicker; import com.sap.sailing.android.shared.logging.ExLog; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedurePrerequisite; @@ -43,6 +41,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.prerequisite.RaceC import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.prerequisite.RaceChoosePathFinderDialog; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.prerequisite.RaceChooseStartModeDialog; import com.sap.sailing.racecommittee.app.ui.utils.CourseDesignerChooser; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class SetStartTimeRaceFragment extends RaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/BaseFinishedRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/BaseFinishedRaceFragment.java index 35528673ca7..45ffda4120d 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/BaseFinishedRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/BaseFinishedRaceFragment.java @@ -11,7 +11,6 @@ import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.RaceStateChangedListener; import com.sap.sailing.domain.racelog.state.ReadonlyRaceState; import com.sap.sailing.domain.racelog.state.impl.BaseRaceStateChangedListener; @@ -22,6 +21,7 @@ import com.sap.sailing.racecommittee.app.domain.impl.BoatClassSeriesFleet; import com.sap.sailing.racecommittee.app.ui.activities.ResultsCapturingActivity; import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseRaceInfoRaceFragment; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; public abstract class BaseFinishedRaceFragment extends BaseRaceInfoRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/ESSFinishedRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/ESSFinishedRaceFragment.java index dd7b35f35be..20f1e4e2ac9 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/ESSFinishedRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finished/ESSFinishedRaceFragment.java @@ -5,11 +5,11 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.ess.ESSRacingProcedure; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.PositioningFragment; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; public class ESSFinishedRaceFragment extends BaseFinishedRaceFragment { @Override diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/BaseFinishingRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/BaseFinishingRaceFragment.java index 7f3d91c5d44..02f71b2b8ed 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/BaseFinishingRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/BaseFinishingRaceFragment.java @@ -9,8 +9,6 @@ import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.racecommittee.app.AppConstants; @@ -20,6 +18,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceFinishedTimeDialog; import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseRaceInfoRaceFragment; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class BaseFinishingRaceFragment extends BaseRaceInfoRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/ESSFinishingRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/ESSFinishingRaceFragment.java index c810ef3c988..43aa5cc7698 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/ESSFinishingRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/finishing/ESSFinishingRaceFragment.java @@ -2,12 +2,12 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.finishing; import android.os.Bundle; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.ess.ESSRacingProcedure; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.PositioningFragment; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ESSFinishingRaceFragment extends BaseFinishingRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/BaseRunningRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/BaseRunningRaceFragment.java index 1bc1f758a07..4af6e51cf92 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/BaseRunningRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/BaseRunningRaceFragment.java @@ -11,8 +11,6 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.AbortTypeSelectionDialog; @@ -22,6 +20,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseRaceInfoRaceF import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.running.ConfirmDialog.ConfirmRecallListener; import com.sap.sailing.racecommittee.app.ui.utils.FlagPoleStateRenderer; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class BaseRunningRaceFragment extends BaseRaceInfoRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/ESSRunningRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/ESSRunningRaceFragment.java index f7c35b63234..ba29a38fca6 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/ESSRunningRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/ESSRunningRaceFragment.java @@ -1,7 +1,7 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.running; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.ess.ESSRacingProcedure; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ESSRunningRaceFragment extends BaseRunningRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/BaseStartphaseRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/BaseStartphaseRaceFragment.java index 3e3614a2e32..c034abf4a14 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/BaseStartphaseRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/BaseStartphaseRaceFragment.java @@ -12,8 +12,6 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.ToggleButton; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; import com.sap.sailing.racecommittee.app.AppConstants; @@ -23,6 +21,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseRaceInfoRaceFragment; import com.sap.sailing.racecommittee.app.ui.utils.FlagPoleStateRenderer; import com.sap.sailing.racecommittee.app.utils.TimeUtils; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public abstract class BaseStartphaseRaceFragment extends BaseRaceInfoRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/ESSStartphaseRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/ESSStartphaseRaceFragment.java index d3afec87d9b..f3cc9869dfd 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/ESSStartphaseRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/ESSStartphaseRaceFragment.java @@ -7,12 +7,12 @@ import android.widget.Button; import android.widget.CompoundButton; import android.widget.ToggleButton; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.scoring.AdditionalScoringInformationType; import com.sap.sailing.domain.racelog.state.racingprocedure.ess.ESSRacingProcedure; import com.sap.sailing.racecommittee.app.R; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class ESSStartphaseRaceFragment extends BaseStartphaseRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/RRS26StartphaseRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/RRS26StartphaseRaceFragment.java index fb47eb6177a..4fb8c96d87a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/RRS26StartphaseRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/startphase/RRS26StartphaseRaceFragment.java @@ -6,8 +6,6 @@ import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.racelog.state.racingprocedure.impl.BaseRacingProcedureChangedListener; import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.RRS26ChangedListener; @@ -16,6 +14,8 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.rrs26.ReadonlyRRS26R import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.prerequisite.RaceChooseStartModeDialog; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RRS26StartphaseRaceFragment extends BaseStartphaseRaceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/TimeUtils.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/TimeUtils.java index 41661e755b7..73fbfcc2fd7 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/TimeUtils.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/TimeUtils.java @@ -2,8 +2,8 @@ package com.sap.sailing.racecommittee.app.utils; import android.text.format.DateFormat; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class TimeUtils { From a21949784945a81d5a57190265f3cd99e8b58c23 Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 7 Nov 2014 22:13:04 +0100 Subject: [PATCH 006/113] removed some unused code --- .../sailing/gwt/home/client/app/HomePlacesNavigator.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index 96282e0c0d9..b9e0bb175de 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java @@ -52,15 +52,6 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { return createPlaceNavigation(baseUrl, isOnRemoteServer, eventPlace, new EventPlace.Tokenizer()); } -// void goToOverview(); -// void goToRegattas(); -// void goToSchedule(); -// void goToMedia(); -// void goToRegattaRaces(LeaderboardGroupDTO leaderboardGroup, StrippedLeaderboardDTO leaderboard, RaceGroupDTO raceGroup); -// void openRaceViewer(StrippedLeaderboardDTO leaderboard, RaceDTO race); -// void openOverallLeaderboardViewer(LeaderboardGroupDTO leaderboardGroup); -// void openLeaderboardViewer(LeaderboardGroupDTO leaderboardGroup, StrippedLeaderboardDTO leaderboard); - public PlaceNavigation getLeaderboardNavigation(String eventUuidAsString, String leaderboardIdAsNameString, String baseUrl, boolean isOnRemoteServer) { LeaderboardPlace leaderboardPlace = new LeaderboardPlace(eventUuidAsString, leaderboardIdAsNameString, true, true); return createPlaceNavigation(baseUrl, isOnRemoteServer, leaderboardPlace, new LeaderboardPlace.Tokenizer()); From cd28a65394cdc65afe3516a26c10e1ab1ebffdd9 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Nov 2014 23:45:05 +0100 Subject: [PATCH 007/113] major refactoring, using only Operation instead of OperationWithTransformationSupport which is currently not applicable the way we use the operation return type --- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../sap/sailing/domain/base/BoatClass.java | 3 +- .../sap/sailing/domain/base/Competitor.java | 3 +- .../sap/sailing/domain/base/CourseArea.java | 3 +- .../src/com/sap/sailing/domain/base/Mark.java | 3 +- .../sap/sailing/domain/base/Nationality.java | 3 +- .../com/sap/sailing/domain/base/Waypoint.java | 3 +- .../DeviceConfigurationMatcher.java | 5 +- .../impl/DeviceConfigurationMatcherMulti.java | 4 +- .../DeviceConfigurationMatcherSingle.java | 4 +- .../domain/base/impl/CourseAreaImpl.java | 4 +- .../domain/base/impl/NationalityImpl.java | 4 +- .../tracking/RegisterCompetitorEvent.java | 2 +- .../META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 3 +- ...utStreamResolvingAgainstDomainFactory.java | 6 ++- .../caching/LeaderboardDTOCache.java | 2 +- .../impl/AbstractSimpleLeaderboardImpl.java | 2 +- .../leaderboard/impl/DefaultFleetImpl.java | 6 +-- .../DelayedLeaderboardCorrectionsImpl.java | 6 +-- .../MarkPassingCalculator.java | 2 +- .../DummyMarkPassingWithTimePointOnly.java | 4 +- .../sap/sailing/util/SmartFutureCache.java | 2 +- .../gwt/ui/test/SailingServiceImplMock.java | 5 +- .../META-INF/MANIFEST.MF | 3 +- .../gwt/ui/server/SailingServiceImpl.java | 2 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../sailing/server/RacingEventService.java | 3 +- .../server/RacingEventServiceOperation.java | 9 +--- .../server/impl/RacingEventServiceImpl.java | 4 +- .../META-INF/MANIFEST.MF | 1 + java/com.sap.sse.common.test/.project | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../src/com/sap/sse/common/Util.java | 1 - java/com.sap.sse.gateway/.classpath | 7 +++ java/com.sap.sse.gateway/.project | 28 +++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 +++ .../.settings/org.eclipse.pde.core.prefs | 3 ++ java/com.sap.sse.gateway/META-INF/MANIFEST.MF | 7 +++ java/com.sap.sse.gateway/build.properties | 4 ++ .../test/OperationalTransformationTest.java | 49 +++++++++++-------- .../ClientServerOperationPair.java | 5 ++ .../operationaltransformation/Operation.java | 4 ++ .../META-INF/MANIFEST.MF | 3 +- .../OperationExecutionListener.java | 3 +- .../server/replication/Replicable.java | 11 ++--- ...bjectInputStreamResolvingAgainstCache.java | 7 ++- .../replication/impl/RabbitOutputStream.java | 2 + .../replication/impl/ReplicaDescriptor.java | 4 +- .../impl/ReplicationMasterDescriptorImpl.java | 2 +- .../impl/ReplicationServiceImpl.java | 6 +-- .../replication/impl/ReplicationServlet.java | 4 +- .../server/replication/impl/Replicator.java | 17 ++++--- java/com.sap.sse/.classpath | 7 +++ java/com.sap.sse/.project | 28 +++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 +++ .../.settings/org.eclipse.pde.core.prefs | 3 ++ java/com.sap.sse/META-INF/MANIFEST.MF | 9 ++++ java/com.sap.sse/build.properties | 4 ++ java/com.sap.sse/pom.xml | 12 +++++ .../src/com/sap/sse}/BuildVersion.java | 2 +- .../src/com/sap/sse}/IsManagedByCache.java | 9 ++-- .../sse}/util/impl/CountingOutputStream.java | 2 +- .../util/impl/ThreadFactoryWithPriority.java | 2 +- java/pom.xml | 1 + 76 files changed, 289 insertions(+), 114 deletions(-) create mode 100755 java/com.sap.sse.gateway/.classpath create mode 100755 java/com.sap.sse.gateway/.project create mode 100755 java/com.sap.sse.gateway/.settings/org.eclipse.jdt.core.prefs create mode 100755 java/com.sap.sse.gateway/.settings/org.eclipse.pde.core.prefs create mode 100755 java/com.sap.sse.gateway/META-INF/MANIFEST.MF create mode 100755 java/com.sap.sse.gateway/build.properties create mode 100755 java/com.sap.sse/.classpath create mode 100755 java/com.sap.sse/.project create mode 100755 java/com.sap.sse/.settings/org.eclipse.jdt.core.prefs create mode 100755 java/com.sap.sse/.settings/org.eclipse.pde.core.prefs create mode 100755 java/com.sap.sse/META-INF/MANIFEST.MF create mode 100755 java/com.sap.sse/build.properties create mode 100644 java/com.sap.sse/pom.xml rename java/{com.sap.sse.common/src/com/sap/sse/common => com.sap.sse/src/com/sap/sse}/BuildVersion.java (93%) rename java/{com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base => com.sap.sse/src/com/sap/sse}/IsManagedByCache.java (79%) rename java/{com.sap.sailing.domain/src/com/sap/sailing => com.sap.sse/src/com/sap/sse}/util/impl/CountingOutputStream.java (98%) rename java/{com.sap.sailing.domain/src/com/sap/sailing => com.sap.sse/src/com/sap/sse}/util/impl/ThreadFactoryWithPriority.java (95%) diff --git a/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF index e6fc6caa0fe..bd79573af04 100644 --- a/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF @@ -12,7 +12,8 @@ Require-Bundle: com.sap.sse.mongodb, com.sap.sailing.domain.common, com.sap.sailing.domain.shared.android, com.sap.sailing.server.gateway.serialization;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse Export-Package: com.sap.sailing.domain.persistence, com.sap.sailing.domain.persistence.impl; x-friends:="com.sap.sailing.domain.persistence.test, diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.racelogtrackingadapter/META-INF/MANIFEST.MF index 8f4cf27d35e..366764ac561 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/META-INF/MANIFEST.MF @@ -15,7 +15,9 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.server;bundle-version="1.0.0", com.googlecode.java-diff-utils;bundle-version="1.3.0", com.mongodb.driver, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.replication, + com.sap.sse Import-Package: com.mongodb, javax.servlet;version="2.6.0", org.json.simple, diff --git a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF index f5ee39088af..be0fba19f0b 100644 --- a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF @@ -13,4 +13,5 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.domain.test, com.sap.sailing.domain.racelogtrackingadapter.testsupport;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse diff --git a/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF index cdccdb6e656..252178cccfb 100644 --- a/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sse.datamining.shared;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse Export-Package: com.sap.sailing.domain.base, com.sap.sailing.domain.base.configuration, com.sap.sailing.domain.base.configuration.impl, diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java index d00c7db50db..692b86d9333 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java @@ -2,10 +2,11 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.BoatHullType; import com.sap.sailing.domain.common.Distance; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.TimePoint; -public interface BoatClass extends Named, IsManagedByCache { +public interface BoatClass extends Named, IsManagedByCache { /** * The distance returned by this method should be appropriate for use in * {@link TrackedRace#approximate(Competitor, Distance, TimePoint, TimePoint)} so that penalty circles and other diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java index 9248fa027c5..e6eb47e349e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java @@ -1,11 +1,12 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Color; +import com.sap.sse.IsManagedByCache; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; -public interface Competitor extends Named, WithID, IsManagedByCache { +public interface Competitor extends Named, WithID, IsManagedByCache { @Connector(messageKey="Team", ordinal=9) Team getTeam(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java index d59ee3ce407..d767feee76c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.base; import java.util.UUID; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; @@ -12,6 +13,6 @@ import com.sap.sse.common.WithID; * @author Axel Uhl (D043530) * */ -public interface CourseArea extends Named, WithID, IsManagedByCache { +public interface CourseArea extends Named, WithID, IsManagedByCache { UUID getId(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java index 2e22ee6f740..4d8ef66dbd5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.MarkType; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.WithID; @@ -11,7 +12,7 @@ import com.sap.sse.common.WithID; * @author Axel Uhl (D043530) * */ -public interface Mark extends WithID, ControlPoint, IsManagedByCache { +public interface Mark extends WithID, ControlPoint, IsManagedByCache { public String getColor(); public String getShape(); public String getPattern(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java index 700287943e7..57cce510623 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java @@ -1,10 +1,11 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.CountryCode; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.datamining.shared.annotations.Dimension; -public interface Nationality extends Named, WithImage, IsManagedByCache { +public interface Nationality extends Named, WithImage, IsManagedByCache { @Dimension(messageKey="NationalityAcronym") String getThreeLetterIOCAcronym(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java index cc1dd5f76bb..a273c785f1f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.PassingInstruction; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; @@ -13,7 +14,7 @@ import com.sap.sse.common.WithID; * @author Axel Uhl (d043530) * */ -public interface Waypoint extends Named, WithID, IsManagedByCache { +public interface Waypoint extends Named, WithID, IsManagedByCache { ControlPoint getControlPoint(); Iterable getMarks(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java index a28d0d0cfb6..4e99f0b4955 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java @@ -2,9 +2,10 @@ package com.sap.sailing.domain.base.configuration; import java.io.Serializable; -import com.sap.sailing.domain.base.IsManagedByCache; +import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMapImpl; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; +import com.sap.sse.IsManagedByCache; /** *

@@ -15,7 +16,7 @@ import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherTyp *

The rank (see {@link DeviceConfigurationMatcher#getMatchingRank()}) is used as a priority when multiple matchers * are matching a {@link DeviceConfigurationIdentifier} (see also {@link DeviceConfigurationMapImpl}) (lower wins).

*/ -public interface DeviceConfigurationMatcher extends IsManagedByCache, Serializable { +public interface DeviceConfigurationMatcher extends IsManagedByCache, Serializable { /** * Returns the kind of matching used by this matcher. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java index bcbd8bad639..2f59b236842 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java @@ -5,11 +5,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; +import com.sap.sse.IsManagedByCache; /** * Matches a set of {@link DeviceConfigurationIdentifier}s. @@ -55,7 +55,7 @@ public class DeviceConfigurationMatcherMulti implements DeviceConfigurationMatch } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), clientIdentifiers); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java index 3450f0e80e3..96777ca2827 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java @@ -3,11 +3,11 @@ package com.sap.sailing.domain.base.configuration.impl; import java.io.Serializable; import java.util.Arrays; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; +import com.sap.sse.IsManagedByCache; /** * Matches a single {@link DeviceConfigurationIdentifier}. @@ -51,7 +51,7 @@ public class DeviceConfigurationMatcherSingle implements DeviceConfigurationMatc } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), Arrays.asList(clientIdentifier)); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java index 24ad2679b45..5b9d785f134 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java @@ -3,8 +3,8 @@ package com.sap.sailing.domain.base.impl; import java.util.UUID; import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.impl.NamedImpl; public class CourseAreaImpl extends NamedImpl implements CourseArea { @@ -23,7 +23,7 @@ public class CourseAreaImpl extends NamedImpl implements CourseArea { } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateCourseArea(id, getName()); } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java index d705cb9c427..9aec129e558 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java @@ -2,11 +2,11 @@ package com.sap.sailing.domain.base.impl; import java.io.InputStream; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.CountryCode; import com.sap.sailing.domain.common.CountryCodeFactory; +import com.sap.sse.IsManagedByCache; public class NationalityImpl implements Nationality { private static final long serialVersionUID = 238906193483424259L; @@ -44,7 +44,7 @@ public class NationalityImpl implements Nationality { } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return domainFactory.getOrCreateNationality(getThreeLetterIOCAcronym()); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java index bf999010552..77136498dda 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java @@ -1,10 +1,10 @@ package com.sap.sailing.domain.racelog.tracking; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.Revokable; +import com.sap.sse.IsManagedByCache; /** * Register a competitor for that race using the {@link RaceLog} in racelog-tracked races. diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF index 398c58ff738..848c68a4fe2 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF @@ -18,6 +18,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.swisstimingadapter.persistence;bundle-version="1.0.0", org.junit4;bundle-version="4.8.2", org.hamcrest.core;bundle-version="1.1.0", + com.sap.sse, com.sap.sse.common Bundle-ClassPath: resources/, . diff --git a/java/com.sap.sailing.domain.swisstimingadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingadapter/META-INF/MANIFEST.MF index b88b8bb219d..e023c2bc535 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingadapter/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Require-Bundle: com.sap.sailing.domain, com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sailing.domain.common, com.sap.sailing.xrr.resultimport, + com.sap.sse, com.sap.sse.common Export-Package: com.sap.sailing.domain.swisstimingadapter, com.sap.sailing.domain.swisstimingadapter.impl;x-friends:="com.sap.sailing.server.test" diff --git a/java/com.sap.sailing.domain.swisstimingreplayadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingreplayadapter/META-INF/MANIFEST.MF index f3c11e2d3a5..cd3c7b4a848 100644 --- a/java/com.sap.sailing.domain.swisstimingreplayadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingreplayadapter/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Require-Bundle: com.sap.sailing.domain.common, org.json.simple;bundle-version="1.1.0", com.sap.sailing.domain.swisstimingadapter, com.googlecode.java-diff-utils;bundle-version="1.3.0", + com.sap.sse, com.sap.sse.common Export-Package: com.sap.sailing.domain.swisstimingreplayadapter Import-Package: org.osgi.framework;version="1.7.0" diff --git a/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF index 6b0c01dc070..840a3669586 100644 --- a/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF @@ -10,6 +10,7 @@ Require-Bundle: com.sap.sailing.domain, com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sailing.domain.common, com.sap.sailing.server.gateway.serialization;bundle-version="1.0.0", + com.sap.sse, com.sap.sse.common Export-Package: com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.tractracadapter.impl; diff --git a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF index d88e05684a6..1b0da8d8d32 100644 --- a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF @@ -33,4 +33,5 @@ Require-Bundle: com.googlecode.java-diff-utils;bundle-version="1.3.0", org.json.simple;bundle-version="1.1.0", com.sap.sailing.geocoding, com.sap.sse.datamining.shared;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java index 1236ab6db6f..3866e7deac6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java @@ -5,6 +5,8 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectStreamClass; +import com.sap.sse.IsManagedByCache; + /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed * to the constructor. Additionally, class loading is managed using the current thread's context class loader which is @@ -49,7 +51,9 @@ public abstract class ObjectInputStreamResolvingAgainstDomainFactory extends Obj protected Object resolveObject(Object o) { Object result; if (o instanceof IsManagedByCache) { - result = ((IsManagedByCache) o).resolve(getDomainFactory()); + @SuppressWarnings("unchecked") + IsManagedByCache castResult = ((IsManagedByCache) o).resolve(getDomainFactory()); + result = castResult; } else { result = o; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java index db2fa16349e..d1e6ccdd2b9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java @@ -26,9 +26,9 @@ import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; -import com.sap.sailing.util.impl.ThreadFactoryWithPriority; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.util.impl.ThreadFactoryWithPriority; /** * Caches the expensive to compute {@link LeaderboardDTO} results of a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 06364bd7ecb..d4a588f4886 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -87,11 +87,11 @@ import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; import com.sap.sailing.util.impl.RaceColumnListeners; -import com.sap.sailing.util.impl.ThreadFactoryWithPriority; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.util.impl.ThreadFactoryWithPriority; /** * Base implementation for various types of leaderboards. The {@link RaceColumnListener} implementation forwards events diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java index 5f9e936fc26..8dcb929074d 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java @@ -1,11 +1,11 @@ package com.sap.sailing.domain.leaderboard.impl; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.common.LeaderboardNameConstants; +import com.sap.sse.IsManagedByCache; -public class DefaultFleetImpl extends FleetImpl implements IsManagedByCache { +public class DefaultFleetImpl extends FleetImpl implements IsManagedByCache { private static final long serialVersionUID = 6233489616955255401L; @@ -14,7 +14,7 @@ public class DefaultFleetImpl extends FleetImpl implements IsManagedByCache { } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return FlexibleLeaderboardImpl.defaultFleet; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java index 3698172c3e6..a1305d42124 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java @@ -12,7 +12,6 @@ import java.util.Set; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorFactory; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.SharedDomainFactory; @@ -23,6 +22,7 @@ import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.IsManagedByCache; /** * Keeps a record of carried points and score corrections to be applied, keyed by the competitor names to which they @@ -41,7 +41,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; * @author Axel Uhl (d043530) * */ -public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorrections, IsManagedByCache { +public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorrections, IsManagedByCache { private static final long serialVersionUID = 8824782847677232275L; // deprecated structures that key corrections by name; to be removed once all databases have been migrated @@ -457,7 +457,7 @@ public class DelayedLeaderboardCorrectionsImpl implements DelayedLeaderboardCorr } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { this.competitorFactory = domainFactory; return this; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index e91b39f0f37..84db016bb74 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -23,8 +23,8 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sailing.util.impl.ThreadFactoryWithPriority; import com.sap.sse.common.Util; +import com.sap.sse.util.impl.ThreadFactoryWithPriority; /** * Calculates the {@link MarkPassing}s for a {@link DynamicTrackedRace} using a {@link AbstractCandidateFinder} and a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java index efec75d152e..d35aff7423e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java @@ -3,12 +3,12 @@ package com.sap.sailing.domain.tracking.impl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorChangeListener; -import com.sap.sailing.domain.base.IsManagedByCache; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.Team; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sse.IsManagedByCache; import com.sap.sse.common.TimePoint; public class DummyMarkPassingWithTimePointOnly implements MarkPassing { @@ -56,7 +56,7 @@ public class DummyMarkPassingWithTimePointOnly implements MarkPassing { } @Override - public IsManagedByCache resolve(SharedDomainFactory domainFactory) { + public IsManagedByCache resolve(SharedDomainFactory domainFactory) { return this; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/SmartFutureCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/util/SmartFutureCache.java index a1867c15b94..b800ca87e9a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/SmartFutureCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/util/SmartFutureCache.java @@ -22,7 +22,7 @@ import java.util.logging.Logger; import com.sap.sailing.util.SmartFutureCache.UpdateInterval; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; -import com.sap.sailing.util.impl.ThreadFactoryWithPriority; +import com.sap.sse.util.impl.ThreadFactoryWithPriority; /** * A cache for which a background update can be triggered. Readers can decide whether they want to wait for any ongoing diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index f031124f00e..58eee5681ad 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -34,6 +34,7 @@ import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; import com.sap.sailing.gwt.ui.server.SailingServiceImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; +import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationService; import com.sap.sailing.server.replication.impl.ReplicationInstancesManager; import com.sap.sailing.server.replication.impl.ReplicationServiceImpl; @@ -65,9 +66,9 @@ public class SailingServiceImplMock extends SailingServiceImpl { try { final ReplicationServiceImpl replicationService = new ReplicationServiceImpl("test exchange", "localhost", 0, new ReplicationInstancesManager()) { @Override - protected ServiceTracker getRacingEventServiceTracker() { + protected ServiceTracker, Replicable> getRacingEventServiceTracker() { @SuppressWarnings("unchecked") - ServiceTracker result = (ServiceTracker) mock(ServiceTracker.class); + ServiceTracker, Replicable> result = (ServiceTracker, Replicable>) mock(ServiceTracker.class); doReturn("Humba Humba").when(result).toString(); when(result.getService()).thenReturn(new RacingEventServiceImpl()); return result; diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index 7f5f6efb6d2..2221b3ebd14 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -40,7 +40,8 @@ Require-Bundle: com.sap.sailing.domain, org.apache.shiro.web;bundle-version="1.2.2", org.apache.shiro.ehcache;bundle-version="1.2.3", com.sap.sse.gwt.adminconsole, - com.sap.sse.operationaltransformation + com.sap.sse.operationaltransformation, + com.sap.sse Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator Bundle-ActivationPolicy: lazy Import-Package: javax.jms;version="1.1.0", 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 c83b9fdb1ac..89a08512921 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 @@ -398,7 +398,7 @@ import com.sap.sailing.simulator.util.SailingSimulatorConstants; import com.sap.sailing.simulator.windfield.WindFieldGenerator; import com.sap.sailing.simulator.windfield.impl.WindFieldTrackedRaceImpl; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; -import com.sap.sse.common.BuildVersion; +import com.sap.sse.BuildVersion; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; diff --git a/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF index 95748dc45db..4a9952f771c 100644 --- a/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF @@ -13,4 +13,5 @@ Require-Bundle: com.mongodb.driver;bundle-version="2.6.2", com.sap.sailing.domain.persistence;bundle-version="1.0.0", com.sap.sailing.gwt.ui;bundle-version="1.0.0", com.sap.sailing.domain.common;bundle-version="1.0.0", - org.hamcrest;bundle-version="1.1.0" + org.hamcrest;bundle-version="1.1.0", + com.sap.sse.common diff --git a/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF index 72c44e981ec..0a59edb2280 100644 --- a/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF @@ -22,7 +22,10 @@ Require-Bundle: com.sap.sailing.domain, org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.domain.racelogtrackingadapter.testsupport, com.sap.sailing.server.gateway;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.operationaltransformation, + com.sap.sse.replication, + com.sap.sse Import-Package: com.sap.sailing.domain.common, com.sap.sailing.domain.common.impl, com.sap.sailing.domain.common.racelog, diff --git a/java/com.sap.sailing.nmeaconnector/META-INF/MANIFEST.MF b/java/com.sap.sailing.nmeaconnector/META-INF/MANIFEST.MF index 0c6fd67c746..e9e6e6416d4 100644 --- a/java/com.sap.sailing.nmeaconnector/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.nmeaconnector/META-INF/MANIFEST.MF @@ -9,4 +9,5 @@ Bundle-ClassPath: . Export-Package: com.sap.sailing.nmeaconnector Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.common, - net.sf.marineapi;bundle-version="0.5.0" + net.sf.marineapi;bundle-version="0.5.0", + com.sap.sse.common diff --git a/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF index a50950ece8b..fecf6efae57 100644 --- a/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF @@ -17,6 +17,7 @@ Require-Bundle: com.sap.sailing.domain, javax.servlet;bundle-version="2.6.0", com.sap.sailing.domain.common, com.sap.sailing.server.gateway, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.replication Bundle-ClassPath: . Web-ContextPath: /gateway-ess40 diff --git a/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF index d72735f394f..8f88fdb1083 100644 --- a/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF @@ -40,7 +40,9 @@ Require-Bundle: com.sap.sailing.domain, org.objectweb.asm;bundle-version="3.3.1", org.apache.commons.fileupload;bundle-version="1.2.2", com.sap.sailing.domain.igtimiadapter;bundle-version="1.0.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.replication, + com.sap.sse Bundle-ClassPath: . Web-ContextPath: /sailingserver Export-Package: com.sap.sailing.server.gateway, diff --git a/java/com.sap.sailing.server/META-INF/MANIFEST.MF b/java/com.sap.sailing.server/META-INF/MANIFEST.MF index 8e70497bb5b..d21ef231f19 100644 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -24,7 +24,8 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.server.gateway.serialization, com.sap.sse.common, com.sap.sse.operationaltransformation, - com.sap.sse.replication + com.sap.sse.replication, + com.sap.sse Bundle-ClassPath: . Export-Package: com.sap.sailing.server, com.sap.sailing.server.impl; 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 88163fba063..105805f40c8 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 @@ -94,7 +94,8 @@ import com.sap.sse.common.search.Searchable; * */ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher, - LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable, Replicable> { + LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable, + Replicable> { @Override Regatta getRegatta(RegattaName regattaName); 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 96f1113997a..b0afcd28c6c 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 @@ -11,20 +11,15 @@ import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; +import com.sap.sse.operationaltransformation.Operation; -public interface RacingEventServiceOperation extends OperationWithTransformationSupport>, Serializable { +public interface RacingEventServiceOperation extends Operation, Serializable { /** * Performs the actual operation, applying it to the toState service. The operation's result is * returned. */ ResultType internalApplyTo(RacingEventService toState) throws Exception; - /** - * Tells if this operation needs to be executed in order with other operations requesting synchronous execution. - */ - boolean requiresSynchronousExecution(); - /** * Assumes this is the "server" operation and transforms the client's removeColumnFromLeaderboardClientOp according to this * operation. The default implementation will probably pass on the untransformed client operation. However, if this 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 4803aa0a2e6..c6ca9d43dc0 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 @@ -185,7 +185,7 @@ import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; -import com.sap.sse.common.BuildVersion; +import com.sap.sse.BuildVersion; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; @@ -2084,7 +2084,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport * this service known. */ @Override - public T apply(RacingEventServiceOperation operation) { + public T apply(RacingEventServiceOperation operation) { try { T result = operation.internalApplyTo(this); replicate(operation); diff --git a/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF index 4c44a4b50ab..6a69255459c 100644 --- a/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF @@ -14,6 +14,7 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain, com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.common, + com.sap.sse, com.sap.sse.common Bundle-ClassPath: lib/jdom.jar, . diff --git a/java/com.sap.sse.common.test/.project b/java/com.sap.sse.common.test/.project index 45957447a49..c108b8c5327 100644 --- a/java/com.sap.sse.common.test/.project +++ b/java/com.sap.sse.common.test/.project @@ -1,6 +1,6 @@ - com.sap.see.common.test + com.sap.sse.common.test diff --git a/java/com.sap.sse.common.test/META-INF/MANIFEST.MF b/java/com.sap.sse.common.test/META-INF/MANIFEST.MF index acc93e1f5ce..2dd32e9f8e6 100644 --- a/java/com.sap.sse.common.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.common.test/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Tests for SSE common -Bundle-SymbolicName: com.sap.see.common.test +Bundle-SymbolicName: com.sap.sse.common.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java index 40a846113cd..d27ffffbff5 100755 --- a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java @@ -287,7 +287,6 @@ public class Util { /** * null is permissible for both, o1 and o2, where a null value * is considered less than a non-null value if nullIsLess is true, greater otherwise. - * @param nullIsLess TODO */ public static int compareToWithNull(Comparable o1, T o2, boolean nullIsLess) { final int result; diff --git a/java/com.sap.sse.gateway/.classpath b/java/com.sap.sse.gateway/.classpath new file mode 100755 index 00000000000..b862a296d38 --- /dev/null +++ b/java/com.sap.sse.gateway/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/com.sap.sse.gateway/.project b/java/com.sap.sse.gateway/.project new file mode 100755 index 00000000000..cb79c7a503d --- /dev/null +++ b/java/com.sap.sse.gateway/.project @@ -0,0 +1,28 @@ + + + com.sap.sse.gateway + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/java/com.sap.sse.gateway/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse.gateway/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 00000000000..295926d9641 --- /dev/null +++ b/java/com.sap.sse.gateway/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sse.gateway/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sse.gateway/.settings/org.eclipse.pde.core.prefs new file mode 100755 index 00000000000..b7e72d019c2 --- /dev/null +++ b/java/com.sap.sse.gateway/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/java/com.sap.sse.gateway/META-INF/MANIFEST.MF b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF new file mode 100755 index 00000000000..71b003733a7 --- /dev/null +++ b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Gateway +Bundle-SymbolicName: com.sap.sse.gateway +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: SAP +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/java/com.sap.sse.gateway/build.properties b/java/com.sap.sse.gateway/build.properties new file mode 100755 index 00000000000..41eb6ade2b4 --- /dev/null +++ b/java/com.sap.sse.gateway/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java index 029a57e361f..8711f61e787 100755 --- a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java +++ b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java @@ -22,26 +22,35 @@ public class OperationalTransformationTest { private Peer client1, client2; public static class StringInsertOperation implements Operation { - private int pos; - private String s; - public StringInsertOperation(int pos, String s) { - this.pos = pos; - this.s = s; - } - public int getPos() { - return pos; - } - public String getS() { - return s; - } - public String toString() { - return "insert("+getPos()+", \""+getS()+"\")"; - } - - @Override - public StringState applyTo(StringState toState) { - return toState.apply(this); - } + private int pos; + private String s; + + public StringInsertOperation(int pos, String s) { + this.pos = pos; + this.s = s; + } + + public int getPos() { + return pos; + } + + public String getS() { + return s; + } + + public String toString() { + return "insert(" + getPos() + ", \"" + getS() + "\")"; + } + + @Override + public StringState applyTo(StringState toState) { + return toState.apply(this); + } + + @Override + public boolean requiresSynchronousExecution() { + return false; + } } public static class StringInsertTransformer implements Transformer { diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java index f32f40fa648..e3cb158947a 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java @@ -25,6 +25,11 @@ public class ClientServerOperationPair> { public S applyTo(S toState) { return toState; // don't change anything, return state unchanged } + + @Override + public boolean requiresSynchronousExecution() { + return false; + } }; } } diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java index 9331b5171d4..302903b8adc 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java @@ -18,4 +18,8 @@ public interface Operation extends Cloneable { */ S applyTo(S toState); + /** + * Tells if this operation needs to be executed in order with other operations requesting synchronous execution. + */ + boolean requiresSynchronousExecution(); } diff --git a/java/com.sap.sse.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF index 41d1230f996..02caa7a7173 100644 --- a/java/com.sap.sse.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -10,7 +10,8 @@ Bundle-ActivationPolicy: lazy Export-Package: com.sap.sailing.server.replication, com.sap.sailing.server.replication.impl Require-Bundle: com.sap.sse.common, - com.sap.sse.operationaltransformation + com.sap.sse.operationaltransformation, + com.sap.sse Bundle-ClassPath: . Web-ContextPath: /replication Import-Package: com.rabbitmq.client;version="2.8.4", diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java index ee3dccae403..0cc2f88b754 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java @@ -1,8 +1,7 @@ package com.sap.sailing.server.replication; import com.sap.sse.operationaltransformation.Operation; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public interface OperationExecutionListener { - void executed(OperationWithTransformationSupport> operation); + void executed(Operation operation); } \ No newline at end of file diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java index d7fc165bcf0..a96997f0a35 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -41,7 +41,7 @@ import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; * @author Axel Uhl (D043530) * */ -public interface Replicable> extends WithID { +public interface Replicable> extends WithID { /** * The name of the property to use in the properties dictionary in a call to * {@link BundleContext#registerService(Class, Object, java.util.Dictionary)} when registering a {@link Replicable}. @@ -58,15 +58,10 @@ public interface Replicable T apply(RacingEventServiceOperation operation); - -// FIXME the problem here: Operation is used inconsistently; for one thing, in terms of operationaltransformation, -// the operation is expected to return the same state type (e.g., a RacingEventService); however, in our use as in -// RacingEventService, the operation can be modeled to return an actual return type, such as a String or a Regatta. - void apply(O operation); + T apply(O operation); void addOperationExecutionListener(OperationExecutionListener listener); diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java index ed76422dd81..b289fa7edeb 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -5,7 +5,8 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectStreamClass; -import com.sap.sailing.domain.base.IsManagedByCache; +import com.sap.sailing.server.replication.Replicable; +import com.sap.sse.IsManagedByCache; /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed @@ -51,7 +52,9 @@ public abstract class ObjectInputStreamResolvingAgainstCache extends ObjectIn protected Object resolveObject(Object o) { Object result; if (o instanceof IsManagedByCache) { - result = ((IsManagedByCache) o).resolve(getCache()); + @SuppressWarnings("unchecked") + IsManagedByCache castResult = ((IsManagedByCache) o).resolve(getCache()); + result = castResult; } else { result = o; } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java index f07ee073b4b..a0123bda0de 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java @@ -8,7 +8,9 @@ import java.util.logging.Logger; import com.rabbitmq.client.Channel; import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Output stream that can split its contents into messages for RabbitMQ. This stream creates a RabbitMQ queue and sends diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java index c698e9e2559..48191db0eef 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java @@ -4,8 +4,8 @@ import java.io.Serializable; import java.net.InetAddress; import java.util.UUID; -import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Describes a replica by remembering its IP address as well as the replication time and a UUID. Hash code and equality diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java index dde7a1f39fb..c771a9c2473 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java @@ -13,7 +13,7 @@ import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.common.BuildVersion; +import com.sap.sse.BuildVersion; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { private static final String REPLICATION_SERVLET = "/replication/replication"; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 4d578b937c1..6f933fcfba9 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -33,7 +33,7 @@ import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sse.common.BuildVersion; +import com.sap.sse.BuildVersion; import com.sap.sse.operationaltransformation.Operation; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; @@ -293,7 +293,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * Schedules a single operation for broadcast. The operation is added to {@link #outboundBuffer}, and if not already scheduled, * a {@link #timer} is created and scheduled to send in {@link #TRANSMISSION_DELAY_MILLIS} milliseconds. */ - private void broadcastOperation(OperationWithTransformationSupport operation) throws IOException { + private void broadcastOperation(Operation operation) throws IOException { // need to write the operations one by one, making sure the ObjectOutputStream always writes // identical objects again if required because they may have changed state in between ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -497,7 +497,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * replicas by publishing it to the fan-out exchange. */ @Override - public void executed(OperationWithTransformationSupport> operation) { + public void executed(Operation operation) { try { broadcastOperation(operation); } catch (Exception e) { diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java index 5e7c90e1f5f..8c03e0d3358 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java @@ -21,10 +21,8 @@ import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.rabbitmq.client.Channel; -import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.gateway.SailingServerHttpServlet; import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.util.impl.CountingOutputStream; +import com.sap.sse.util.impl.CountingOutputStream; /** * As the response to any type of GET request, sends a serialized copy of the {@link RacingEventService} to diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java index 2add48eaa73..c4e17ed35ed 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java @@ -22,6 +22,7 @@ import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.operationaltransformation.Operation; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** @@ -45,7 +46,7 @@ public class Replicator implements Runnable { private final ReplicationMasterDescriptor master; private final HasReplicable replicableProvider; - private final List> queue; + private final List> queue; private QueueingConsumer consumer; @@ -89,7 +90,7 @@ public class Replicator implements Runnable { * the RabbitMQ consumer from which to load messages */ public Replicator(ReplicationMasterDescriptor master, HasReplicable racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { - this.queue = new ArrayList>(); + this.queue = new ArrayList>(); this.master = master; this.replicableProvider = racingEventServiceTracker; this.suspended = startSuspended; @@ -137,8 +138,8 @@ public class Replicator implements Runnable { // Set this object's class's class loader as context for de-serialization so that all exported classes // of all required bundles/packages can be deserialized at least Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); - ObjectInputStream ois = replicableProvider.getReplicable().getBaseDomainFactory() - .createObjectInputStreamResolvingAgainstThisFactory( + ObjectInputStream ois = replicableProvider.getReplicable() + .createObjectInputStreamResolvingAgainstCache( new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage))); int operationsInMessage = 0; try { @@ -229,7 +230,7 @@ public class Replicator implements Runnable { } } - private synchronized void apply(final OperationWithTransformationSupport operation) { + private synchronized void apply(final Operation operation) { Runnable runnable = new Runnable() { @Override public void run() { @@ -243,7 +244,7 @@ public class Replicator implements Runnable { } } - private synchronized void queue(RacingEventServiceOperation operation) { + private synchronized void queue(Operation operation) { if (queue.isEmpty()) { notifyAll(); } @@ -261,8 +262,8 @@ public class Replicator implements Runnable { } private synchronized void applyQueue() { - for (Iterator> i=queue.iterator(); i.hasNext(); ) { - RacingEventServiceOperation operation = i.next(); + for (Iterator> i=queue.iterator(); i.hasNext(); ) { + Operation operation = i.next(); i.remove(); try { apply(operation); diff --git a/java/com.sap.sse/.classpath b/java/com.sap.sse/.classpath new file mode 100755 index 00000000000..b862a296d38 --- /dev/null +++ b/java/com.sap.sse/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/com.sap.sse/.project b/java/com.sap.sse/.project new file mode 100755 index 00000000000..9ba819af080 --- /dev/null +++ b/java/com.sap.sse/.project @@ -0,0 +1,28 @@ + + + com.sap.sse + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/java/com.sap.sse/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 00000000000..295926d9641 --- /dev/null +++ b/java/com.sap.sse/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sse/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sse/.settings/org.eclipse.pde.core.prefs new file mode 100755 index 00000000000..b7e72d019c2 --- /dev/null +++ b/java/com.sap.sse/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/java/com.sap.sse/META-INF/MANIFEST.MF b/java/com.sap.sse/META-INF/MANIFEST.MF new file mode 100755 index 00000000000..58d0b31497b --- /dev/null +++ b/java/com.sap.sse/META-INF/MANIFEST.MF @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Sse +Bundle-SymbolicName: com.sap.sse +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: SAP +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: com.sap.sse, + com.sap.sse.util.impl diff --git a/java/com.sap.sse/build.properties b/java/com.sap.sse/build.properties new file mode 100755 index 00000000000..41eb6ade2b4 --- /dev/null +++ b/java/com.sap.sse/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/java/com.sap.sse/pom.xml b/java/com.sap.sse/pom.xml new file mode 100644 index 00000000000..31a185048cc --- /dev/null +++ b/java/com.sap.sse/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sse + eclipse-plugin + diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java b/java/com.sap.sse/src/com/sap/sse/BuildVersion.java similarity index 93% rename from java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java rename to java/com.sap.sse/src/com/sap/sse/BuildVersion.java index 64032435927..cfac5adc5c1 100644 --- a/java/com.sap.sse.common/src/com/sap/sse/common/BuildVersion.java +++ b/java/com.sap.sse/src/com/sap/sse/BuildVersion.java @@ -1,4 +1,4 @@ -package com.sap.sse.common; +package com.sap.sse; import java.io.BufferedReader; import java.io.File; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java b/java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java similarity index 79% rename from java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java rename to java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java index 96358c8835e..471d24559b2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedByCache.java +++ b/java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java @@ -1,4 +1,5 @@ -package com.sap.sailing.domain.base; +package com.sap.sse; + /** @@ -10,9 +11,11 @@ package com.sap.sailing.domain.base; * do a {@link #resolve(Object)} for instances whose classes implement this interface. Implementing classes need to * delegate accordingly to the domain factory passed as argument. * + * @param cache type + * * @author Axel Uhl (D043530) * */ -public interface IsManagedByCache { - IsManagedByCache resolve(SharedDomainFactory domainFactory); +public interface IsManagedByCache { + IsManagedByCache resolve(C domainFactory); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/CountingOutputStream.java b/java/com.sap.sse/src/com/sap/sse/util/impl/CountingOutputStream.java similarity index 98% rename from java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/CountingOutputStream.java rename to java/com.sap.sse/src/com/sap/sse/util/impl/CountingOutputStream.java index 8f77c8e4275..7fd53f54dc2 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/CountingOutputStream.java +++ b/java/com.sap.sse/src/com/sap/sse/util/impl/CountingOutputStream.java @@ -1,4 +1,4 @@ -package com.sap.sailing.util.impl; +package com.sap.sse.util.impl; import java.io.FilterOutputStream; import java.io.IOException; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/ThreadFactoryWithPriority.java b/java/com.sap.sse/src/com/sap/sse/util/impl/ThreadFactoryWithPriority.java similarity index 95% rename from java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/ThreadFactoryWithPriority.java rename to java/com.sap.sse/src/com/sap/sse/util/impl/ThreadFactoryWithPriority.java index e036b58dd87..5a8bfbb600e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/ThreadFactoryWithPriority.java +++ b/java/com.sap.sse/src/com/sap/sse/util/impl/ThreadFactoryWithPriority.java @@ -1,4 +1,4 @@ -package com.sap.sailing.util.impl; +package com.sap.sse.util.impl; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; diff --git a/java/pom.xml b/java/pom.xml index 7b0589927e8..08622e2e840 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -14,6 +14,7 @@ pom + com.sap.sse com.sap.sse.common com.sap.sse.mongodb com.sap.sse.gwt From 22159e8ff9a2e3945e5e068711a929e46c0db6e9 Mon Sep 17 00:00:00 2001 From: fmittag Date: Sat, 8 Nov 2014 15:21:30 +0100 Subject: [PATCH 008/113] some improvements for correct URL building for places --- .../client/app/AbstractPlaceNavigator.java | 2 +- .../gwt/home/client/app/PlaceNavigation.java | 19 ++++++++++---- .../gwt/home/client/shared/header/Header.java | 25 ++++++++----------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index 9af64528e74..568f7ffbe0b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java @@ -34,7 +34,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { } protected String getLocationURL() { - return Window.Location.getProtocol() + "//" + Window.Location.getHostName(); + return Window.Location.getProtocol() + "//" + Window.Location.getHostName() + ":" + Window.Location.getPort(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index 0e23474b22f..862e5a42bbc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -36,18 +36,27 @@ public class PlaceNavigation { } private String buildPlaceUrl() { - String url = baseUrl + "/gwt/Home.html"; - if(!GWT.isProdMode() && !isDestinationOnRemoteServer) { - url += "?gwt.codesvr=127.0.0.1:9997"; + String url = ""; + if(isRemotePlace()) { + url = baseUrl + "/gwt/Home.html"; + if(!GWT.isProdMode() && !isDestinationOnRemoteServer) { + url += "?gwt.codesvr=127.0.0.1:9997"; + } + url += getPlaceToken(); + } else { + url = getPlaceToken(); } - url += "#" + destinationPlace.getClass().getSimpleName() + ":" + tokenizer.getToken(destinationPlace); return url; } public boolean isRemotePlace() { return isDestinationOnRemoteServer; } - + + private String getPlaceToken() { + return "#" + destinationPlace.getClass().getSimpleName() + ":" + tokenizer.getToken(destinationPlace); + } + private boolean isLocationOnDefaultSapSailingServer(String urlToCheck) { return urlToCheck.contains(HomePlacesNavigator.DEFAULT_SAPSAILING_SERVER); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java index 9944085275d..9c610fa4770 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java @@ -13,12 +13,14 @@ import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.app.PlaceNavigation; @@ -37,6 +39,8 @@ public class Header extends Composite { @UiField TextBox searchText; @UiField Button searchButton; + private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class); + private final List links; private final HomePlacesNavigator navigator; @@ -75,18 +79,6 @@ public class Header extends Composite { } } }); - -// Event.sinkEvents(homeLink, Event.ONCLICK); -// Event.setEventListener(homeLink, new EventListener() { -// @Override -// public void onBrowserEvent(Event event) { -// switch (DOM.eventGetType(event)) { -// case Event.ONCLICK: -// navigator.goToHome(); -// break; -// } -// } -// }); } @UiHandler("startPageLink") @@ -98,9 +90,12 @@ public class Header extends Composite { @UiHandler("eventsPageLink") public void goToEvents(ClickEvent e) { - navigator.goToPlace(eventsNavigation); - e.preventDefault(); - setActiveLink(eventsPageLink); + if (IMPL.handleAsClick((Event) e.getNativeEvent())) { + navigator.goToPlace(eventsNavigation); + e.preventDefault(); + setActiveLink(eventsPageLink); + } + } @UiHandler("solutionsPageLink") From a49fa0d0d6ac4e83907290f2150ef9139543e4f2 Mon Sep 17 00:00:00 2001 From: fmittag Date: Sat, 8 Nov 2014 18:26:50 +0100 Subject: [PATCH 009/113] fix for global header navigation --- .../client/app/AbstractPlaceNavigator.java | 13 ++++----- .../home/client/app/HomePlacesNavigator.java | 14 +++++----- .../gwt/home/client/app/PlaceNavigation.java | 16 +++++++++-- .../gwt/home/client/shared/header/Header.java | 28 ++++++++----------- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index 568f7ffbe0b..b46bc16b9ad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java @@ -25,19 +25,18 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { } } - protected PlaceNavigation createPlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer) { - return new PlaceNavigation(baseUrl, destinationPlace, tokenizer); + protected PlaceNavigation createGlobalPlaceNavigation(T destinationPlace, PlaceTokenizer tokenizer) { + return new PlaceNavigation(destinationPlace, tokenizer); } +// protected PlaceNavigation createPlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer) { +// return new PlaceNavigation(baseUrl, destinationPlace, tokenizer); +// } + protected PlaceNavigation createPlaceNavigation(String baseUrl, boolean isOnRemoteServer, T destinationPlace, PlaceTokenizer tokenizer) { return new PlaceNavigation(baseUrl, destinationPlace, tokenizer, isOnRemoteServer); } - protected String getLocationURL() { - return Window.Location.getProtocol() + "//" + Window.Location.getHostName() + ":" + Window.Location.getPort(); - } - - public void pushPlaceToHistoryStack(T destinationPlace, PlaceTokenizer tokenizer) { String placeHistoryToken = destinationPlace.getClass().getSimpleName() + ":" + tokenizer.getToken(destinationPlace); History.newItem(placeHistoryToken, false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index b9e0bb175de..cad4ff3a272 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java @@ -19,27 +19,27 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { } public PlaceNavigation getHomeNavigation() { - return createPlaceNavigation(getLocationURL(), new StartPlace(), new StartPlace.Tokenizer()); + return createGlobalPlaceNavigation(new StartPlace(), new StartPlace.Tokenizer()); } public PlaceNavigation getEventsNavigation() { - return createPlaceNavigation(getLocationURL(), new EventsPlace(), new EventsPlace.Tokenizer()); + return createGlobalPlaceNavigation(new EventsPlace(), new EventsPlace.Tokenizer()); } public PlaceNavigation getSolutionsNavigation() { - return createPlaceNavigation(getLocationURL(), new SolutionsPlace(), new SolutionsPlace.Tokenizer()); + return createGlobalPlaceNavigation(new SolutionsPlace(), new SolutionsPlace.Tokenizer()); } public PlaceNavigation getSponsoringNavigation() { - return createPlaceNavigation(getLocationURL(), new SponsoringPlace(), new SponsoringPlace.Tokenizer()); + return createGlobalPlaceNavigation(new SponsoringPlace(), new SponsoringPlace.Tokenizer()); } public PlaceNavigation getAboutUsNavigation() { - return createPlaceNavigation(getLocationURL(), new AboutUsPlace(), new AboutUsPlace.Tokenizer()); + return createGlobalPlaceNavigation(new AboutUsPlace(), new AboutUsPlace.Tokenizer()); } public PlaceNavigation getContactNavigation() { - return createPlaceNavigation(getLocationURL(), new ContactPlace(), new ContactPlace.Tokenizer()); + return createGlobalPlaceNavigation(new ContactPlace(), new ContactPlace.Tokenizer()); } public PlaceNavigation getEventNavigation(String eventUuidAsString, String baseUrl, boolean isOnRemoteServer) { @@ -58,6 +58,6 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { } public PlaceNavigation getSearchResultNavigation(String searchQuery) { - return createPlaceNavigation(getLocationURL(), new SearchResultPlace(searchQuery), new SearchResultPlace.Tokenizer()); + return createGlobalPlaceNavigation(new SearchResultPlace(searchQuery), new SearchResultPlace.Tokenizer()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index 862e5a42bbc..c676e962b31 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.home.client.app; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; +import com.google.gwt.user.client.Window; public class PlaceNavigation { private final T destinationPlace; @@ -10,11 +11,16 @@ public class PlaceNavigation { private final String baseUrl; private final boolean isDestinationOnRemoteServer; - public PlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer) { + public PlaceNavigation(T destinationPlace, PlaceTokenizer tokenizer) { this.destinationPlace = destinationPlace; this.tokenizer = tokenizer; - this.baseUrl = baseUrl; - this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(baseUrl) || isLocationOnDefaultSapSailingServer(baseUrl)); + String locationURL = getLocationURL(); + this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL)); + if(isDestinationOnRemoteServer) { + this.baseUrl = HomePlacesNavigator.DEFAULT_SAPSAILING_SERVER; + } else { + this.baseUrl = locationURL; + } } public PlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer, boolean isDestinationOnRemoteServer) { @@ -64,4 +70,8 @@ public class PlaceNavigation { private boolean isLocationOnLocalhost(String urlToCheck) { return urlToCheck.contains("localhost") || urlToCheck.contains("127.0.0.1"); } + + private String getLocationURL() { + return Window.Location.getProtocol() + "//" + Window.Location.getHostName() + ":" + Window.Location.getPort(); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java index 9c610fa4770..bf0b3f2f6bb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java @@ -39,7 +39,7 @@ public class Header extends Composite { @UiField TextBox searchText; @UiField Button searchButton; - private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class); + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); private final List links; private final HomePlacesNavigator navigator; @@ -83,33 +83,22 @@ public class Header extends Composite { @UiHandler("startPageLink") public void goToHome(ClickEvent e) { - navigator.goToPlace(homeNavigation); - e.preventDefault(); - setActiveLink(startPageLink); + handleClickEvent(e, homeNavigation, startPageLink); } @UiHandler("eventsPageLink") public void goToEvents(ClickEvent e) { - if (IMPL.handleAsClick((Event) e.getNativeEvent())) { - navigator.goToPlace(eventsNavigation); - e.preventDefault(); - setActiveLink(eventsPageLink); - } - + handleClickEvent(e, eventsNavigation, eventsPageLink); } @UiHandler("solutionsPageLink") public void goToSolutions(ClickEvent e) { - navigator.goToPlace(solutionsNavigation); - e.preventDefault(); - setActiveLink(solutionsPageLink); + handleClickEvent(e, solutionsNavigation, solutionsPageLink); } // @UiHandler("sponsoringPageLink") // public void goToSponsoring(ClickEvent e) { -// navigator.goToPlace(sponsoringNavigation); -// e.preventDefault(); -// setActiveLink(sponsoringPageLink); +// handleClickEvent(e, sponsoringNavigation, sponsoringPageLink); // } @UiHandler("searchButton") @@ -133,4 +122,11 @@ public class Header extends Composite { } } + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation, Anchor activeLink) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + navigator.goToPlace(placeNavigation); + e.preventDefault(); + setActiveLink(activeLink); + } + } } From 8747500184e6485ef85971b126189575afbe87cd Mon Sep 17 00:00:00 2001 From: fmittag Date: Sat, 8 Nov 2014 21:37:38 +0100 Subject: [PATCH 010/113] fixed default sap server url --- .../sailing/gwt/home/client/app/AbstractPlaceNavigator.java | 4 ---- .../com/sap/sailing/gwt/home/client/app/PlaceNavigation.java | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index b46bc16b9ad..1d9ccef6cae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java @@ -29,10 +29,6 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { return new PlaceNavigation(destinationPlace, tokenizer); } -// protected PlaceNavigation createPlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer) { -// return new PlaceNavigation(baseUrl, destinationPlace, tokenizer); -// } - protected PlaceNavigation createPlaceNavigation(String baseUrl, boolean isOnRemoteServer, T destinationPlace, PlaceTokenizer tokenizer) { return new PlaceNavigation(baseUrl, destinationPlace, tokenizer, isOnRemoteServer); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index c676e962b31..3b76a707892 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -17,7 +17,7 @@ public class PlaceNavigation { String locationURL = getLocationURL(); this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL)); if(isDestinationOnRemoteServer) { - this.baseUrl = HomePlacesNavigator.DEFAULT_SAPSAILING_SERVER; + this.baseUrl = AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL; } else { this.baseUrl = locationURL; } From a9a399775275edc091d8b70853444c7e8b6d1b96 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 8 Nov 2014 22:06:58 +0100 Subject: [PATCH 011/113] trying to get the Operation interface under control... --- .../META-INF/MANIFEST.MF | 3 ++- .../META-INF/MANIFEST.MF | 1 + .../com.sap.sailing.server.trackfiles/META-INF/MANIFEST.MF | 3 ++- .../src/com/sap/sailing/server/RacingEventService.java | 4 ---- .../sap/sailing/server/impl/RacingEventServiceImpl.java | 7 ++++--- java/com.sap.sailing.simulator/META-INF/MANIFEST.MF | 1 + java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF | 3 ++- .../src/com/sap/sailing/server/replication/Replicable.java | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF index fecf6efae57..b94ba1f61af 100644 --- a/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.ess40/META-INF/MANIFEST.MF @@ -18,6 +18,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.common, com.sap.sailing.server.gateway, com.sap.sse.common, - com.sap.sse.replication + com.sap.sse.replication, + com.sap.sse Bundle-ClassPath: . Web-ContextPath: /gateway-ess40 diff --git a/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF index 12dec0ed1c8..969d6015f86 100644 --- a/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF @@ -10,6 +10,7 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.domain.shared.android;bundle-version="1.0.0", com.sap.sailing.domain;bundle-version="1.0.0", net.sf.marineapi;bundle-version="0.5.0", + com.sap.sse, com.sap.sse.common Export-Package: com.sap.sailing.server.gateway.deserialization, com.sap.sailing.server.gateway.deserialization.coursedata.impl, diff --git a/java/com.sap.sailing.server.trackfiles/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.trackfiles/META-INF/MANIFEST.MF index 2642d58ee51..416518ed689 100644 --- a/java/com.sap.sailing.server.trackfiles/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.trackfiles/META-INF/MANIFEST.MF @@ -12,7 +12,8 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.common, routeconverter, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse Import-Package: org.osgi.framework;version="1.7.0" Bundle-Activator: com.sap.sailing.server.trackfiles.impl.Activator 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 105805f40c8..b00e1d23665 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 @@ -296,10 +296,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch void updateLeaderboardGroup(String oldName, String newName, String description, String displayName, List leaderboardNames, int[] overallLeaderboardDiscardThresholds, ScoringSchemeType overallLeaderboardScoringSchemeType); - void addOperationExecutionListener(OperationExecutionListener listener); - - void removeOperationExecutionListener(OperationExecutionListener listener); - /** * Produces a one-shot serializable copy of those elements required for replication into oos so that * afterwards the {@link RacingEventServiceOperation}s can be {@link #apply(RacingEventServiceOperation) applied} to 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 c6ca9d43dc0..a516770dfc1 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 @@ -2084,10 +2084,11 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport * this service known. */ @Override - public T apply(RacingEventServiceOperation operation) { + public T apply(Operation operation) { + RacingEventServiceOperation reso = (RacingEventServiceOperation) operation; try { - T result = operation.internalApplyTo(this); - replicate(operation); + T result = reso.internalApplyTo(this); + replicate(reso); return result; } catch (Exception e) { logger.log(Level.SEVERE, "apply", e); diff --git a/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF b/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF index ad311e0e04a..8259646988b 100644 --- a/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF @@ -9,6 +9,7 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.server;bundle-version="1.0.0", com.sap.sailing.domain.tractracadapter, + com.sap.sse, com.sap.sse.common Bundle-ActivationPolicy: lazy Import-Package: org.osgi.framework;version="1.6.0" diff --git a/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF index 6a69255459c..128593d4fdd 100644 --- a/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF @@ -15,7 +15,8 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.common, com.sap.sse, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.replication Bundle-ClassPath: lib/jdom.jar, . Web-ContextPath: /export diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java index a96997f0a35..8c95db2bdd4 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -61,7 +61,7 @@ public interface Replicable> extends WithID { * {@link OperationExecutionListener#executed(OperationWithTransformationSupport) notifies} all registered * operation execution listeners about the execution of the operation. */ - T apply(O operation); + T apply(Operation operation); void addOperationExecutionListener(OperationExecutionListener listener); From bf19d236700612322f68c4c0481c70884de4685e Mon Sep 17 00:00:00 2001 From: fmittag Date: Sat, 8 Nov 2014 22:38:34 +0100 Subject: [PATCH 012/113] little test --- .../com/sap/sailing/gwt/home/client/app/PlaceNavigation.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index 3b76a707892..d0da3a45fe1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -15,6 +15,7 @@ public class PlaceNavigation { this.destinationPlace = destinationPlace; this.tokenizer = tokenizer; String locationURL = getLocationURL(); + Window.alert(locationURL); this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL)); if(isDestinationOnRemoteServer) { this.baseUrl = AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL; @@ -45,7 +46,7 @@ public class PlaceNavigation { String url = ""; if(isRemotePlace()) { url = baseUrl + "/gwt/Home.html"; - if(!GWT.isProdMode() && !isDestinationOnRemoteServer) { + if(!GWT.isProdMode()) { url += "?gwt.codesvr=127.0.0.1:9997"; } url += getPlaceToken(); From 3c9556b592aa34fa1da12050d4ee6f8bd86c3f59 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 8 Nov 2014 23:39:23 +0100 Subject: [PATCH 013/113] another interims commit; Peer and Transformer can work with Operation; OperationalTransformer uses OperationWithTransformationSupport --- .../test/AbstractServerReplicationTest.java | 12 ++++---- ...tialLoadReplicationObjectIdentityTest.java | 4 ++- .../test/PrematureOperationReceiptTest.java | 4 ++- .../test/TrackRaceReplicationTest.java | 6 ++-- .../sailing/server/RacingEventService.java | 1 - .../server/RacingEventServiceOperation.java | 10 ++----- .../server/impl/RacingEventServiceImpl.java | 10 +++---- .../META-INF/MANIFEST.MF | 3 +- .../test/OperationalTransformationTest.java | 2 +- .../OperationWithTransformationSupport.java | 10 +++++-- .../OperationalTransformer.java | 12 ++++++-- .../OperationExecutionListener.java | 13 +++++++-- .../replication/OperationWithResult.java | 20 +++++++++++++ .../server/replication/Replicable.java | 8 +++--- .../server/replication/impl/Activator.java | 3 +- .../replication/impl/HasReplicable.java | 5 ++-- .../impl/ReplicationServiceImpl.java | 28 +++++++++---------- .../server/replication/impl/Replicator.java | 26 ++++++++--------- 18 files changed, 109 insertions(+), 68 deletions(-) create mode 100755 java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index 20623c7efdc..cd22465b890 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -35,6 +35,7 @@ import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; @@ -55,7 +56,7 @@ public abstract class AbstractServerReplicationTest { protected RacingEventServiceImpl master; protected ReplicationServiceTestImpl replicaReplicator; private ReplicaDescriptor replicaDescriptor; - private ReplicationServiceImpl masterReplicator; + private ReplicationServiceImpl> masterReplicator; private ReplicationMasterDescriptor masterDescriptor; @Rule public Timeout AbstractTracTracLiveTestTimeout = new Timeout(5 * 60 * 1000); // timeout after 5 minutes @@ -115,7 +116,7 @@ public abstract class AbstractServerReplicationTest { new DomainFactoryImpl()), mongoObjectFactory, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE); } ReplicationInstancesManager rim = new ReplicationInstancesManager(); - masterReplicator = new ReplicationServiceImpl(exchangeName, exchangeHost, rim, this.master); + masterReplicator = new ReplicationServiceImpl>(exchangeName, exchangeHost, rim, this.master); replicaDescriptor = new ReplicaDescriptor(InetAddress.getLocalHost(), serverUuid, ""); masterReplicator.registerReplica(replicaDescriptor); // connect to exchange host and local server running as master @@ -166,7 +167,7 @@ public abstract class AbstractServerReplicationTest { replicaReplicator.stopToReplicateFromMaster(); } - static class ReplicationServiceTestImpl extends ReplicationServiceImpl { + static class ReplicationServiceTestImpl extends ReplicationServiceImpl> { protected static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; private final DomainFactory resolveAgainst; private final RacingEventService master; @@ -258,12 +259,13 @@ public abstract class AbstractServerReplicationTest { // replicator.setSuspended(false); // resume after initial load // } - protected Replicator startToReplicateFromButDontYetFetchInitialLoad(ReplicationMasterDescriptor master, boolean startReplicatorSuspended) + protected Replicator> startToReplicateFromButDontYetFetchInitialLoad(ReplicationMasterDescriptor master, boolean startReplicatorSuspended) throws IOException { masterReplicationService.registerReplica(replicaDescriptor); registerReplicaUuidForMaster(replicaDescriptor.getUuid().toString(), master); QueueingConsumer consumer = master.getConsumer(); - final Replicator replicator = new Replicator(master, this, startReplicatorSuspended, consumer); + final Replicator> replicator = new Replicator>( + master, this, startReplicatorSuspended, consumer); new Thread(replicator).start(); return replicator; } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index 77b893b5fd4..53e6f316bb9 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -42,6 +42,8 @@ import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.test.TrackBasedTest; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; +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.AddDefaultRegatta; import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; @@ -140,7 +142,7 @@ public class InitialLoadReplicationObjectIdentityTest extends AbstractServerRepl /* fire up replication */ performReplicationSetup(); ReplicationMasterDescriptor the_master = replicationDescriptorPair.getB(); /* master descriptor */ - Replicator replicator = replicationDescriptorPair.getA().startToReplicateFromButDontYetFetchInitialLoad(the_master, /* startReplicatorSuspended */ true); + Replicator> replicator = replicationDescriptorPair.getA().startToReplicateFromButDontYetFetchInitialLoad(the_master, /* startReplicatorSuspended */ true); replicationDescriptorPair.getA().initialLoad(); replicator.setSuspended(false); synchronized (replicator) { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index 794f70a6d2f..383b5acfd72 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -10,13 +10,15 @@ import org.junit.Test; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.impl.LowPoint; +import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.impl.Replicator; import com.sap.sse.common.Util; public class PrematureOperationReceiptTest extends AbstractServerReplicationTest { - private Replicator replicator; + private Replicator> replicator; private ReplicationServiceTestImpl replicationService; /** 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 58023d7e10a..5742642d9e5 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 @@ -32,6 +32,7 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.RaceHandle; import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; @@ -40,7 +41,6 @@ import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.operationaltransformation.Operation; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { private TrackedRace masterTrackedRace; @@ -71,9 +71,9 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { MillisecondsTimePoint startOfTracking = new MillisecondsTimePoint(cal.getTimeInMillis()); cal.set(2011, 05, 23, 15, 14, 31); MillisecondsTimePoint endOfTracking = new MillisecondsTimePoint(cal.getTimeInMillis()); - master.addOperationExecutionListener(new OperationExecutionListener() { + master.addOperationExecutionListener(new OperationExecutionListener() { @Override - public void executed(OperationWithTransformationSupport> operation) { + public void executed(Operation operation) { if (operation instanceof CreateTrackedRace) { synchronized (notifier) { notifier[0] = true; 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 b00e1d23665..791a452251e 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 @@ -66,7 +66,6 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.server.masterdata.DataImportLockWithProgress; -import com.sap.sailing.server.replication.OperationExecutionListener; import com.sap.sailing.server.replication.Replicable; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; 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 b0afcd28c6c..29433430867 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 @@ -11,15 +11,9 @@ import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; -import com.sap.sse.operationaltransformation.Operation; +import com.sap.sailing.server.replication.OperationWithResult; -public interface RacingEventServiceOperation extends Operation, Serializable { - /** - * Performs the actual operation, applying it to the toState service. The operation's result is - * returned. - */ - ResultType internalApplyTo(RacingEventService toState) throws Exception; - +public interface RacingEventServiceOperation extends OperationWithResult, Serializable { /** * Assumes this is the "server" operation and transforms the client's removeColumnFromLeaderboardClientOp according to this * operation. The default implementation will probably pass on the untransformed client operation. However, if this 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 a516770dfc1..b234c2e63e3 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 @@ -296,7 +296,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport */ private final NamedReentrantReadWriteLock regattaTrackingCacheLock; - private final ConcurrentHashMap operationExecutionListeners; + private final ConcurrentHashMap, OperationExecutionListener> operationExecutionListeners; /** * Keys are the toString() representation of the {@link RaceDefinition#getId() IDs} of races passed to @@ -2084,7 +2084,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport * this service known. */ @Override - public T apply(Operation operation) { + public T apply(Operation operation) { RacingEventServiceOperation reso = (RacingEventServiceOperation) operation; try { T result = reso.internalApplyTo(this); @@ -2108,7 +2108,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport @Override public void replicate(RacingEventServiceOperation operation) { - for (OperationExecutionListener listener : operationExecutionListeners.keySet()) { + for (OperationExecutionListener listener : operationExecutionListeners.keySet()) { try { listener.executed(operation); } catch (Exception e) { @@ -2120,12 +2120,12 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport } @Override - public void addOperationExecutionListener(OperationExecutionListener listener) { + public void addOperationExecutionListener(OperationExecutionListener listener) { operationExecutionListeners.put(listener, listener); } @Override - public void removeOperationExecutionListener(OperationExecutionListener listener) { + public void removeOperationExecutionListener(OperationExecutionListener listener) { operationExecutionListeners.remove(listener); } diff --git a/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF index 911559cc367..75cb42f3baf 100644 --- a/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF @@ -5,5 +5,6 @@ Bundle-SymbolicName: com.sap.sse.operationaltransformation.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2" +Require-Bundle: org.junit4;bundle-version="4.8.2", + com.sap.sse.replication Fragment-Host: com.sap.sse.operationaltransformation diff --git a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java index 8711f61e787..b6da96b44bd 100755 --- a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java +++ b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java @@ -12,9 +12,9 @@ import org.junit.Test; import com.sap.sse.operationaltransformation.ClientServerOperationPair; import com.sap.sse.operationaltransformation.Operation; import com.sap.sse.operationaltransformation.Peer; +import com.sap.sse.operationaltransformation.Peer.Role; import com.sap.sse.operationaltransformation.PeerImpl; import com.sap.sse.operationaltransformation.Transformer; -import com.sap.sse.operationaltransformation.Peer.Role; import com.sap.sse.operationaltransformation.test.util.Base64; public class OperationalTransformationTest { diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java index 75c1ce29a5c..d820f393066 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java @@ -1,7 +1,13 @@ package com.sap.sse.operationaltransformation; - - +/** + * Returns the same state object as was passed in. This is required for the Operational Transformation algorithm to work. + * + * @author Axel Uhl (D043530) + * + * @param + * @param + */ public interface OperationWithTransformationSupport> extends Operation { /** * Implements the specific transformation rule for the implementing subclass for the set of possible peer operations diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java index 11f2820c269..74099633359 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java @@ -1,8 +1,15 @@ package com.sap.sse.operationaltransformation; - +/** + * A default implementation for the {@link Transformer} interface, assuming operations implement the + * {@link OperationWithTransformationSupport} interface which standardizes how operations are being transformed. + * + * @author Axel Uhl (D043530) + * + * @param + * @param + */ public class OperationalTransformer> implements Transformer { - @Override public ClientServerOperationPair transform(O clientOp, O serverOp) { ClientServerOperationPair result = new ClientServerOperationPair( @@ -10,5 +17,4 @@ public class OperationalTransformer void executed(Operation operation); +/** + * Can be registered on a {@link Replicable} and will receive notifications about the execution of + * operations. + * + * @author Axel Uhl (D043530) + * + * @param the type of the state to which the operations are applied + */ +public interface OperationExecutionListener { + void executed(OperationWithResult operation); } \ No newline at end of file diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java new file mode 100755 index 00000000000..aa6015813cf --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java @@ -0,0 +1,20 @@ +package com.sap.sailing.server.replication; + +import com.sap.sse.operationaltransformation.Operation; + +/** + * An operational transformation {@link Operation} is expected to return the target state after applying the operation. + * This operation type offers the possibility to let an operation return a result value from its + * {@link #internalApplyTo} method while in the context of operational transformation the operation will still return + * the target state. + * + * @author Axel Uhl (D043530) + * + */ +public interface OperationWithResult extends Operation { + /** + * Performs the actual operation, applying it to the toState service. The operation's result is + * returned. + */ + R internalApplyTo(S toState) throws Exception; +} diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java index 8c95db2bdd4..22156165a39 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -41,7 +41,7 @@ import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; * @author Axel Uhl (D043530) * */ -public interface Replicable> extends WithID { +public interface Replicable> extends WithID { /** * The name of the property to use in the properties dictionary in a call to * {@link BundleContext#registerService(Class, Object, java.util.Dictionary)} when registering a {@link Replicable}. @@ -61,11 +61,11 @@ public interface Replicable> extends WithID { * {@link OperationExecutionListener#executed(OperationWithTransformationSupport) notifies} all registered * operation execution listeners about the execution of the operation. */ - T apply(Operation operation); + T apply(OperationWithResult operation); - void addOperationExecutionListener(OperationExecutionListener listener); + void addOperationExecutionListener(OperationExecutionListener listener); - void removeOperationExecutionListener(OperationExecutionListener listener); + void removeOperationExecutionListener(OperationExecutionListener listener); void clearReplicaState() throws MalformedURLException, IOException, InterruptedException; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java index fdaca49715a..6d4ab4f25e1 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java @@ -111,7 +111,8 @@ public class Activator implements BundleActivator { logger.severe("Couldn't parse the replication port specification \""+exchangePortAsString+"\". Using default."); } replicationInstancesManager = new ReplicationInstancesManager(); - ReplicationService serverReplicationMasterService = new ReplicationServiceImpl(exchangeName, exchangeHost, exchangePort, replicationInstancesManager); + ReplicationService serverReplicationMasterService = new ReplicationServiceImpl<>( + exchangeName, exchangeHost, exchangePort, replicationInstancesManager); bundleContext.registerService(ReplicationService.class, serverReplicationMasterService, null); logger.info("Registered replication service "+serverReplicationMasterService+" using exchange name "+exchangeName+" on host "+exchangeHost); checkIfAutomaticReplicationShouldStart(serverReplicationMasterService, exchangeName); diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java index e0cdc58425c..9ca17091f09 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java @@ -1,7 +1,8 @@ package com.sap.sailing.server.replication.impl; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.replication.Replicable; -public interface HasReplicable { - Replicable getReplicable(); +public interface HasReplicable> { + Replicable getReplicable(); } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 6f933fcfba9..73019c160d3 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -30,11 +30,11 @@ import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.BuildVersion; -import com.sap.sse.operationaltransformation.Operation; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** @@ -52,14 +52,14 @@ import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; * @author Frank Mittag, Axel Uhl (d043530) * */ -public class ReplicationServiceImpl implements ReplicationService, OperationExecutionListener, HasReplicable { +public class ReplicationServiceImpl> implements ReplicationService, OperationExecutionListener, HasReplicable { private static final Logger logger = Logger.getLogger(ReplicationServiceImpl.class.getName()); private final ReplicationInstancesManager replicationInstancesManager; - private final ServiceTracker, Replicable> racingEventServiceTracker; + private final ServiceTracker, Replicable> racingEventServiceTracker; - private final Replicable localService; + private final Replicable localService; /** * null, if this instance is not currently replicating from some master; the master's descriptor otherwise @@ -97,7 +97,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec */ private final UUID serverUUID; - private Replicator replicator; + private Replicator replicator; private Thread replicatorThread; /** @@ -178,7 +178,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec private ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager, - Replicable localService, boolean createRacingEventServiceTracker) throws IOException { + Replicable localService, boolean createRacingEventServiceTracker) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); @@ -206,12 +206,12 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * the name of the exchange to which replicas can bind */ public ReplicationServiceImpl(String exchangeName, String exchangeHost, - final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { + final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); } - protected ServiceTracker, Replicable> getRacingEventServiceTracker() { - return new ServiceTracker, Replicable>( + protected ServiceTracker, Replicable> getRacingEventServiceTracker() { + return new ServiceTracker, Replicable>( Activator.getDefaultContext(), Replicable.class.getName(), null); } @@ -242,8 +242,8 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } @Override - public Replicable getReplicable() { - Replicable result; + public Replicable getReplicable() { + Replicable result; if (localService != null) { result = localService; } else { @@ -293,7 +293,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * Schedules a single operation for broadcast. The operation is added to {@link #outboundBuffer}, and if not already scheduled, * a {@link #timer} is created and scheduled to send in {@link #TRANSMISSION_DELAY_MILLIS} milliseconds. */ - private void broadcastOperation(Operation operation) throws IOException { + private void broadcastOperation(OperationWithResult operation) throws IOException { // need to write the operations one by one, making sure the ObjectOutputStream always writes // identical objects again if required because they may have changed state in between ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -426,7 +426,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec logger.info("Connection to exchange successful."); URL initialLoadURL = master.getInitialLoadURL(); logger.info("Initial load URL is "+initialLoadURL); - replicator = new Replicator(master, this, /* startSuspended */ true, consumer); + replicator = new Replicator(master, this, /* startSuspended */ true, consumer); // start receiving messages already now, but start in suspended mode replicatorThread = new Thread(replicator, "Replicator receiving from "+master.getMessagingHostname()+"/"+master.getExchangeName()); final Replicable replicable = getReplicable(); @@ -497,7 +497,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * replicas by publishing it to the fan-out exchange. */ @Override - public void executed(Operation operation) { + public void executed(OperationWithResult operation) { try { broadcastOperation(operation); } catch (Exception e) { diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java index c4e17ed35ed..3c3faa7541a 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java @@ -21,9 +21,8 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.operationaltransformation.Operation; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** * Receives {@link RacingEventServiceOperation}s through JMS and @@ -38,15 +37,15 @@ import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; * @author Axel Uhl (d043530) * */ -public class Replicator implements Runnable { +public class Replicator> implements Runnable { private final static Logger logger = Logger.getLogger(Replicator.class.getName()); private static final long CHECK_INTERVAL_MILLIS = 2000; // how long (milliseconds) to pause before checking connection again private static final int CHECK_COUNT = 150; // how long to check, value is CHECK_INTERVAL second steps private final ReplicationMasterDescriptor master; - private final HasReplicable replicableProvider; - private final List> queue; + private final HasReplicable replicableProvider; + private final List> queue; private QueueingConsumer consumer; @@ -89,8 +88,8 @@ public class Replicator implements Runnable { * @param consumer * the RabbitMQ consumer from which to load messages */ - public Replicator(ReplicationMasterDescriptor master, HasReplicable racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { - this.queue = new ArrayList>(); + public Replicator(ReplicationMasterDescriptor master, HasReplicable racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { + this.queue = new ArrayList>(); this.master = master; this.replicableProvider = racingEventServiceTracker; this.suspended = startSuspended; @@ -147,7 +146,8 @@ public class Replicator implements Runnable { byte[] serializedOperation = (byte[]) ois.readObject(); ObjectInputStream operationOIS = replicableProvider.getReplicable() .createObjectInputStreamResolvingAgainstCache(new ByteArrayInputStream(serializedOperation)); - OperationWithTransformationSupport operation = (OperationWithTransformationSupport) operationOIS.readObject(); + @SuppressWarnings("unchecked") + OperationWithResult operation = (OperationWithResult) operationOIS.readObject(); operationCount++; operationsInMessage++; if (operationCount % 10000l == 0) { @@ -222,7 +222,7 @@ public class Replicator implements Runnable { * If the replicator is currently {@link #suspended}, the operation is queued, otherwise immediately applied to * the receiving replica. */ - private synchronized void applyOrQueue(OperationWithTransformationSupport operation) { + private synchronized void applyOrQueue(OperationWithResult operation) { if (suspended) { queue(operation); } else { @@ -230,7 +230,7 @@ public class Replicator implements Runnable { } } - private synchronized void apply(final Operation operation) { + private synchronized void apply(final OperationWithResult operation) { Runnable runnable = new Runnable() { @Override public void run() { @@ -244,7 +244,7 @@ public class Replicator implements Runnable { } } - private synchronized void queue(Operation operation) { + private synchronized void queue(OperationWithResult operation) { if (queue.isEmpty()) { notifyAll(); } @@ -262,8 +262,8 @@ public class Replicator implements Runnable { } private synchronized void applyQueue() { - for (Iterator> i=queue.iterator(); i.hasNext(); ) { - Operation operation = i.next(); + for (Iterator> i=queue.iterator(); i.hasNext(); ) { + OperationWithResult operation = i.next(); i.remove(); try { apply(operation); From 25d173ef5b21db0854abc57196b6424b2f4454d8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 00:17:45 +0100 Subject: [PATCH 014/113] fixed generics in operations; still not everything compiles --- .../test/AbstractServerReplicationTest.java | 8 +++--- ...LeaderboardCorrectionsReplicationTest.java | 3 ++- ...nstancesManagerLoggingPerformanceTest.java | 5 ++-- .../test/TrackRaceReplicationTest.java | 4 +-- .../server/RacingEventServiceOperation.java | 4 ++- .../server/impl/RacingEventServiceImpl.java | 3 ++- .../AbstractDeviceConfigurationOperation.java | 4 +-- .../AbstractMediaTrackOperation.java | 4 +-- .../AbstractRaceLogOperation.java | 4 +-- .../AddColumnToLeaderboard.java | 4 +-- .../AddColumnToSeries.java | 4 +-- .../AddCourseArea.java | 4 +-- .../AddDefaultRegatta.java | 4 +-- .../AddLeaderboardGroupToEvent.java | 5 ++-- .../AddRaceDefinition.java | 4 +-- .../AddRemoteSailingServerReference.java | 4 +-- .../AddSpecificRegatta.java | 4 +-- .../AddWaypoint.java | 4 +-- .../AllowCompetitorResetToDefaults.java | 4 +-- ...ConnectTrackedRaceToLeaderboardColumn.java | 4 +-- .../CreateEvent.java | 4 +-- .../CreateFlexibleLeaderboard.java | 4 +-- .../CreateLeaderboardGroup.java | 4 +-- .../CreateOrUpdateDataImportProgress.java | 4 +-- .../CreatePersistentCompetitor.java | 4 +-- .../CreateRegattaLeaderboard.java | 4 +-- .../CreateTrackedRace.java | 4 +-- .../DataImportFailed.java | 4 +-- ...nnectLeaderboardColumnFromTrackedRace.java | 4 +-- .../ImportMasterDataOperation.java | 4 +-- .../MoveColumnInSeriesDown.java | 4 +-- .../MoveColumnInSeriesUp.java | 4 +-- .../MoveLeaderboardColumnDown.java | 4 +-- .../MoveLeaderboardColumnUp.java | 4 +-- .../RecordCompetitorGPSFix.java | 4 +-- .../RecordMarkGPSFix.java | 4 +-- .../RecordWindFix.java | 4 +-- .../RemoveAndUntrackRace.java | 4 +-- .../RemoveColumnFromSeries.java | 4 +-- .../RemoveCourseArea.java | 4 +-- .../RemoveEvent.java | 4 +-- .../RemoveLeaderboard.java | 4 +-- .../RemoveLeaderboardColumn.java | 4 +-- .../RemoveLeaderboardGroup.java | 4 +-- .../RemoveLeaderboardGroupFromEvent.java | 4 +-- .../RemoveRegatta.java | 4 +-- .../RemoveRemoteSailingServerReference.java | 4 +-- .../RemoveSeries.java | 4 +-- .../RemoveWaypoint.java | 4 +-- .../RemoveWindFix.java | 4 +-- .../RenameEvent.java | 4 +-- .../RenameLeaderboard.java | 4 +-- .../RenameLeaderboardColumn.java | 4 +-- .../RenameLeaderboardGroup.java | 4 +-- ...tDataImportDeleteProgressFromMapTimer.java | 4 +-- .../SetRaceIsKnownToStartUpwind.java | 4 +-- ...pressedFlagForCompetitorInLeaderboard.java | 4 +-- .../SetWindSourcesToExclude.java | 4 +-- .../StopTrackingRace.java | 4 +-- .../StopTrackingRegatta.java | 4 +-- .../TrackRegatta.java | 4 +-- .../UpdateCompetitor.java | 4 +-- ...ateCompetitorDisplayNameInLeaderboard.java | 4 +-- .../UpdateEvent.java | 4 +-- .../UpdateIsMedalRace.java | 4 +-- .../UpdateLeaderboard.java | 4 +-- .../UpdateLeaderboardCarryValue.java | 4 +-- .../UpdateLeaderboardColumnFactor.java | 4 +-- .../UpdateLeaderboardGroup.java | 4 +-- .../UpdateLeaderboardMaxPointsReason.java | 4 +-- .../UpdateLeaderboardScoreCorrection.java | 4 +-- ...ateLeaderboardScoreCorrectionMetadata.java | 4 +-- .../UpdateMarkPassings.java | 4 +-- .../UpdateRaceDelayToLive.java | 4 +-- .../UpdateRaceTimes.java | 4 +-- .../UpdateSeries.java | 4 +-- .../UpdateSpecificRegatta.java | 4 +-- .../UpdateTrackedRaceStatus.java | 4 +-- .../UpdateWindAveragingTime.java | 4 +-- .../UpdateWindSourcesToExclude.java | 4 +-- ...artTimeEventWithTransformationSupport.java | 5 ++++ .../OperationWithTransformationSupport.java | 8 +++--- .../replication/ReplicationService.java | 12 ++++++--- .../server/replication/impl/Activator.java | 8 +++--- .../impl/ReplicationInstancesManager.java | 25 ++++++++++++------- .../impl/ReplicationServiceImpl.java | 14 +++++------ .../replication/impl/ReplicationServlet.java | 6 ++--- 87 files changed, 212 insertions(+), 190 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index cd22465b890..a312e34138b 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -115,7 +115,7 @@ public abstract class AbstractServerReplicationTest { // replica gets its own base DomainFactory: new DomainFactoryImpl()), mongoObjectFactory, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE); } - ReplicationInstancesManager rim = new ReplicationInstancesManager(); + ReplicationInstancesManager rim = new ReplicationInstancesManager<>(); masterReplicator = new ReplicationServiceImpl>(exchangeName, exchangeHost, rim, this.master); replicaDescriptor = new ReplicaDescriptor(InetAddress.getLocalHost(), serverUuid, ""); masterReplicator.registerReplica(replicaDescriptor); @@ -172,12 +172,12 @@ public abstract class AbstractServerReplicationTest { private final DomainFactory resolveAgainst; private final RacingEventService master; private final ReplicaDescriptor replicaDescriptor; - private final ReplicationService masterReplicationService; + private final ReplicationService masterReplicationService; private final ReplicationMasterDescriptor masterDescriptor; public ReplicationServiceTestImpl(String exchangeName, String exchangeHost, DomainFactory resolveAgainst, - ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, - RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, + ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, + RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, ReplicationMasterDescriptor masterDescriptor) throws IOException { super(exchangeName, exchangeHost, replicationInstancesManager, replica); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java index 529c4d197d5..7ebb122508c 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java @@ -34,6 +34,7 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; +import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; @@ -49,7 +50,7 @@ public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServer private static final Logger logger = Logger.getLogger(DelayedLeaderboardCorrectionsReplicationTest.class.getName()); private static final String Q2 = "Q2"; - private ReplicationService replicaReplicator; + private ReplicationService replicaReplicator; private ReplicationMasterDescriptor masterDescriptor; @Before diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java index 9cd9a06253c..96d942b81ce 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java @@ -11,18 +11,19 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; +import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; import com.sap.sailing.server.replication.impl.ReplicaDescriptor; import com.sap.sailing.server.replication.impl.ReplicationInstancesManager; public class ReplicationInstancesManagerLoggingPerformanceTest { - private ReplicationInstancesManager replicationInstanceManager; + private ReplicationInstancesManager replicationInstanceManager; private CreateLeaderboardGroup operation; private ReplicaDescriptor replica; @Before public void setUp() throws UnknownHostException { - replicationInstanceManager = new ReplicationInstancesManager(); + replicationInstanceManager = new ReplicationInstancesManager(); replica = new ReplicaDescriptor(InetAddress.getLocalHost(), UUID.randomUUID(), ""); replicationInstanceManager.registerReplica(replica); operation = new CreateLeaderboardGroup("Test Leaderboard Group", "Description of Test Leaderboard Group", /* displayName */ null, 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 5742642d9e5..dc30f4115fe 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 @@ -38,9 +38,9 @@ import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLead import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; -import com.sap.sse.operationaltransformation.Operation; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { private TrackedRace masterTrackedRace; @@ -73,7 +73,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { MillisecondsTimePoint endOfTracking = new MillisecondsTimePoint(cal.getTimeInMillis()); master.addOperationExecutionListener(new OperationExecutionListener() { @Override - public void executed(Operation operation) { + public void executed(OperationWithResult operation) { if (operation instanceof CreateTrackedRace) { synchronized (notifier) { notifier[0] = true; 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 29433430867..2392a51a188 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 @@ -12,8 +12,10 @@ import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; import com.sap.sailing.server.replication.OperationWithResult; +import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; -public interface RacingEventServiceOperation extends OperationWithResult, Serializable { +public interface RacingEventServiceOperation extends OperationWithResult, +OperationWithTransformationSupport>, Serializable { /** * Assumes this is the "server" operation and transforms the client's removeColumnFromLeaderboardClientOp according to this * operation. The default implementation will probably pass on the untransformed client operation. However, if this 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 b234c2e63e3..fc7c4a9662d 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 @@ -182,6 +182,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateTrackedRaceStatus; import com.sap.sailing.server.operationaltransformation.UpdateWindAveragingTime; import com.sap.sailing.server.operationaltransformation.UpdateWindSourcesToExclude; import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; @@ -2084,7 +2085,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport * this service known. */ @Override - public T apply(Operation operation) { + public T apply(OperationWithResult operation) { RacingEventServiceOperation reso = (RacingEventServiceOperation) operation; try { T result = reso.internalApplyTo(this); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java index 5e1853c025f..aa847b25b9d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java @@ -14,12 +14,12 @@ public abstract class AbstractDeviceConfigurationOperation extends AbstractRacin } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java index 5a8fc737b9e..d22910488fa 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java @@ -14,13 +14,13 @@ public abstract class AbstractMediaTrackOperation extends AbstractRacingEventSer } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java index 670c10b6810..3ad69fce237 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java @@ -26,12 +26,12 @@ public abstract class AbstractRaceLogOperation extends AbstractRacingEventSer abstract protected RaceColumn getRaceColumn(RacingEventService toState); @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } } \ No newline at end of file diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java index 800c918a757..60d88e5bc85 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java @@ -26,12 +26,12 @@ public class AddColumnToLeaderboard extends AbstractLeaderboardColumnOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddColumnToLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddColumnToLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java index 353061d9502..f86cbae648c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java @@ -27,13 +27,13 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java index ddc4adffed4..8d61a5bd21f 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java @@ -35,14 +35,14 @@ public class AddCourseArea extends AbstractRacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java index 9c1635df79a..dc7ce6de59f 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java @@ -14,13 +14,13 @@ public class AddDefaultRegatta extends AbstractAddRegattaOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java index ac52fa393e6..f53094b1d5d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java @@ -58,15 +58,14 @@ public class AddLeaderboardGroupToEvent extends AbstractRacingEventServiceOperat } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { // TODO Auto-generated method stub return null; } - } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java index 5a077b9907d..197fb27deaa 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java @@ -17,13 +17,13 @@ public class AddRaceDefinition extends AbstractRacingEventServiceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java index 06a534fcd40..4fd16b8018d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java @@ -31,14 +31,14 @@ public class AddRemoteSailingServerReference extends AbstractRacingEventServiceO @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java index e8437797074..1a60c674916 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java @@ -73,13 +73,13 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java index ba119a79e92..46e1f031b23 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java @@ -54,13 +54,13 @@ public class AddWaypoint extends WaypointOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java index 9c71d82dc2b..99d1b7b125b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java @@ -32,13 +32,13 @@ public class AllowCompetitorResetToDefaults extends AbstractRacingEventServiceOp } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java index 4b577f600c5..566fcff827b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java @@ -34,13 +34,13 @@ public class ConnectTrackedRaceToLeaderboardColumn extends AbstractLeaderboardCo } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java index f69739ad775..be64633c32b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java @@ -46,13 +46,13 @@ public class CreateEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java index 76647864e42..20001f19934 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java @@ -36,12 +36,12 @@ public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddFlexibleLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddFlexibleLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java index c9aa898afb9..9c1c43548e4 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java @@ -31,13 +31,13 @@ public class CreateLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java index 9c0e037a209..9d481c5a6c7 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java @@ -30,12 +30,12 @@ public class CreateOrUpdateDataImportProgress extends AbstractRacingEventService } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java index e9f2d5ff00c..4b58d681c51 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java @@ -35,12 +35,12 @@ public class CreatePersistentCompetitor extends AbstractRacingEventServiceOperat } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformCreatePersistentCompetitorClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformCreatePersistentCompetitorServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java index 3be28fb14e6..18844322b69 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java @@ -34,12 +34,12 @@ public class CreateRegattaLeaderboard extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddRegattaLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddRegattaLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java index 5e7bce313dd..76e2bc7b12c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java @@ -62,13 +62,13 @@ public class CreateTrackedRace extends AbstractRaceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java index 8974fb76cb9..65089627c24 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java @@ -23,12 +23,12 @@ public class DataImportFailed extends AbstractRacingEventServiceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java index 7d3b8531e27..49672dc2144 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java @@ -33,13 +33,13 @@ public class DisconnectLeaderboardColumnFromTrackedRace extends AbstractLeaderbo } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 56e2a3b84ca..554bd75978d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -402,13 +402,13 @@ public class ImportMasterDataOperation extends } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java index 748ac9071a8..8a56acebac7 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java @@ -25,13 +25,13 @@ public class MoveColumnInSeriesDown extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java index 723c49448bb..b54cc9cd90d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java @@ -25,13 +25,13 @@ public class MoveColumnInSeriesUp extends AbstractColumnInSeriesOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java index 454a4870ba3..4413bbb6fa5 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java @@ -18,12 +18,12 @@ public class MoveLeaderboardColumnDown extends AbstractLeaderboardColumnOperatio } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformMoveLeaderboardColumnDownClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformMoveLeaderboardColumnDownServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java index 45c2a842a56..0fb92d1deb5 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java @@ -19,12 +19,12 @@ public class MoveLeaderboardColumnUp extends AbstractLeaderboardColumnOperation< @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformMoveLeaderboardColumnUpClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformMoveLeaderboardColumnUpServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java index d36e67c31bd..8eaf0831741 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java @@ -38,13 +38,13 @@ public class RecordCompetitorGPSFix extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java index fc9144eed29..7a7554c35c5 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java @@ -25,13 +25,13 @@ public abstract class RecordMarkGPSFix extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java index ce251c84562..7d54c5d6a4c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java @@ -22,13 +22,13 @@ public class RecordWindFix extends AbstractWindOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java index 21066f7de99..459eef4a101 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java @@ -16,13 +16,13 @@ public class RemoveAndUntrackRace extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java index 6837c6c2640..43f2600d147 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java @@ -25,13 +25,13 @@ public class RemoveColumnFromSeries extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java index 78059b7bcce..96b86810549 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java @@ -32,14 +32,14 @@ public class RemoveCourseArea extends AbstractRacingEventServiceOperation @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java index c86b1f8a2cb..67ad51be9f2 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java @@ -13,13 +13,13 @@ public class RemoveEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java index 35e44514a44..0673581d206 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java @@ -11,12 +11,12 @@ public class RemoveLeaderboard extends AbstractLeaderboardOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRemoveLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRemoveLeaderboardServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java index 52451f00e7c..44d555c3b1c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java @@ -17,12 +17,12 @@ public class RemoveLeaderboardColumn extends AbstractLeaderboardColumnOperation< } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRemoveColumnFromLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRemoveColumnFromLeaderboardServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java index 12a09d919dd..bdeb5933399 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java @@ -11,13 +11,13 @@ public class RemoveLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java index 12e01cae48c..97e87e7295a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java @@ -47,13 +47,13 @@ public class RemoveLeaderboardGroupFromEvent extends AbstractRacingEventServiceO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java index 53da9a0cb65..66be3fad898 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java @@ -29,13 +29,13 @@ public class RemoveRegatta extends AbstractRacingEventServiceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java index f111bc0ca10..c500d12ed2d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java @@ -27,14 +27,14 @@ public class RemoveRemoteSailingServerReference extends AbstractRacingEventServi @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java index ec0bd4f2b1c..0b38f30aa6d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java @@ -37,13 +37,13 @@ public class RemoveSeries extends AbstractRacingEventServiceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java index 23d2b4be600..a4bc21ac2f3 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java @@ -44,13 +44,13 @@ public class RemoveWaypoint extends WaypointOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java index e1d7437be1f..ece70ef207f 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java @@ -22,13 +22,13 @@ public class RemoveWindFix extends AbstractWindOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java index 4bc0a560e25..a0f2451ef3d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java @@ -15,13 +15,13 @@ public class RenameEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java index b57e7dbe714..444550985cc 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java @@ -22,13 +22,13 @@ public class RenameLeaderboard extends AbstractLeaderboardOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java index 096ca90c133..6671c824fb1 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java @@ -20,13 +20,13 @@ public class RenameLeaderboardColumn extends AbstractLeaderboardColumnOperation< } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRenameLeaderboardColumnClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRenameLeaderboardColumnServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java index 3e8502ec811..c194b930ec0 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java @@ -22,13 +22,13 @@ public class RenameLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java index c151f2c6104..6834910f585 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java @@ -21,12 +21,12 @@ public class SetDataImportDeleteProgressFromMapTimer extends AbstractRacingEvent } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java index b9f6a1062bc..be7509d5fa0 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java @@ -15,13 +15,13 @@ public class SetRaceIsKnownToStartUpwind extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java index e7b0f707ead..911fad8197b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java @@ -26,13 +26,13 @@ public class SetSuppressedFlagForCompetitorInLeaderboard extends AbstractLeaderb } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java index b0f606dbbb1..feabbba4951 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java @@ -16,13 +16,13 @@ public class SetWindSourcesToExclude extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java index f2375e87c89..9471784e0e7 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java @@ -26,13 +26,13 @@ public class StopTrackingRace extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java index 359ce916824..4767c3c5652 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java @@ -27,13 +27,13 @@ public class StopTrackingRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java index 177661a1228..89a8d8b003e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java @@ -16,13 +16,13 @@ public class TrackRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java index 4938413b5bb..807b667210c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java @@ -35,13 +35,13 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java index 71197badbea..2e0e4181261 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java @@ -18,13 +18,13 @@ public class UpdateCompetitorDisplayNameInLeaderboard extends AbstractLeaderboar } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java index 4b839e6a943..d952c9414bf 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java @@ -41,13 +41,13 @@ public class UpdateEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java index 71a0b049f53..92d1dece4de 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java @@ -15,13 +15,13 @@ public class UpdateIsMedalRace extends AbstractLeaderboardColumnOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java index ae0716785ad..2048e6d409e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java @@ -27,13 +27,13 @@ public class UpdateLeaderboard extends AbstractLeaderboardOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java index 16163d06a25..da95a587540 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java @@ -17,13 +17,13 @@ public class UpdateLeaderboardCarryValue extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java index 48c7fc8e026..eefd165c768 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java @@ -20,14 +20,14 @@ public class UpdateLeaderboardColumnFactor extends AbstractLeaderboardColumnOper } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java index b74924ec312..9f9810a178b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java @@ -27,13 +27,13 @@ public class UpdateLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java index ecb91f059ce..c5bd4c78ec8 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java @@ -26,13 +26,13 @@ public class UpdateLeaderboardMaxPointsReason extends AbstractLeaderboardColumnO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java index ac34e5c1123..49780420bac 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java @@ -27,13 +27,13 @@ public class UpdateLeaderboardScoreCorrection extends AbstractLeaderboardColumnO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java index 30c52c4e9f8..911f523d137 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java @@ -22,13 +22,13 @@ public class UpdateLeaderboardScoreCorrectionMetadata extends AbstractLeaderboar } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java index 8d1027aa98a..c2b6415df60 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java @@ -27,13 +27,13 @@ public class UpdateMarkPassings extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java index afc4b7de025..b53cf6f0f01 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java @@ -22,13 +22,13 @@ public class UpdateRaceDelayToLive extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java index ac011175e00..ac1aa832286 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java @@ -30,13 +30,13 @@ public class UpdateRaceTimes extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java index b3e5f88ef34..b7ae5a85977 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java @@ -77,13 +77,13 @@ public class UpdateSeries extends AbstractSeriesOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java index 42ac890ca57..a70b77d34ed 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java @@ -31,12 +31,12 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java index 339b7baa51e..1c1c4dfbc20 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java @@ -23,13 +23,13 @@ public class UpdateTrackedRaceStatus extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java index e2db3f15f88..1872455780f 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java @@ -22,13 +22,13 @@ public class UpdateWindAveragingTime extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java index d39402b4f99..15ad291fcef 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java @@ -21,13 +21,13 @@ public class UpdateWindSourcesToExclude extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogStartTimeEventWithTransformationSupport.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogStartTimeEventWithTransformationSupport.java index 2c4176c3a8d..c8b2b3375f8 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogStartTimeEventWithTransformationSupport.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/racelog/RaceLogStartTimeEventWithTransformationSupport.java @@ -26,4 +26,9 @@ public class RaceLogStartTimeEventWithTransformationSupport extends RaceLogEvent RaceLogStartTimeEventWithTransformationSupport raceLogStartTimeServerEventWithTransformationSupport) { return null; } + + @Override + public boolean requiresSynchronousExecution() { + return true; + } } diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java index d820f393066..3b27583d49b 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java @@ -5,8 +5,8 @@ package com.sap.sse.operationaltransformation; * * @author Axel Uhl (D043530) * - * @param - * @param + * @param server state to which the operation is applied + * @param the operation type */ public interface OperationWithTransformationSupport> extends Operation { /** @@ -16,7 +16,7 @@ public interface OperationWithTransformationSupportthis operation along serverOp */ - O transformClientOp(O serverOp); + OperationWithTransformationSupport transformClientOp(O serverOp); /** * Implements the specific transformation rule for the implementing subclass for the set of possible peer operations @@ -25,5 +25,5 @@ public interface OperationWithTransformationSupportthis operation along clientOp */ - O transformServerOp(O clientOp); + OperationWithTransformationSupport transformServerOp(O clientOp); } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java index d38f679cdb9..a46081d8da4 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java @@ -8,9 +8,15 @@ import java.util.UUID; import com.rabbitmq.client.Channel; import com.sap.sailing.server.replication.impl.ReplicaDescriptor; import com.sap.sailing.server.replication.impl.ReplicationServlet; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; -public interface ReplicationService { +/** + * A service that organizes a master server and its replicas. + * + * @author Axel Uhl (D043530) + * + * @param the type representing the master's state + */ +public interface ReplicationService { static String SAILING_SERVER_REPLICATION_TOPIC = "SailingServerReplicationTopic"; /** @@ -44,7 +50,7 @@ public interface ReplicationService { * For a replica replicating off this master, provides statistics in the form of number of operations sent to that * replica by type, where the operation type is the key, represented as the operation's class name */ - Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); + Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); double getAverageNumberOfOperationsPerMessage(ReplicaDescriptor replicaDescriptor); diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java index 6d4ab4f25e1..a24b7401a45 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java @@ -74,7 +74,7 @@ public class Activator implements BundleActivator { public static final String PROPERTY_NAME_REPLICATE_MASTER_QUEUE_PORT = "replicate.master.queue.port"; public static final String PROPERTY_NAME_REPLICATE_MASTER_EXCHANGE_NAME = "replicate.master.exchange.name"; - private ReplicationInstancesManager replicationInstancesManager; + private ReplicationInstancesManager replicationInstancesManager; private static BundleContext defaultContext; @@ -110,15 +110,15 @@ public class Activator implements BundleActivator { } catch (NumberFormatException nfe) { logger.severe("Couldn't parse the replication port specification \""+exchangePortAsString+"\". Using default."); } - replicationInstancesManager = new ReplicationInstancesManager(); - ReplicationService serverReplicationMasterService = new ReplicationServiceImpl<>( + replicationInstancesManager = new ReplicationInstancesManager<>(); + ReplicationService serverReplicationMasterService = new ReplicationServiceImpl<>( exchangeName, exchangeHost, exchangePort, replicationInstancesManager); bundleContext.registerService(ReplicationService.class, serverReplicationMasterService, null); logger.info("Registered replication service "+serverReplicationMasterService+" using exchange name "+exchangeName+" on host "+exchangeHost); checkIfAutomaticReplicationShouldStart(serverReplicationMasterService, exchangeName); } - private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName) { + private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName) { String replicateOnStart = System.getProperty(PROPERTY_NAME_REPLICATE_ON_START); if (Boolean.valueOf(replicateOnStart)) { logger.info("Configuration requested automatic replication. Starting it up..."); diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java index e72d787ede4..725121fe81e 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java @@ -7,11 +7,18 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.common.Util; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; -public class ReplicationInstancesManager { +/** + * Manages the replicas and keeps statistics. + * + * @author Axel Uhl (D043530) + * + * @param the state to which replication operations are applied + */ +public class ReplicationInstancesManager { /** * The set of descriptors of all registered slaves. All broadcast operations will send the messages to all @@ -19,7 +26,7 @@ public class ReplicationInstancesManager { */ private Set replicaDescriptors; - private Map>, Integer>> replicationCounts; + private Map>, Integer>> replicationCounts; /** * Used to calculate the average number of operations per message sent/received for each replica. @@ -47,7 +54,7 @@ public class ReplicationInstancesManager { public ReplicationInstancesManager() { replicaDescriptors = new HashSet(); - replicationCounts = new HashMap>,Integer>>(); + replicationCounts = new HashMap>,Integer>>(); totalMessageCount = new HashMap<>(); totalNumberOfOperations = new HashMap<>(); totalQueueMessagesRawSizeInBytes = new HashMap(); @@ -73,7 +80,7 @@ public class ReplicationInstancesManager { public void registerReplica(ReplicaDescriptor replica) { replicaDescriptors.add(replica); - replicationCounts.put(replica, new HashMap>, Integer>()); + replicationCounts.put(replica, new HashMap>, Integer>()); } public void unregisterReplica(ReplicaDescriptor replica) { @@ -89,15 +96,15 @@ public class ReplicationInstancesManager { */ public void log(List> classes, long sizeOfQueueMessageInBytes) { for (ReplicaDescriptor replica : getReplicaDescriptors()) { - Map>, Integer> counts = replicationCounts.get(replica); + Map>, Integer> counts = replicationCounts.get(replica); if (counts == null) { - counts = new HashMap>, Integer>(); + counts = new HashMap>, Integer>(); replicationCounts.put(replica, counts); } for (Class replicatedOperationClass : classes) { // safe because replicatedOperation is declared of type RacingEventserviceOperation @SuppressWarnings("unchecked") - Class> operationClass = (Class>) replicatedOperationClass; + Class> operationClass = (Class>) replicatedOperationClass; Integer count = counts.get(operationClass); if (count == null) { count = 0; @@ -123,7 +130,7 @@ public class ReplicationInstancesManager { } } - public Map>, Integer> getStatistics(ReplicaDescriptor replica) { + public Map>, Integer> getStatistics(ReplicaDescriptor replica) { return replicationCounts.get(replica); } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 73019c160d3..00e597d1a9c 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -35,7 +35,6 @@ import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.BuildVersion; -import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; /** * Can observe a {@link RacingEventService} for the operations it performs that require replication. Only observes as @@ -52,10 +51,11 @@ import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; * @author Frank Mittag, Axel Uhl (d043530) * */ -public class ReplicationServiceImpl> implements ReplicationService, OperationExecutionListener, HasReplicable { +public class ReplicationServiceImpl> implements ReplicationService, +OperationExecutionListener, HasReplicable { private static final Logger logger = Logger.getLogger(ReplicationServiceImpl.class.getName()); - private final ReplicationInstancesManager replicationInstancesManager; + private final ReplicationInstancesManager replicationInstancesManager; private final ServiceTracker, Replicable> racingEventServiceTracker; @@ -172,12 +172,12 @@ public class ReplicationServiceImpl> impl * @param exchangeHost name of the host under which the RabbitMQ server can be reached * @param exchangePort port of the RabbitMQ server, or 0 for default port */ - public ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager) throws IOException { + public ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager) throws IOException { this(exchangeName, exchangeHost, exchangePort, replicationInstancesManager, /* localService */ null, /* create RacingEventServiceTracker */ true); } private ReplicationServiceImpl(String exchangeName, String exchangeHost, - int exchangePort, final ReplicationInstancesManager replicationInstancesManager, + int exchangePort, final ReplicationInstancesManager replicationInstancesManager, Replicable localService, boolean createRacingEventServiceTracker) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); this.replicationInstancesManager = replicationInstancesManager; @@ -206,7 +206,7 @@ public class ReplicationServiceImpl> impl * the name of the exchange to which replicas can bind */ public ReplicationServiceImpl(String exchangeName, String exchangeHost, - final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { + final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); } @@ -510,7 +510,7 @@ public class ReplicationServiceImpl> impl } @Override - public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { + public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { return replicationInstancesManager.getStatistics(replicaDescriptor); } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java index 8c03e0d3358..23c061876a6 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java @@ -47,15 +47,15 @@ public class ReplicationServlet extends SailingServerHttpServlet { */ private static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; - private ServiceTracker replicationServiceTracker; + private ServiceTracker, ReplicationService> replicationServiceTracker; public ReplicationServlet() throws Exception { BundleContext context = Activator.getDefaultContext(); - replicationServiceTracker = new ServiceTracker(context, ReplicationService.class.getName(), null); + replicationServiceTracker = new ServiceTracker, ReplicationService>(context, ReplicationService.class.getName(), null); replicationServiceTracker.open(); } - protected ReplicationService getReplicationService() { + protected ReplicationService getReplicationService() { return replicationServiceTracker.getService(); } From b2ed3ce60b21b1ea2911c9a7762944666d8a3ffc Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 00:45:59 +0100 Subject: [PATCH 015/113] down to two compilation errors... --- .../domain/tractracadapter/RaceRecord.java | 4 +- .../gwt/ui/test/SailingServiceImplMock.java | 14 +++-- .../gwt/ui/server/SailingServiceImpl.java | 17 ++--- .../META-INF/MANIFEST.MF | 7 ++- .../Manage2SailEventResultsParserImpl.java | 4 +- .../gateway/SailingServerHttpServlet.java | 4 +- .../sailing/server/gateway/impl/AdminApp.java | 2 +- .../RegattaAndRaceDataJsonGetServlet.java | 2 +- .../gateway/impl/WindJsonGetServlet.java | 2 +- .../jaxrs/AbstractSailingServerResource.java | 4 +- .../gateway/jaxrs/api/RegattasResource.java | 2 +- .../sailing/server/RacingEventService.java | 39 ------------ java/com.sap.sse.gateway/META-INF/MANIFEST.MF | 7 +++ .../sap/sse/gateway/AbstractHttpServlet.java | 63 +++++++++++++++++++ .../sse/gateway/HttpServletWithService.java | 44 +++++++++++++ .../META-INF/MANIFEST.MF | 3 +- .../server/replication/Replicable.java | 33 ++++++++++ .../replication/impl/ReplicationServlet.java | 14 ++++- java/com.sap.sse/META-INF/MANIFEST.MF | 1 + .../com/sap/sse}/InvalidDateException.java | 2 +- .../src/com/sap/sse}/util/DateParser.java | 6 +- 21 files changed, 201 insertions(+), 73 deletions(-) create mode 100755 java/com.sap.sse.gateway/src/com/sap/sse/gateway/AbstractHttpServlet.java create mode 100755 java/com.sap.sse.gateway/src/com/sap/sse/gateway/HttpServletWithService.java rename java/{com.sap.sailing.domain/src/com/sap/sailing/util => com.sap.sse/src/com/sap/sse}/InvalidDateException.java (83%) rename java/{com.sap.sailing.domain/src/com/sap/sailing => com.sap.sse/src/com/sap/sse}/util/DateParser.java (96%) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java index 4d57036c72f..54ae75fd10f 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java @@ -15,10 +15,10 @@ import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.sap.sailing.util.DateParser; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.util.DateParser; public class RaceRecord { private static final Logger logger = Logger.getLogger(RaceRecord.class.getName()); diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index 58eee5681ad..29dca1d912e 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -33,6 +33,7 @@ import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; import com.sap.sailing.gwt.ui.server.SailingServiceImpl; import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationService; @@ -59,16 +60,19 @@ public class SailingServiceImplMock extends SailingServiceImpl { } @Override - protected ServiceTracker createAndOpenReplicationServiceTracker( + protected ServiceTracker, ReplicationService> createAndOpenReplicationServiceTracker( BundleContext context) { @SuppressWarnings("unchecked") - ServiceTracker result = mock(ServiceTracker.class); + ServiceTracker, ReplicationService> result = mock(ServiceTracker.class); try { - final ReplicationServiceImpl replicationService = new ReplicationServiceImpl("test exchange", "localhost", 0, new ReplicationInstancesManager()) { + final ReplicationServiceImpl> replicationService = + new ReplicationServiceImpl>("test exchange", "localhost", 0, + new ReplicationInstancesManager()) { @Override - protected ServiceTracker, Replicable> getRacingEventServiceTracker() { + protected ServiceTracker>, Replicable>> getRacingEventServiceTracker() { @SuppressWarnings("unchecked") - ServiceTracker, Replicable> result = (ServiceTracker, Replicable>) mock(ServiceTracker.class); + ServiceTracker>, Replicable>> result = + (ServiceTracker>, Replicable>>) mock(ServiceTracker.class); doReturn("Humba Humba").when(result).toString(); when(result.getService()).thenReturn(new RacingEventServiceImpl()); return result; 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 89a08512921..a442d9ed48a 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 @@ -331,7 +331,6 @@ import com.sap.sailing.manage2sail.RegattaResultDescriptor; import com.sap.sailing.resultimport.ResultUrlProvider; import com.sap.sailing.resultimport.ResultUrlRegistry; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.masterdata.MasterDataImporter; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.AddColumnToSeries; @@ -382,6 +381,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCo import com.sap.sailing.server.operationaltransformation.UpdateRaceDelayToLive; import com.sap.sailing.server.operationaltransformation.UpdateSeries; import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta; +import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.replication.ReplicationFactory; import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sailing.server.replication.ReplicationService; @@ -419,7 +419,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S private final ServiceTracker racingEventServiceTracker; - private final ServiceTracker replicationServiceTracker; + private final ServiceTracker, ReplicationService> replicationServiceTracker; private final ServiceTracker resultUrlRegistryServiceTracker; @@ -662,9 +662,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return new ScoreCorrectionProviderDTO(scoreCorrectionProvider.getName(), hasResultsForBoatClassFromDateByEventName); } - protected ServiceTracker createAndOpenReplicationServiceTracker( + protected ServiceTracker, ReplicationService> createAndOpenReplicationServiceTracker( BundleContext context) { - ServiceTracker result = new ServiceTracker( + ServiceTracker, ReplicationService> result = + new ServiceTracker, ReplicationService>( context, ReplicationService.class.getName(), null); result.open(); return result; @@ -2205,7 +2206,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return racingEventServiceTracker.getService(); // grab the service } - private ReplicationService getReplicationService() { + private ReplicationService getReplicationService() { return replicationServiceTracker.getService(); } @@ -3192,12 +3193,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public ReplicationStateDTO getReplicaInfo() { - ReplicationService service = getReplicationService(); + ReplicationService service = getReplicationService(); Set replicaDTOs = new HashSet(); for (ReplicaDescriptor replicaDescriptor : service.getReplicaInfo()) { - final Map>, Integer> statistics = service.getStatistics(replicaDescriptor); + final Map>, Integer> statistics = service.getStatistics(replicaDescriptor); Map replicationCountByOperationClassName = new HashMap(); - for (Map.Entry>, Integer> e : statistics.entrySet()) { + for (Entry>, Integer> e : statistics.entrySet()) { replicationCountByOperationClassName.put(e.getKey().getName(), e.getValue()); } replicaDTOs.add(new ReplicaDTO(replicaDescriptor.getIpAddress().getHostName(), replicaDescriptor diff --git a/java/com.sap.sailing.manage2sail/META-INF/MANIFEST.MF b/java/com.sap.sailing.manage2sail/META-INF/MANIFEST.MF index 0b65fc33928..89e05d984dd 100644 --- a/java/com.sap.sailing.manage2sail/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.manage2sail/META-INF/MANIFEST.MF @@ -6,7 +6,8 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Require-Bundle: org.json.simple;bundle-version="1.1.0", - com.sap.sailing.domain.common, - com.sap.sailing.domain +Require-Bundle: org.json.simple;bundle-version="1.1.0", + com.sap.sailing.domain.common, + com.sap.sailing.domain, + com.sap.sse Export-Package: com.sap.sailing.manage2sail diff --git a/java/com.sap.sailing.manage2sail/src/com/sap/sailing/manage2sail/Manage2SailEventResultsParserImpl.java b/java/com.sap.sailing.manage2sail/src/com/sap/sailing/manage2sail/Manage2SailEventResultsParserImpl.java index 2b0df2bf4b8..f7856a5da10 100644 --- a/java/com.sap.sailing.manage2sail/src/com/sap/sailing/manage2sail/Manage2SailEventResultsParserImpl.java +++ b/java/com.sap.sailing.manage2sail/src/com/sap/sailing/manage2sail/Manage2SailEventResultsParserImpl.java @@ -13,8 +13,8 @@ import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import com.sap.sailing.domain.common.CompetitorGenderType; -import com.sap.sailing.util.DateParser; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; +import com.sap.sse.util.DateParser; public class Manage2SailEventResultsParserImpl implements Manage2SailEventResultsParser { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java index 49bb96ace12..f28f06869d9 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/SailingServerHttpServlet.java @@ -15,10 +15,10 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.racelog.tracking.CachedOsgiTypeBasedServiceFinderFactory; -import com.sap.sailing.util.DateParser; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.util.DateParser; public abstract class SailingServerHttpServlet extends HttpServlet { private static final long serialVersionUID = -6514453597593669376L; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java index 232e598c87d..6ca02f38345 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/AdminApp.java @@ -38,7 +38,7 @@ import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.domain.tractracadapter.RaceRecord; import com.sap.sailing.server.gateway.SailingServerHttpServlet; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java index 2862b3b78b4..e5e75b599a9 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/RegattaAndRaceDataJsonGetServlet.java @@ -35,7 +35,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java index 0b122fb4ff4..fb1f3860243 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindJsonGetServlet.java @@ -23,7 +23,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java index f8d2620fda9..fb94a8d581e 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/AbstractSailingServerResource.java @@ -13,10 +13,10 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.util.DateParser; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.util.DateParser; public abstract class AbstractSailingServerResource { @Context ServletContext servletContext; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java index 1bd534ac3ee..f595c75cf3e 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java @@ -57,7 +57,7 @@ import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.RegattaJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.SeriesJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; -import com.sap.sailing.util.InvalidDateException; +import com.sap.sse.InvalidDateException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; 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 791a452251e..316e597982f 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 @@ -1,8 +1,6 @@ package com.sap.sailing.server; import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; import java.io.Serializable; import java.net.MalformedURLException; import java.net.SocketException; @@ -58,7 +56,6 @@ import com.sap.sailing.domain.racelog.RaceLogEventAuthor; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.DynamicTrackedRace; -import com.sap.sailing.domain.tracking.RaceListener; import com.sap.sailing.domain.tracking.RaceTracker; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; @@ -295,42 +292,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch void updateLeaderboardGroup(String oldName, String newName, String description, String displayName, List leaderboardNames, int[] overallLeaderboardDiscardThresholds, ScoringSchemeType overallLeaderboardScoringSchemeType); - /** - * Produces a one-shot serializable copy of those elements required for replication into oos so that - * afterwards the {@link RacingEventServiceOperation}s can be {@link #apply(RacingEventServiceOperation) applied} to - * maintain consistency with the master copy of the service. The dual operation is {@link #initiallyFillFrom}. - */ - void serializeForInitialReplication(ObjectOutputStream oos) throws IOException; - - /** - * Before {@link #initiallyFillFrom(ObjectInputStream) initially loading a replica's state from a master instance}, - * the replica's old state needs to be "detached". This method clears all top-level data structures and stops all - * tracking currently going on.

- * - * The reason this operation needs to be callable separate from {@link #initiallyFillFrom(ObjectInputStream)} is that - * it needs to happen before subscribing to the operation feed received from the master instance through the message bus - * which in turn needs to happen before receiving the initial load. - */ - void clearReplicaState() throws MalformedURLException, IOException, InterruptedException; - - /** - * Dual, reading operation for {@link #serializeForInitialReplication(ObjectOutputStream)}. In other words, when - * this operation returns, this service instance is in a state "equivalent" to that of the service instance that - * produced the stream contents in its {@link #serializeForInitialReplication(ObjectOutputStream)}. "Equivalent" - * here means that a replica will have equal sets of regattas, tracked regattas, leaderboards and leaderboard groups but - * will not have any active trackers for wind or positions because it relies on these elements to be sent through - * the replication channel. - *

- * - * Tracked regattas read from the stream are observed (see {@link RaceListener}) by this object for automatic updates - * to the default leaderboard and for automatic linking to leaderboard columns. It is assumed that no explicit - * replication of these operations will happen based on the changes performed on the replication master.

- * - * Caution: All relevant contents of this service instance needs to be cleared before by a call to - * {@link #clearReplicaState()}. It will be replaced by the stream contents. - */ - void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException, InterruptedException; - /** * @return a thread-safe copy of the events currently known by the service; it's safe for callers to iterate over * the iterable returned, and no risk of a {@link ConcurrentModificationException} exists diff --git a/java/com.sap.sse.gateway/META-INF/MANIFEST.MF b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF index 71b003733a7..d5da715a4c0 100755 --- a/java/com.sap.sse.gateway/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF @@ -5,3 +5,10 @@ Bundle-SymbolicName: com.sap.sse.gateway Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: javax.servlet;version="3.1.0", + javax.servlet.http;version="3.1.0", + org.osgi.framework;version="1.8.0", + org.osgi.util.tracker;version="1.5.1" +Require-Bundle: com.sap.sse.common, + com.sap.sse +Export-Package: com.sap.sse.gateway diff --git a/java/com.sap.sse.gateway/src/com/sap/sse/gateway/AbstractHttpServlet.java b/java/com.sap.sse.gateway/src/com/sap/sse/gateway/AbstractHttpServlet.java new file mode 100755 index 00000000000..3933870b4c0 --- /dev/null +++ b/java/com.sap.sse.gateway/src/com/sap/sse/gateway/AbstractHttpServlet.java @@ -0,0 +1,63 @@ +package com.sap.sse.gateway; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; + +import org.osgi.framework.BundleContext; + +import com.sap.sse.InvalidDateException; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.util.DateParser; + +/** + * A servlet that holds an OSGi service reference + * + * @author Axel Uhl (D043530) + * + * @param the service type + */ +public abstract class AbstractHttpServlet extends HttpServlet { + private static final long serialVersionUID = -6514453597593669376L; + + protected static final String PARAM_NAME_TIME = "time"; + + protected static final String PARAM_NAME_TIME_MILLIS = "timeasmillis"; + + private static final String OSGI_RFC66_WEBBUNDLE_BUNDLECONTEXT_NAME = "osgi-bundlecontext"; + + private BundleContext context; + + @Override + public void init(ServletConfig config) throws ServletException { + super.init(config); + context = (BundleContext) config.getServletContext().getAttribute(OSGI_RFC66_WEBBUNDLE_BUNDLECONTEXT_NAME); + } + + protected BundleContext getContext() { + return context; + } + + protected TimePoint readTimePointParam(HttpServletRequest req, String nameOfISOTimeParam, String nameOfMillisTime) throws InvalidDateException { + return readTimePointParam(req, nameOfISOTimeParam, nameOfMillisTime, null); + } + + protected TimePoint readTimePointParam(HttpServletRequest req, String nameOfISOTimeParam, String nameOfMillisTime, + TimePoint defaultValue) throws InvalidDateException { + String time = req.getParameter(nameOfISOTimeParam); + TimePoint timePoint; + if (time != null && time.length() > 0) { + timePoint = new MillisecondsTimePoint(DateParser.parse(time).getTime()); + } else { + String timeAsMillis = req.getParameter(nameOfMillisTime); + if (timeAsMillis != null && timeAsMillis.length() > 0) { + timePoint = new MillisecondsTimePoint(Long.valueOf(timeAsMillis)); + } else { + timePoint = defaultValue; + } + } + return timePoint; + } +} diff --git a/java/com.sap.sse.gateway/src/com/sap/sse/gateway/HttpServletWithService.java b/java/com.sap.sse.gateway/src/com/sap/sse/gateway/HttpServletWithService.java new file mode 100755 index 00000000000..ba5841176c1 --- /dev/null +++ b/java/com.sap.sse.gateway/src/com/sap/sse/gateway/HttpServletWithService.java @@ -0,0 +1,44 @@ +package com.sap.sse.gateway; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; + +import org.osgi.util.tracker.ServiceTracker; + +/** + * A servlet that holds an OSGi service reference + * + * @author Axel Uhl (D043530) + * + * @param the service type + */ +public abstract class HttpServletWithService extends AbstractHttpServlet { + private static final long serialVersionUID = -6514453597593669376L; + + private ServiceTracker racingEventServiceTracker; + + private final String serviceClassName; + + protected HttpServletWithService(Class serviceClass) { + this.serviceClassName = serviceClass.getName(); + } + + @Override + public void init(ServletConfig config) throws ServletException { + super.init(config); + racingEventServiceTracker = new ServiceTracker(getContext(), serviceClassName, null); + racingEventServiceTracker.open(); + } + + @Override + public void destroy() { + super.destroy(); + if (racingEventServiceTracker != null) { + racingEventServiceTracker.close(); + } + } + + public S getService() { + return racingEventServiceTracker.getService(); + } +} diff --git a/java/com.sap.sse.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF index 02caa7a7173..e3342068bc0 100644 --- a/java/com.sap.sse.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -11,7 +11,8 @@ Export-Package: com.sap.sailing.server.replication, com.sap.sailing.server.replication.impl Require-Bundle: com.sap.sse.common, com.sap.sse.operationaltransformation, - com.sap.sse + com.sap.sse, + com.sap.sse.gateway Bundle-ClassPath: . Web-ContextPath: /replication Import-Package: com.rabbitmq.client;version="2.8.4", diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java index 22156165a39..838f52fb42d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java @@ -3,6 +3,7 @@ package com.sap.sailing.server.replication; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.net.MalformedURLException; import org.osgi.framework.BundleContext; @@ -67,7 +68,39 @@ public interface Replicable> extends With void removeOperationExecutionListener(OperationExecutionListener listener); + /** + * Before {@link #initiallyFillFrom(ObjectInputStream) initially loading a replica's state from a master instance}, + * the replica's old state needs to be "detached". This method clears all top-level data structures and stops all + * tracking currently going on.

+ * + * The reason this operation needs to be callable separate from {@link #initiallyFillFrom(ObjectInputStream)} is that + * it needs to happen before subscribing to the operation feed received from the master instance through the message bus + * which in turn needs to happen before receiving the initial load. + */ void clearReplicaState() throws MalformedURLException, IOException, InterruptedException; + /** + * Dual, reading operation for {@link #serializeForInitialReplication(ObjectOutputStream)}. In other words, when + * this operation returns, this service instance is in a state "equivalent" to that of the service instance that + * produced the stream contents in its {@link #serializeForInitialReplication(ObjectOutputStream)}. "Equivalent" + * here means that a replica will have equal sets of regattas, tracked regattas, leaderboards and leaderboard groups but + * will not have any active trackers for wind or positions because it relies on these elements to be sent through + * the replication channel. + *

+ * + * Tracked regattas read from the stream are observed (see {@link RaceListener}) by this object for automatic updates + * to the default leaderboard and for automatic linking to leaderboard columns. It is assumed that no explicit + * replication of these operations will happen based on the changes performed on the replication master.

+ * + * Caution: All relevant contents of this service instance needs to be cleared before by a call to + * {@link #clearReplicaState()}. It will be replaced by the stream contents. + */ void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException, InterruptedException; + + /** + * Produces a one-shot serializable copy of those elements required for replication into oos so that + * afterwards the {@link RacingEventServiceOperation}s can be {@link #apply(RacingEventServiceOperation) applied} to + * maintain consistency with the master copy of the service. The dual operation is {@link #initiallyFillFrom}. + */ + void serializeForInitialReplication(ObjectOutputStream oos) throws IOException; } diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java index 23c061876a6..bc82d3608af 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java @@ -21,7 +21,9 @@ import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.rabbitmq.client.Channel; +import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.replication.ReplicationService; +import com.sap.sse.gateway.AbstractHttpServlet; import com.sap.sse.util.impl.CountingOutputStream; /** @@ -31,7 +33,7 @@ import com.sap.sse.util.impl.CountingOutputStream; * @author Axel Uhl (D043530) * */ -public class ReplicationServlet extends SailingServerHttpServlet { +public class ReplicationServlet extends AbstractHttpServlet { private static final Logger logger = Logger.getLogger(ReplicationServlet.class.getName()); private static final long serialVersionUID = 4835516998934433846L; @@ -49,10 +51,14 @@ public class ReplicationServlet extends SailingServerHttpServlet { private ServiceTracker, ReplicationService> replicationServiceTracker; + private ServiceTracker, Replicable> replicableServiceTracker; + public ReplicationServlet() throws Exception { BundleContext context = Activator.getDefaultContext(); replicationServiceTracker = new ServiceTracker, ReplicationService>(context, ReplicationService.class.getName(), null); replicationServiceTracker.open(); + replicableServiceTracker = new ServiceTracker, Replicable>(context, Replicable.class.getName(), null); + replicableServiceTracker.open(); } protected ReplicationService getReplicationService() { @@ -91,7 +97,7 @@ public class ReplicationServlet extends SailingServerHttpServlet { final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(countingOutputStream); ObjectOutputStream oos = new ObjectOutputStream(gzipOutputStream); try { - getService().serializeForInitialReplication(oos); + getReplicable().serializeForInitialReplication(oos); gzipOutputStream.finish(); } catch (Exception e) { logger.info("Error trying to serialize initial load for replication: "+e.getMessage()); @@ -107,6 +113,10 @@ public class ReplicationServlet extends SailingServerHttpServlet { } } + private Replicable getReplicable() { + return replicableServiceTracker.getService(); + } + private void deregisterClientWithReplicationService(HttpServletRequest req, HttpServletResponse resp) throws IOException { ReplicaDescriptor replica = getReplicaDescriptor(req); getReplicationService().unregisterReplica(replica); diff --git a/java/com.sap.sse/META-INF/MANIFEST.MF b/java/com.sap.sse/META-INF/MANIFEST.MF index 58d0b31497b..ea720660f63 100755 --- a/java/com.sap.sse/META-INF/MANIFEST.MF +++ b/java/com.sap.sse/META-INF/MANIFEST.MF @@ -6,4 +6,5 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.sap.sse, + com.sap.sse.util, com.sap.sse.util.impl diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/InvalidDateException.java b/java/com.sap.sse/src/com/sap/sse/InvalidDateException.java similarity index 83% rename from java/com.sap.sailing.domain/src/com/sap/sailing/util/InvalidDateException.java rename to java/com.sap.sse/src/com/sap/sse/InvalidDateException.java index 6c04cca7c3f..8675d7411a7 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/InvalidDateException.java +++ b/java/com.sap.sse/src/com/sap/sse/InvalidDateException.java @@ -1,4 +1,4 @@ -package com.sap.sailing.util; +package com.sap.sse; public class InvalidDateException extends Exception { private static final long serialVersionUID = 1144913537358071746L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/DateParser.java b/java/com.sap.sse/src/com/sap/sse/util/DateParser.java similarity index 96% rename from java/com.sap.sailing.domain/src/com/sap/sailing/util/DateParser.java rename to java/com.sap.sse/src/com/sap/sse/util/DateParser.java index 72217d1e3a9..7a535571333 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/DateParser.java +++ b/java/com.sap.sse/src/com/sap/sse/util/DateParser.java @@ -2,7 +2,7 @@ // $Id: DateParser.java,v 1.5 2005/05/14 15:53:00 dbarashev Exp $ // (c) COPYRIGHT MIT, INRIA and Keio, 2000. // Please first read the full copyright statement in file COPYRIGHT.html -package com.sap.sailing.util; +package com.sap.sse.util; import java.util.Calendar; import java.util.Date; @@ -12,12 +12,14 @@ import java.util.SimpleTimeZone; import java.util.StringTokenizer; import java.util.TimeZone; +import com.sap.sse.InvalidDateException; + /** * Date parser for ISO 8601 format * http://www.w3.org/TR/1998/NOTE-datetime-19980827 * * @version $Revision: 1.5 $ - * @author BenoûÕ Mah(bmahe@w3.org) + * @author Beno�� Mah(bmahe@w3.org) */ public class DateParser { From 353342ecbf1100f9b4240497e4d269b1d9404adb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 00:52:47 +0100 Subject: [PATCH 016/113] moving IsManagedByCache to com.sap.sse.common solves the "inconsistent hierarchy" issue in android.shared --- .../sap/sailing/domain/base/BoatClass.java | 2 +- .../sap/sailing/domain/base/Competitor.java | 2 +- .../sap/sailing/domain/base/CourseArea.java | 2 +- .../src/com/sap/sailing/domain/base/Mark.java | 2 +- .../sap/sailing/domain/base/Nationality.java | 2 +- .../com/sap/sailing/domain/base/Waypoint.java | 2 +- .../DeviceConfigurationMatcher.java | 2 +- .../impl/DeviceConfigurationMatcherMulti.java | 2 +- .../DeviceConfigurationMatcherSingle.java | 2 +- .../domain/base/impl/CourseAreaImpl.java | 2 +- .../domain/base/impl/NationalityImpl.java | 2 +- .../tracking/RegisterCompetitorEvent.java | 2 +- ...utStreamResolvingAgainstDomainFactory.java | 2 +- .../leaderboard/impl/DefaultFleetImpl.java | 2 +- .../DelayedLeaderboardCorrectionsImpl.java | 2 +- .../DummyMarkPassingWithTimePointOnly.java | 2 +- .../com/sap/sse/common}/IsManagedByCache.java | 2 +- ...bjectInputStreamResolvingAgainstCache.java | 2 +- .../com.sap.sailing.android.shared/.classpath | 28 +++++++++---------- .../com.sap.sailing.android.shared/lint.xml | 0 .../app/domain/coursedesign/Located.java | 2 +- .../coursedesign/PositionedMarkImpl.java | 4 --- 22 files changed, 33 insertions(+), 37 deletions(-) rename java/{com.sap.sse/src/com/sap/sse => com.sap.sse.common/src/com/sap/sse/common}/IsManagedByCache.java (93%) mode change 100644 => 100755 mobile/com.sap.sailing.android.shared/lint.xml diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java index 692b86d9333..890293a783b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/BoatClass.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.BoatHullType; import com.sap.sailing.domain.common.Distance; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.TimePoint; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java index e6eb47e349e..011f3ccc54a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Competitor.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Color; -import com.sap.sse.IsManagedByCache; import com.sap.sse.datamining.shared.annotations.Connector; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java index d767feee76c..6610d60fbe6 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CourseArea.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base; import java.util.UUID; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java index 4d8ef66dbd5..017d849983a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Mark.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.MarkType; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.WithID; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java index 57cce510623..52d1abae3d5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Nationality.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.CountryCode; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.datamining.shared.annotations.Dimension; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java index a273c785f1f..000b5c48047 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/Waypoint.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.PassingInstruction; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; import com.sap.sse.common.WithID; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java index 4e99f0b4955..c5f651af9f7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java @@ -5,7 +5,7 @@ import java.io.Serializable; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMapImpl; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** *

diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java index 2f59b236842..aa5417db52f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherMulti.java @@ -9,7 +9,7 @@ import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * Matches a set of {@link DeviceConfigurationIdentifier}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java index 96777ca2827..3abe842517e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMatcherSingle.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier; import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher; import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * Matches a single {@link DeviceConfigurationIdentifier}. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java index 5b9d785f134..217dc90c051 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseAreaImpl.java @@ -4,7 +4,7 @@ import java.util.UUID; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.SharedDomainFactory; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.impl.NamedImpl; public class CourseAreaImpl extends NamedImpl implements CourseArea { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java index 9aec129e558..fdcc824f639 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java @@ -6,7 +6,7 @@ import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.common.CountryCode; import com.sap.sailing.domain.common.CountryCodeFactory; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; public class NationalityImpl implements Nationality { private static final long serialVersionUID = 238906193483424259L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java index 77136498dda..04c97190435 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/RegisterCompetitorEvent.java @@ -4,7 +4,7 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.Revokable; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * Register a competitor for that race using the {@link RaceLog} in racelog-tracked races. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java index 3866e7deac6..f99cefceae6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java @@ -5,7 +5,7 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectStreamClass; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java index 8dcb929074d..c063cf948d1 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.leaderboard.impl; import com.sap.sailing.domain.base.SharedDomainFactory; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; public class DefaultFleetImpl extends FleetImpl implements IsManagedByCache { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java index a1305d42124..db43fde2b16 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelayedLeaderboardCorrectionsImpl.java @@ -22,7 +22,7 @@ import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * Keeps a record of carried points and score corrections to be applied, keyed by the competitor names to which they diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java index d35aff7423e..1d465adb17e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DummyMarkPassingWithTimePointOnly.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.base.Team; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.TimePoint; public class DummyMarkPassingWithTimePointOnly implements MarkPassing { diff --git a/java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java b/java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java similarity index 93% rename from java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java rename to java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java index 471d24559b2..f37bede464d 100644 --- a/java/com.sap.sse/src/com/sap/sse/IsManagedByCache.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java @@ -1,4 +1,4 @@ -package com.sap.sse; +package com.sap.sse.common; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java index b289fa7edeb..c559cbd840b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java +++ b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -6,7 +6,7 @@ import java.io.ObjectInputStream; import java.io.ObjectStreamClass; import com.sap.sailing.server.replication.Replicable; -import com.sap.sse.IsManagedByCache; +import com.sap.sse.common.IsManagedByCache; /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed diff --git a/mobile/com.sap.sailing.android.shared/.classpath b/mobile/com.sap.sailing.android.shared/.classpath index 4009c94c5e6..e58b9c0308a 100644 --- a/mobile/com.sap.sailing.android.shared/.classpath +++ b/mobile/com.sap.sailing.android.shared/.classpath @@ -1,14 +1,14 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/mobile/com.sap.sailing.android.shared/lint.xml b/mobile/com.sap.sailing.android.shared/lint.xml old mode 100644 new mode 100755 diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/Located.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/Located.java index 866b2b85273..85e69d4e16c 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/Located.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/Located.java @@ -5,7 +5,7 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.tracking.Positioned; -public interface Located extends Positioned{ +public interface Located extends Positioned { Bearing getBearingFrom(Position other); Distance getDistanceFromPosition(Position other); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/PositionedMarkImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/PositionedMarkImpl.java index c3af8f5849a..48239af21e5 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/PositionedMarkImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/coursedesign/PositionedMarkImpl.java @@ -9,10 +9,6 @@ import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; public class PositionedMarkImpl extends MarkImpl implements PositionedMark { - - /** - * - */ private static final long serialVersionUID = -7903960088124343841L; private Position position; From cd44c2f5f69d71b2dc630d0f49d154068d601491 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 00:59:53 +0100 Subject: [PATCH 017/113] working on the last generics compile error regarding the constructor call to ClientServerOperationPair --- .../test/OperationalTransformationTest.java | 6 +++--- .../ClientServerOperationPair.java | 2 +- .../OperationalTransformer.java | 6 +++--- .../sse/operationaltransformation/PeerImpl.java | 16 ++++++++-------- .../operationaltransformation/Transformer.java | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java index b6da96b44bd..797eaaa953a 100755 --- a/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java +++ b/java/com.sap.sse.operationaltransformation.test/src/com/sap/sse/operationaltransformation/test/OperationalTransformationTest.java @@ -53,9 +53,9 @@ public class OperationalTransformationTest { } } - public static class StringInsertTransformer implements Transformer { + public static class StringInsertTransformer implements Transformer { @Override - public ClientServerOperationPair transform(StringInsertOperation clientOp, StringInsertOperation serverOp) { + public ClientServerOperationPair transform(StringInsertOperation clientOp, StringInsertOperation serverOp) { final StringInsertOperation resultClientOp; final StringInsertOperation resultServerOp; if (clientOp == null || serverOp == null) { @@ -68,7 +68,7 @@ public class OperationalTransformationTest { resultClientOp = clientOp; resultServerOp = new StringInsertOperation(serverOp.getPos()+clientOp.getS().length(), serverOp.getS()); } - return new ClientServerOperationPair(resultClientOp, resultServerOp); + return new ClientServerOperationPair(resultClientOp, resultServerOp); } } diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java index e3cb158947a..fa9182835ac 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java @@ -1,6 +1,6 @@ package com.sap.sse.operationaltransformation; -public class ClientServerOperationPair> { +public class ClientServerOperationPair> { private O clientOp; private O serverOp; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java index 74099633359..8544c96b594 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java @@ -9,10 +9,10 @@ package com.sap.sse.operationaltransformation; * @param * @param */ -public class OperationalTransformer> implements Transformer { +public class OperationalTransformer> implements Transformer { @Override - public ClientServerOperationPair transform(O clientOp, O serverOp) { - ClientServerOperationPair result = new ClientServerOperationPair( + public ClientServerOperationPair transform(O clientOp, O serverOp) { + ClientServerOperationPair result = new ClientServerOperationPair( clientOp == null ? null : clientOp.transformClientOp(serverOp), serverOp == null ? null : serverOp.transformServerOp(clientOp)); return result; diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java index 715dcc0a432..d5211d5ff27 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java @@ -53,21 +53,21 @@ public class PeerImpl, S> implements Peer { */ private final Map, Integer> numberOfMergedOperations = new HashMap, Integer>(); - private final Transformer transformer; + private final Transformer transformer; /** * The background task handler which sends out the asynchronous updates to the peers. */ private final ExecutorService merger; - public PeerImpl(Transformer transformer, S initialState, Role role) { + public PeerImpl(Transformer transformer, S initialState, Role role) { this.transformer = transformer; currentState = initialState; this.role = role; this.merger = Executors.newSingleThreadExecutor(); } - public PeerImpl(String name, Transformer transformer, S initialState, Role role) { + public PeerImpl(String name, Transformer transformer, S initialState, Role role) { this(transformer, initialState, role); this.name = name; } @@ -77,7 +77,7 @@ public class PeerImpl, S> implements Peer { * the two-way link between client and server peers. The initial state is taken from * the server. */ - public PeerImpl(Transformer transformer, Peer server) { + public PeerImpl(Transformer transformer, Peer server) { this.transformer = transformer; S initialState = server.addPeer(this); currentState = initialState; @@ -91,7 +91,7 @@ public class PeerImpl, S> implements Peer { * server peer, establishing the two-way link between client and * server peers. The initial state is taken from the server. */ - public PeerImpl(String name, Transformer transformer, Peer server) { + public PeerImpl(String name, Transformer transformer, Peer server) { this(transformer, server); this.name = name; } @@ -101,7 +101,7 @@ public class PeerImpl, S> implements Peer { merger.shutdown(); } - private Transformer getTransformer() { + private Transformer getTransformer() { return transformer; } @@ -154,7 +154,7 @@ public class PeerImpl, S> implements Peer { for (O unconfirmedOperation : unmergedOperationsForSource .getUnmergedOperations(numberOfOperationsSourceHasMergedFromThis)) { if (role == Role.SERVER) { - final ClientServerOperationPair pair; + final ClientServerOperationPair pair; if (transformedOp == null || unconfirmedOperation == null) { pair = new ClientServerOperationPair<>(transformedOp, unconfirmedOperation); } else { @@ -163,7 +163,7 @@ public class PeerImpl, S> implements Peer { transformedOp = pair.getClientOp(); unmergedOperationsForSource.updateWithTransformed(localOpNumber, pair.getServerOp()); } else { - final ClientServerOperationPair pair; + final ClientServerOperationPair pair; if (transformedOp == null || unconfirmedOperation == null) { pair = new ClientServerOperationPair<>(unconfirmedOperation, transformedOp); } else { diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java index 764345898ec..331de2502b8 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java @@ -1,6 +1,6 @@ package com.sap.sse.operationaltransformation; -public interface Transformer> { +public interface Transformer> { /** * Takes an operation from the client and an operation from the server, both based on the same state. The * complementary pair of operations is computed such that if the client applies the server operation returned, and @@ -15,5 +15,5 @@ public interface Transformer> { * @param serverOp * operation that was executed on the SERVER; never called with null */ - ClientServerOperationPair transform(O clientOp, O serverOp); + ClientServerOperationPair transform(O clientOp, O serverOp); } From 61d24d5b1d51d269af81d14864387ef197e00c98 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 01:06:55 +0100 Subject: [PATCH 018/113] fixed typing of ClientServerOperationPair --- .../sse/operationaltransformation/OperationalTransformer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java index 8544c96b594..89cf9279758 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java @@ -12,7 +12,7 @@ package com.sap.sse.operationaltransformation; public class OperationalTransformer> implements Transformer { @Override public ClientServerOperationPair transform(O clientOp, O serverOp) { - ClientServerOperationPair result = new ClientServerOperationPair( + ClientServerOperationPair result = new ClientServerOperationPair( clientOp == null ? null : clientOp.transformClientOp(serverOp), serverOp == null ? null : serverOp.transformServerOp(clientOp)); return result; From 8a5c7f0ea416436578f7464aa5a57d2109e95a81 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 01:49:37 +0100 Subject: [PATCH 019/113] green workspace again; let's see if it builds with maven... --- .../sailing/server/RacingEventServiceOperation.java | 2 +- .../AbstractDeviceConfigurationOperation.java | 6 ++---- .../AbstractMediaTrackOperation.java | 6 ++---- .../AbstractRaceLogOperation.java | 4 ++-- .../AddColumnToLeaderboard.java | 4 ++-- .../operationaltransformation/AddColumnToSeries.java | 4 ++-- .../operationaltransformation/AddCourseArea.java | 4 ++-- .../operationaltransformation/AddDefaultRegatta.java | 4 ++-- .../AddLeaderboardGroupToEvent.java | 4 ++-- .../operationaltransformation/AddRaceDefinition.java | 4 ++-- .../AddRemoteSailingServerReference.java | 4 ++-- .../operationaltransformation/AddSpecificRegatta.java | 4 ++-- .../server/operationaltransformation/AddWaypoint.java | 4 ++-- .../AllowCompetitorResetToDefaults.java | 4 ++-- .../ConnectTrackedRaceToLeaderboardColumn.java | 11 +++++------ .../server/operationaltransformation/CreateEvent.java | 4 ++-- .../CreateFlexibleLeaderboard.java | 4 ++-- .../CreateLeaderboardGroup.java | 4 ++-- .../CreateOrUpdateDataImportProgress.java | 4 ++-- .../CreatePersistentCompetitor.java | 4 ++-- .../CreateRegattaLeaderboard.java | 4 ++-- .../operationaltransformation/CreateTrackedRace.java | 4 ++-- .../operationaltransformation/DataImportFailed.java | 4 ++-- .../DisconnectLeaderboardColumnFromTrackedRace.java | 4 ++-- .../ImportMasterDataOperation.java | 4 ++-- .../MoveColumnInSeriesDown.java | 4 ++-- .../MoveColumnInSeriesUp.java | 4 ++-- .../MoveLeaderboardColumnDown.java | 4 ++-- .../MoveLeaderboardColumnUp.java | 4 ++-- .../RecordCompetitorGPSFix.java | 4 ++-- .../operationaltransformation/RecordMarkGPSFix.java | 4 ++-- .../operationaltransformation/RecordWindFix.java | 4 ++-- .../RemoveAndUntrackRace.java | 4 ++-- .../RemoveColumnFromSeries.java | 4 ++-- .../operationaltransformation/RemoveCourseArea.java | 4 ++-- .../server/operationaltransformation/RemoveEvent.java | 4 ++-- .../operationaltransformation/RemoveLeaderboard.java | 4 ++-- .../RemoveLeaderboardColumn.java | 4 ++-- .../RemoveLeaderboardGroup.java | 4 ++-- .../RemoveLeaderboardGroupFromEvent.java | 4 ++-- .../operationaltransformation/RemoveRegatta.java | 4 ++-- .../RemoveRemoteSailingServerReference.java | 4 ++-- .../operationaltransformation/RemoveSeries.java | 4 ++-- .../operationaltransformation/RemoveWaypoint.java | 4 ++-- .../operationaltransformation/RemoveWindFix.java | 4 ++-- .../server/operationaltransformation/RenameEvent.java | 4 ++-- .../operationaltransformation/RenameLeaderboard.java | 4 ++-- .../RenameLeaderboardColumn.java | 4 ++-- .../RenameLeaderboardGroup.java | 4 ++-- .../SetDataImportDeleteProgressFromMapTimer.java | 4 ++-- .../SetRaceIsKnownToStartUpwind.java | 4 ++-- .../SetSuppressedFlagForCompetitorInLeaderboard.java | 4 ++-- .../SetWindSourcesToExclude.java | 4 ++-- .../operationaltransformation/StopTrackingRace.java | 4 ++-- .../StopTrackingRegatta.java | 4 ++-- .../operationaltransformation/TrackRegatta.java | 4 ++-- .../operationaltransformation/UpdateCompetitor.java | 4 ++-- .../UpdateCompetitorDisplayNameInLeaderboard.java | 4 ++-- .../server/operationaltransformation/UpdateEvent.java | 4 ++-- .../operationaltransformation/UpdateIsMedalRace.java | 4 ++-- .../operationaltransformation/UpdateLeaderboard.java | 4 ++-- .../UpdateLeaderboardCarryValue.java | 4 ++-- .../UpdateLeaderboardColumnFactor.java | 4 ++-- .../UpdateLeaderboardGroup.java | 4 ++-- .../UpdateLeaderboardMaxPointsReason.java | 4 ++-- .../UpdateLeaderboardScoreCorrection.java | 4 ++-- .../UpdateLeaderboardScoreCorrectionMetadata.java | 4 ++-- .../operationaltransformation/UpdateMarkPassings.java | 4 ++-- .../UpdateRaceDelayToLive.java | 4 ++-- .../operationaltransformation/UpdateRaceTimes.java | 4 ++-- .../operationaltransformation/UpdateSeries.java | 4 ++-- .../UpdateSpecificRegatta.java | 4 ++-- .../UpdateTrackedRaceStatus.java | 4 ++-- .../UpdateWindAveragingTime.java | 4 ++-- .../UpdateWindSourcesToExclude.java | 4 ++-- .../OperationWithTransformationSupport.java | 4 ++-- 76 files changed, 154 insertions(+), 159 deletions(-) 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 2392a51a188..5b82e8d16bb 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 @@ -15,7 +15,7 @@ import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; public interface RacingEventServiceOperation extends OperationWithResult, -OperationWithTransformationSupport>, Serializable { +OperationWithTransformationSupport>, Serializable { /** * Assumes this is the "server" operation and transforms the client's removeColumnFromLeaderboardClientOp according to this * operation. The default implementation will probably pass on the untransformed client operation. However, if this diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java index aa847b25b9d..7ab38fb25e2 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractDeviceConfigurationOperation.java @@ -14,14 +14,12 @@ public abstract class AbstractDeviceConfigurationOperation extends AbstractRacin } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } - - } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java index d22910488fa..b4f780f66b7 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractMediaTrackOperation.java @@ -14,14 +14,12 @@ public abstract class AbstractMediaTrackOperation extends AbstractRacingEventSer } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { - // TODO Auto-generated method stub + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { - // TODO Auto-generated method stub + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java index 3ad69fce237..670c10b6810 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AbstractRaceLogOperation.java @@ -26,12 +26,12 @@ public abstract class AbstractRaceLogOperation extends AbstractRacingEventSer abstract protected RaceColumn getRaceColumn(RacingEventService toState); @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } } \ No newline at end of file diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java index 60d88e5bc85..800c918a757 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToLeaderboard.java @@ -26,12 +26,12 @@ public class AddColumnToLeaderboard extends AbstractLeaderboardColumnOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddColumnToLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddColumnToLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java index f86cbae648c..353061d9502 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddColumnToSeries.java @@ -27,13 +27,13 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java index 8d61a5bd21f..ddc4adffed4 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddCourseArea.java @@ -35,14 +35,14 @@ public class AddCourseArea extends AbstractRacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java index dc7ce6de59f..9c1635df79a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddDefaultRegatta.java @@ -14,13 +14,13 @@ public class AddDefaultRegatta extends AbstractAddRegattaOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java index f53094b1d5d..0a356b021f9 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java @@ -58,13 +58,13 @@ public class AddLeaderboardGroupToEvent extends AbstractRacingEventServiceOperat } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java index 197fb27deaa..5a077b9907d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRaceDefinition.java @@ -17,13 +17,13 @@ public class AddRaceDefinition extends AbstractRacingEventServiceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java index 4fd16b8018d..06a534fcd40 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddRemoteSailingServerReference.java @@ -31,14 +31,14 @@ public class AddRemoteSailingServerReference extends AbstractRacingEventServiceO @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java index 1a60c674916..e8437797074 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java @@ -73,13 +73,13 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java index 46e1f031b23..ba119a79e92 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddWaypoint.java @@ -54,13 +54,13 @@ public class AddWaypoint extends WaypointOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java index 99d1b7b125b..9c71d82dc2b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AllowCompetitorResetToDefaults.java @@ -32,13 +32,13 @@ public class AllowCompetitorResetToDefaults extends AbstractRacingEventServiceOp } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java index 566fcff827b..fbd43a1b1de 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ConnectTrackedRaceToLeaderboardColumn.java @@ -33,15 +33,15 @@ public class ConnectTrackedRaceToLeaderboardColumn extends AbstractLeaderboardCo this.fleetName = fleetName; } + @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { - // TODO Auto-generated method stub + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } + @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { - // TODO Auto-generated method stub + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } @@ -71,5 +71,4 @@ public class ConnectTrackedRaceToLeaderboardColumn extends AbstractLeaderboardCo } return success; } - -} +} \ No newline at end of file diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java index be64633c32b..f69739ad775 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java @@ -46,13 +46,13 @@ public class CreateEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java index 20001f19934..76647864e42 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java @@ -36,12 +36,12 @@ public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddFlexibleLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddFlexibleLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java index 9c1c43548e4..c9aa898afb9 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateLeaderboardGroup.java @@ -31,13 +31,13 @@ public class CreateLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java index 9d481c5a6c7..9c0e037a209 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateOrUpdateDataImportProgress.java @@ -30,12 +30,12 @@ public class CreateOrUpdateDataImportProgress extends AbstractRacingEventService } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java index 4b58d681c51..e9f2d5ff00c 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreatePersistentCompetitor.java @@ -35,12 +35,12 @@ public class CreatePersistentCompetitor extends AbstractRacingEventServiceOperat } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformCreatePersistentCompetitorClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformCreatePersistentCompetitorServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java index 18844322b69..3be28fb14e6 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java @@ -34,12 +34,12 @@ public class CreateRegattaLeaderboard extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformAddRegattaLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformAddRegattaLeaderboardServerOp(this); } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java index 76e2bc7b12c..5e7bce313dd 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateTrackedRace.java @@ -62,13 +62,13 @@ public class CreateTrackedRace extends AbstractRaceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java index 65089627c24..8974fb76cb9 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DataImportFailed.java @@ -23,12 +23,12 @@ public class DataImportFailed extends AbstractRacingEventServiceOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java index 49672dc2144..7d3b8531e27 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/DisconnectLeaderboardColumnFromTrackedRace.java @@ -33,13 +33,13 @@ public class DisconnectLeaderboardColumnFromTrackedRace extends AbstractLeaderbo } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 554bd75978d..56e2a3b84ca 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -402,13 +402,13 @@ public class ImportMasterDataOperation extends } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java index 8a56acebac7..748ac9071a8 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesDown.java @@ -25,13 +25,13 @@ public class MoveColumnInSeriesDown extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java index b54cc9cd90d..723c49448bb 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveColumnInSeriesUp.java @@ -25,13 +25,13 @@ public class MoveColumnInSeriesUp extends AbstractColumnInSeriesOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java index 4413bbb6fa5..454a4870ba3 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnDown.java @@ -18,12 +18,12 @@ public class MoveLeaderboardColumnDown extends AbstractLeaderboardColumnOperatio } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformMoveLeaderboardColumnDownClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformMoveLeaderboardColumnDownServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java index 0fb92d1deb5..45c2a842a56 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/MoveLeaderboardColumnUp.java @@ -19,12 +19,12 @@ public class MoveLeaderboardColumnUp extends AbstractLeaderboardColumnOperation< @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformMoveLeaderboardColumnUpClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformMoveLeaderboardColumnUpServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java index 8eaf0831741..d36e67c31bd 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java @@ -38,13 +38,13 @@ public class RecordCompetitorGPSFix extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java index 7a7554c35c5..fc9144eed29 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordMarkGPSFix.java @@ -25,13 +25,13 @@ public abstract class RecordMarkGPSFix extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java index 7d54c5d6a4c..ce251c84562 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordWindFix.java @@ -22,13 +22,13 @@ public class RecordWindFix extends AbstractWindOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java index 459eef4a101..21066f7de99 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveAndUntrackRace.java @@ -16,13 +16,13 @@ public class RemoveAndUntrackRace extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java index 43f2600d147..6837c6c2640 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveColumnFromSeries.java @@ -25,13 +25,13 @@ public class RemoveColumnFromSeries extends AbstractColumnInSeriesOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java index 96b86810549..78059b7bcce 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java @@ -32,14 +32,14 @@ public class RemoveCourseArea extends AbstractRacingEventServiceOperation @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java index 67ad51be9f2..c86b1f8a2cb 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveEvent.java @@ -13,13 +13,13 @@ public class RemoveEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java index 0673581d206..35e44514a44 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboard.java @@ -11,12 +11,12 @@ public class RemoveLeaderboard extends AbstractLeaderboardOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRemoveLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRemoveLeaderboardServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java index 44d555c3b1c..52451f00e7c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardColumn.java @@ -17,12 +17,12 @@ public class RemoveLeaderboardColumn extends AbstractLeaderboardColumnOperation< } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRemoveColumnFromLeaderboardClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRemoveColumnFromLeaderboardServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java index bdeb5933399..12a09d919dd 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroup.java @@ -11,13 +11,13 @@ public class RemoveLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java index 97e87e7295a..12e01cae48c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveLeaderboardGroupFromEvent.java @@ -47,13 +47,13 @@ public class RemoveLeaderboardGroupFromEvent extends AbstractRacingEventServiceO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java index 66be3fad898..53da9a0cb65 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRegatta.java @@ -29,13 +29,13 @@ public class RemoveRegatta extends AbstractRacingEventServiceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java index c500d12ed2d..f111bc0ca10 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveRemoteSailingServerReference.java @@ -27,14 +27,14 @@ public class RemoveRemoteSailingServerReference extends AbstractRacingEventServi @Override public RacingEventServiceOperation transformClientOp( - RacingEventServiceOperation serverOp) { + RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override public RacingEventServiceOperation transformServerOp( - RacingEventServiceOperation clientOp) { + RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java index 0b38f30aa6d..ec0bd4f2b1c 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveSeries.java @@ -37,13 +37,13 @@ public class RemoveSeries extends AbstractRacingEventServiceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java index a4bc21ac2f3..23d2b4be600 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWaypoint.java @@ -44,13 +44,13 @@ public class RemoveWaypoint extends WaypointOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java index ece70ef207f..e1d7437be1f 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveWindFix.java @@ -22,13 +22,13 @@ public class RemoveWindFix extends AbstractWindOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java index a0f2451ef3d..4bc0a560e25 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameEvent.java @@ -15,13 +15,13 @@ public class RenameEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java index 444550985cc..b57e7dbe714 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboard.java @@ -22,13 +22,13 @@ public class RenameLeaderboard extends AbstractLeaderboardOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java index 6671c824fb1..096ca90c133 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardColumn.java @@ -20,13 +20,13 @@ public class RenameLeaderboardColumn extends AbstractLeaderboardColumnOperation< } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return serverOp.transformRenameLeaderboardColumnClientOp(this); } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return clientOp.transformRenameLeaderboardColumnServerOp(this); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java index c194b930ec0..3e8502ec811 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RenameLeaderboardGroup.java @@ -22,13 +22,13 @@ public class RenameLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java index 6834910f585..c151f2c6104 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetDataImportDeleteProgressFromMapTimer.java @@ -21,12 +21,12 @@ public class SetDataImportDeleteProgressFromMapTimer extends AbstractRacingEvent } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java index be7509d5fa0..b9f6a1062bc 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetRaceIsKnownToStartUpwind.java @@ -15,13 +15,13 @@ public class SetRaceIsKnownToStartUpwind extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java index 911fad8197b..e7b0f707ead 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetSuppressedFlagForCompetitorInLeaderboard.java @@ -26,13 +26,13 @@ public class SetSuppressedFlagForCompetitorInLeaderboard extends AbstractLeaderb } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java index feabbba4951..b0f606dbbb1 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/SetWindSourcesToExclude.java @@ -16,13 +16,13 @@ public class SetWindSourcesToExclude extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java index 9471784e0e7..f2375e87c89 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRace.java @@ -26,13 +26,13 @@ public class StopTrackingRace extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java index 4767c3c5652..359ce916824 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/StopTrackingRegatta.java @@ -27,13 +27,13 @@ public class StopTrackingRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java index 89a8d8b003e..177661a1228 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/TrackRegatta.java @@ -16,13 +16,13 @@ public class TrackRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java index 807b667210c..4938413b5bb 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitor.java @@ -35,13 +35,13 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java index 2e0e4181261..71197badbea 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateCompetitorDisplayNameInLeaderboard.java @@ -18,13 +18,13 @@ public class UpdateCompetitorDisplayNameInLeaderboard extends AbstractLeaderboar } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java index d952c9414bf..4b839e6a943 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEvent.java @@ -41,13 +41,13 @@ public class UpdateEvent extends AbstractEventOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java index 92d1dece4de..71a0b049f53 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateIsMedalRace.java @@ -15,13 +15,13 @@ public class UpdateIsMedalRace extends AbstractLeaderboardColumnOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java index 2048e6d409e..ae0716785ad 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboard.java @@ -27,13 +27,13 @@ public class UpdateLeaderboard extends AbstractLeaderboardOperation } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java index da95a587540..16163d06a25 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardCarryValue.java @@ -17,13 +17,13 @@ public class UpdateLeaderboardCarryValue extends AbstractLeaderboardOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java index eefd165c768..48c7fc8e026 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardColumnFactor.java @@ -20,14 +20,14 @@ public class UpdateLeaderboardColumnFactor extends AbstractLeaderboardColumnOper } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java index 9f9810a178b..b74924ec312 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardGroup.java @@ -27,13 +27,13 @@ public class UpdateLeaderboardGroup extends AbstractLeaderboardGroupOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java index c5bd4c78ec8..ecb91f059ce 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardMaxPointsReason.java @@ -26,13 +26,13 @@ public class UpdateLeaderboardMaxPointsReason extends AbstractLeaderboardColumnO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java index 49780420bac..ac34e5c1123 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrection.java @@ -27,13 +27,13 @@ public class UpdateLeaderboardScoreCorrection extends AbstractLeaderboardColumnO } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation> serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation> clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java index 911f523d137..30c52c4e9f8 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateLeaderboardScoreCorrectionMetadata.java @@ -22,13 +22,13 @@ public class UpdateLeaderboardScoreCorrectionMetadata extends AbstractLeaderboar } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java index c2b6415df60..8d1027aa98a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateMarkPassings.java @@ -27,13 +27,13 @@ public class UpdateMarkPassings extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java index b53cf6f0f01..afc4b7de025 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceDelayToLive.java @@ -22,13 +22,13 @@ public class UpdateRaceDelayToLive extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java index ac1aa832286..ac011175e00 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java @@ -30,13 +30,13 @@ public class UpdateRaceTimes extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java index b7ae5a85977..b3e5f88ef34 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java @@ -77,13 +77,13 @@ public class UpdateSeries extends AbstractSeriesOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java index a70b77d34ed..42ac890ca57 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java @@ -31,12 +31,12 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java index 1c1c4dfbc20..339b7baa51e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateTrackedRaceStatus.java @@ -23,13 +23,13 @@ public class UpdateTrackedRaceStatus extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java index 1872455780f..e2db3f15f88 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindAveragingTime.java @@ -22,13 +22,13 @@ public class UpdateWindAveragingTime extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java index 15ad291fcef..d39402b4f99 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateWindSourcesToExclude.java @@ -21,13 +21,13 @@ public class UpdateWindSourcesToExclude extends AbstractRaceOperation { } @Override - public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub return null; } @Override - public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { // TODO Auto-generated method stub return null; } diff --git a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java index 3b27583d49b..1ee904aba07 100755 --- a/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java @@ -16,7 +16,7 @@ public interface OperationWithTransformationSupportthis operation along serverOp */ - OperationWithTransformationSupport transformClientOp(O serverOp); + O transformClientOp(O serverOp); /** * Implements the specific transformation rule for the implementing subclass for the set of possible peer operations @@ -25,5 +25,5 @@ public interface OperationWithTransformationSupportthis operation along clientOp */ - OperationWithTransformationSupport transformServerOp(O clientOp); + O transformServerOp(O clientOp); } From cf778e768e72ca6ec0146b5a9ece30bf988a3d57 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 01:55:05 +0100 Subject: [PATCH 020/113] register a Replicable with the Replicable interface in the OSGi service registry --- .../src/com/sap/sailing/server/impl/Activator.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java index d208806bdb8..f8b4372c6b6 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java @@ -27,6 +27,7 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceMXBean; import com.sap.sailing.server.racelog.tracking.CachedOsgiTypeBasedServiceFinderFactory; +import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sse.common.Util; @@ -67,6 +68,7 @@ public class Activator implements BundleActivator { // register the racing service in the OSGi registry racingEventService.setBundleContext(context); + context.registerService(Replicable.class.getName(), racingEventService, null); context.registerService(RacingEventService.class.getName(), racingEventService, null); context.registerService(RacingEventServiceWithTestSupport.class.getName(), racingEventService, null); From d24fce24be9e56f19901444bbe1154fa2be59681 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 02:02:10 +0100 Subject: [PATCH 021/113] renamed com.sap.sailing.server.replication packages to com.sap.sse.replication --- .../gwt/ui/test/SailingServiceImplMock.java | 8 ++++---- .../gwt/ui/server/SailingServiceImpl.java | 10 +++++----- .../test/AbstractServerReplicationTest.java | 18 +++++++++--------- .../test/ConnectionResetAndReconnectTest.java | 4 ++-- ...dLeaderboardCorrectionsReplicationTest.java | 4 ++-- ...itialLoadReplicationObjectIdentityTest.java | 4 ++-- .../replication/test/MediaReplicationTest.java | 8 +++++--- .../test/PrematureOperationReceiptTest.java | 4 ++-- .../test/RaceLogReplicationTest.java | 2 +- .../test/RemoteMessageStreamTest.java | 4 ++-- ...InstancesManagerLoggingPerformanceTest.java | 4 ++-- .../test/TrackRaceReplicationTest.java | 4 ++-- .../sap/sailing/server/RacingEventService.java | 2 +- .../server/RacingEventServiceOperation.java | 2 +- .../src/com/sap/sailing/server/Replicator.java | 2 +- .../com/sap/sailing/server/impl/Activator.java | 2 +- .../server/impl/RacingEventServiceImpl.java | 4 ++-- .../META-INF/MANIFEST.MF | 6 +++--- .../server/replication/impl/HasReplicable.java | 8 -------- .../OperationExecutionListener.java | 2 +- .../replication/OperationWithResult.java | 2 +- .../server/replication/Replicable.java | 2 +- .../server/replication/ReplicationFactory.java | 4 ++-- .../ReplicationMasterDescriptor.java | 4 ++-- .../server/replication/ReplicationService.java | 6 +++--- .../server/replication/impl/Activator.java | 4 ++-- .../server/replication/impl/HasReplicable.java | 8 ++++++++ ...ObjectInputStreamResolvingAgainstCache.java | 4 ++-- .../impl/RabbitInputStreamProvider.java | 2 +- .../replication/impl/RabbitOutputStream.java | 2 +- .../replication/impl/ReplicaDescriptor.java | 2 +- .../impl/ReplicationFactoryImpl.java | 6 +++--- .../impl/ReplicationInstancesManager.java | 6 +++--- .../impl/ReplicationMasterDescriptorImpl.java | 4 ++-- .../impl/ReplicationServiceImpl.java | 12 ++++++------ .../replication/impl/ReplicationServlet.java | 6 +++--- .../server/replication/impl/Replicator.java | 6 +++--- 37 files changed, 92 insertions(+), 90 deletions(-) delete mode 100755 java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/OperationExecutionListener.java (85%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/OperationWithResult.java (91%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/Replicable.java (97%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/ReplicationFactory.java (70%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/ReplicationMasterDescriptor.java (90%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/ReplicationService.java (91%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/Activator.java (97%) create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java (92%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/RabbitInputStreamProvider.java (98%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/RabbitOutputStream.java (99%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicaDescriptor.java (94%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicationFactoryImpl.java (68%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicationInstancesManager.java (94%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicationMasterDescriptorImpl.java (96%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicationServiceImpl.java (96%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/ReplicationServlet.java (95%) rename java/com.sap.sse.replication/src/com/sap/{sailing => sse}/server/replication/impl/Replicator.java (96%) diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index 29dca1d912e..8680118f960 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -35,11 +35,11 @@ import com.sap.sailing.gwt.ui.server.SailingServiceImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; -import com.sap.sailing.server.replication.Replicable; -import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.server.replication.impl.ReplicationInstancesManager; -import com.sap.sailing.server.replication.impl.ReplicationServiceImpl; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; +import com.sap.sse.server.replication.Replicable; +import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.server.replication.impl.ReplicationInstancesManager; +import com.sap.sse.server.replication.impl.ReplicationServiceImpl; public class SailingServiceImplMock extends SailingServiceImpl { private static final long serialVersionUID = 8564037671550730455L; 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 a442d9ed48a..fe0a578e1ef 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 @@ -381,11 +381,6 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCo import com.sap.sailing.server.operationaltransformation.UpdateRaceDelayToLive; import com.sap.sailing.server.operationaltransformation.UpdateSeries; import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta; -import com.sap.sailing.server.replication.OperationWithResult; -import com.sap.sailing.server.replication.ReplicationFactory; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.server.replication.impl.ReplicaDescriptor; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SailingSimulator; @@ -408,6 +403,11 @@ import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; +import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.server.replication.ReplicationFactory; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.server.replication.impl.ReplicaDescriptor; /** * The server side implementation of the RPC service. diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index a312e34138b..031a213a97e 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -37,17 +37,17 @@ import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.server.replication.impl.Activator; -import com.sap.sailing.server.replication.impl.RabbitOutputStream; -import com.sap.sailing.server.replication.impl.ReplicaDescriptor; -import com.sap.sailing.server.replication.impl.ReplicationInstancesManager; -import com.sap.sailing.server.replication.impl.ReplicationMasterDescriptorImpl; -import com.sap.sailing.server.replication.impl.ReplicationServiceImpl; -import com.sap.sailing.server.replication.impl.Replicator; import com.sap.sse.common.Util; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.server.replication.impl.Activator; +import com.sap.sse.server.replication.impl.RabbitOutputStream; +import com.sap.sse.server.replication.impl.ReplicaDescriptor; +import com.sap.sse.server.replication.impl.ReplicationInstancesManager; +import com.sap.sse.server.replication.impl.ReplicationMasterDescriptorImpl; +import com.sap.sse.server.replication.impl.ReplicationServiceImpl; +import com.sap.sse.server.replication.impl.Replicator; public abstract class AbstractServerReplicationTest { protected static final int SERVLET_PORT = 9990; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java index a1e5345f32c..cfacce1e465 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java @@ -22,11 +22,11 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.ShutdownSignalException; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.impl.ReplicationMasterDescriptorImpl; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.impl.ReplicationMasterDescriptorImpl; public class ConnectionResetAndReconnectTest extends AbstractServerReplicationTest { static final Logger logger = Logger.getLogger(ConnectionResetAndReconnectTest.class.getName()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java index 7ebb122508c..265dbda0d1e 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java @@ -40,11 +40,11 @@ import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.ReplicationService; public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServerReplicationTest { private static final Logger logger = Logger.getLogger(DelayedLeaderboardCorrectionsReplicationTest.class.getName()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index 53e6f316bb9..32ab7372a94 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -48,13 +48,13 @@ import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.AddDefaultRegatta; import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.impl.Replicator; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.impl.Replicator; public class InitialLoadReplicationObjectIdentityTest extends AbstractServerReplicationTest { private Util.Pair replicationDescriptorPair; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index 70080cf6c3f..5f646f47328 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java @@ -1,5 +1,10 @@ package com.sap.sailing.server.replication.test; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertThat; + import java.util.HashSet; import java.util.Set; @@ -14,9 +19,6 @@ import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; -import static org.junit.Assert.*; -import static org.hamcrest.core.Is.*; - public class MediaReplicationTest extends AbstractServerReplicationTest { private void waitSomeTime() throws InterruptedException { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index 383b5acfd72..464ee30f607 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -13,9 +13,9 @@ import com.sap.sailing.domain.leaderboard.impl.LowPoint; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.impl.Replicator; import com.sap.sse.common.Util; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.impl.Replicator; public class PrematureOperationReceiptTest extends AbstractServerReplicationTest { private Replicator> replicator; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java index 54a1aa1af5f..16e7256ac10 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java @@ -57,10 +57,10 @@ import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard; import com.sap.sailing.server.operationaltransformation.RenameLeaderboard; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; public class RaceLogReplicationTest extends AbstractServerReplicationTest { private static final String BOAT_CLASS_NAME_49er = "49er"; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java index 831eec665ab..f5073c947af 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java @@ -19,8 +19,8 @@ import org.junit.Test; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; -import com.sap.sailing.server.replication.impl.RabbitInputStreamProvider; -import com.sap.sailing.server.replication.impl.RabbitOutputStream; +import com.sap.sse.server.replication.impl.RabbitInputStreamProvider; +import com.sap.sse.server.replication.impl.RabbitOutputStream; /** * A number of tests for the {@link OutputStream} / {@link InputStream} implementation using an underlying RabbitMQ message queue. diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java index 96d942b81ce..7c10bdc4b80 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; -import com.sap.sailing.server.replication.impl.ReplicaDescriptor; -import com.sap.sailing.server.replication.impl.ReplicationInstancesManager; +import com.sap.sse.server.replication.impl.ReplicaDescriptor; +import com.sap.sse.server.replication.impl.ReplicationInstancesManager; public class ReplicationInstancesManagerLoggingPerformanceTest { private ReplicationInstancesManager replicationInstanceManager; 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 dc30f4115fe..9f1766b4992 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,10 +37,10 @@ import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; -import com.sap.sailing.server.replication.OperationExecutionListener; -import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.server.replication.OperationExecutionListener; +import com.sap.sse.server.replication.OperationWithResult; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { private TrackedRace masterTrackedRace; 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 316e597982f..e8997d429c6 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 @@ -63,13 +63,13 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.server.masterdata.DataImportLockWithProgress; -import com.sap.sailing.server.replication.Replicable; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.Searchable; +import com.sap.sse.server.replication.Replicable; /** * An OSGi service that can be used to track boat races using a TracTrac connector that pushes 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 5b82e8d16bb..5167174a2b0 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 @@ -11,8 +11,8 @@ import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; -import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; +import com.sap.sse.server.replication.OperationWithResult; public interface RacingEventServiceOperation extends OperationWithResult, OperationWithTransformationSupport>, Serializable { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java index 18eeb21e368..b7399175ce1 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java @@ -1,6 +1,6 @@ package com.sap.sailing.server; -import com.sap.sailing.server.replication.OperationExecutionListener; +import com.sap.sse.server.replication.OperationExecutionListener; public interface Replicator { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java index f8b4372c6b6..3e9ab0161ab 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java @@ -27,9 +27,9 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceMXBean; import com.sap.sailing.server.racelog.tracking.CachedOsgiTypeBasedServiceFinderFactory; -import com.sap.sailing.server.replication.Replicable; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sse.common.Util; +import com.sap.sse.server.replication.Replicable; public class Activator implements BundleActivator { private static final Logger logger = Logger.getLogger(Activator.class.getName()); 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 fc7c4a9662d..e53dd21808b 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 @@ -181,8 +181,6 @@ import com.sap.sailing.server.operationaltransformation.UpdateRaceTimes; import com.sap.sailing.server.operationaltransformation.UpdateTrackedRaceStatus; import com.sap.sailing.server.operationaltransformation.UpdateWindAveragingTime; import com.sap.sailing.server.operationaltransformation.UpdateWindSourcesToExclude; -import com.sap.sailing.server.replication.OperationExecutionListener; -import com.sap.sailing.server.replication.OperationWithResult; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; @@ -194,6 +192,8 @@ import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.ResultImpl; import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.server.replication.OperationExecutionListener; +import com.sap.sse.server.replication.OperationWithResult; public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport, RegattaListener, LeaderboardRegistry, Replicator { diff --git a/java/com.sap.sse.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF index e3342068bc0..ea04fc814b5 100644 --- a/java/com.sap.sse.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -3,12 +3,12 @@ Bundle-ManifestVersion: 2 Bundle-Name: Server Replication Bundle-SymbolicName: com.sap.sse.replication Bundle-Version: 1.0.0.qualifier -Bundle-Activator: com.sap.sailing.server.replication.impl.Activator +Bundle-Activator: com.sap.sse.server.replication.impl.Activator Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Export-Package: com.sap.sailing.server.replication, - com.sap.sailing.server.replication.impl +Export-Package: com.sap.sse.server.replication, + com.sap.sse.server.replication.impl Require-Bundle: com.sap.sse.common, com.sap.sse.operationaltransformation, com.sap.sse, diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java deleted file mode 100755 index 9ca17091f09..00000000000 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/HasReplicable.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sap.sailing.server.replication.impl; - -import com.sap.sailing.server.replication.OperationWithResult; -import com.sap.sailing.server.replication.Replicable; - -public interface HasReplicable> { - Replicable getReplicable(); -} diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java similarity index 85% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java index 46ae90251e7..887331e3e4e 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationExecutionListener.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; /** diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java similarity index 91% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java index aa6015813cf..a060fb5778e 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/OperationWithResult.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; import com.sap.sse.operationaltransformation.Operation; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java similarity index 97% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java index 838f52fb42d..0c53ee6842b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java similarity index 70% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java index 3026cf9ad82..1ea59cf7334 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java @@ -1,6 +1,6 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; -import com.sap.sailing.server.replication.impl.ReplicationFactoryImpl; +import com.sap.sse.server.replication.impl.ReplicationFactoryImpl; public interface ReplicationFactory { static ReplicationFactory INSTANCE = new ReplicationFactoryImpl(); diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java similarity index 90% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java index 4a8cc88e732..28491d5703a 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -8,7 +8,7 @@ import java.util.UUID; import com.rabbitmq.client.Channel; import com.rabbitmq.client.QueueingConsumer; -import com.sap.sailing.server.replication.impl.RabbitInputStreamProvider; +import com.sap.sse.server.replication.impl.RabbitInputStreamProvider; /** * Identifies a master server instance from which a replica can obtain an initial load and continuous updates. diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java similarity index 91% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java index a46081d8da4..f7c77a7d2ac 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.server.replication; import java.io.IOException; import java.net.ConnectException; @@ -6,8 +6,8 @@ import java.util.Map; import java.util.UUID; import com.rabbitmq.client.Channel; -import com.sap.sailing.server.replication.impl.ReplicaDescriptor; -import com.sap.sailing.server.replication.impl.ReplicationServlet; +import com.sap.sse.server.replication.impl.ReplicaDescriptor; +import com.sap.sse.server.replication.impl.ReplicationServlet; /** * A service that organizes a master server and its replicas. diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java similarity index 97% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java index a24b7401a45..afecbb0342b 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.util.logging.Logger; @@ -6,7 +6,7 @@ import java.util.logging.Logger; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; -import com.sap.sailing.server.replication.ReplicationService; +import com.sap.sse.server.replication.ReplicationService; /** * Initializes the replication sub-system. A hierarchy of parameter specifications is evaluated to configure this diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java new file mode 100755 index 00000000000..617acfd9533 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java @@ -0,0 +1,8 @@ +package com.sap.sse.server.replication.impl; + +import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.server.replication.Replicable; + +public interface HasReplicable> { + Replicable getReplicable(); +} diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java similarity index 92% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java index c559cbd840b..2fc1b13fcfb 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -1,12 +1,12 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectStreamClass; -import com.sap.sailing.server.replication.Replicable; import com.sap.sse.common.IsManagedByCache; +import com.sap.sse.server.replication.Replicable; /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java similarity index 98% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java index fed0384eb40..a1ebf14bb1d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitInputStreamProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java similarity index 99% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java index a0123bda0de..ed73796d14a 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/RabbitOutputStream.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java similarity index 94% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java index 48191db0eef..67096019b1d 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.Serializable; import java.net.InetAddress; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java similarity index 68% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java index b43238717ab..579d89ef751 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationFactoryImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java @@ -1,7 +1,7 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; -import com.sap.sailing.server.replication.ReplicationFactory; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.ReplicationFactory; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; public class ReplicationFactoryImpl implements ReplicationFactory { @Override diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java similarity index 94% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java index 725121fe81e..0ae019e07d7 100644 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.util.Collections; import java.util.HashMap; @@ -7,9 +7,9 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.sap.sailing.server.replication.OperationWithResult; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.common.Util; +import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; /** * Manages the replicas and keeps statistics. diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java index c771a9c2473..b781e824977 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -12,8 +12,8 @@ import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; import com.sap.sse.BuildVersion; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { private static final String REPLICATION_SERVLET = "/replication/replication"; diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java index 00e597d1a9c..d04cab912e4 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -29,12 +29,12 @@ import com.rabbitmq.client.AMQP.Queue.DeleteOk; import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; -import com.sap.sailing.server.replication.OperationExecutionListener; -import com.sap.sailing.server.replication.OperationWithResult; -import com.sap.sailing.server.replication.Replicable; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.BuildVersion; +import com.sap.sse.server.replication.OperationExecutionListener; +import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.server.replication.Replicable; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.ReplicationService; /** * Can observe a {@link RacingEventService} for the operations it performs that require replication. Only observes as diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java similarity index 95% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java index bc82d3608af..657d8633479 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.IOException; import java.io.ObjectOutputStream; @@ -21,9 +21,9 @@ import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.rabbitmq.client.Channel; -import com.sap.sailing.server.replication.Replicable; -import com.sap.sailing.server.replication.ReplicationService; import com.sap.sse.gateway.AbstractHttpServlet; +import com.sap.sse.server.replication.Replicable; +import com.sap.sse.server.replication.ReplicationService; import com.sap.sse.util.impl.CountingOutputStream; /** diff --git a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java rename to java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java index 3c3faa7541a..05d37e6bac3 100755 --- a/java/com.sap.sse.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.server.replication.impl; import java.io.ByteArrayInputStream; import java.io.EOFException; @@ -21,8 +21,8 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; -import com.sap.sailing.server.replication.OperationWithResult; -import com.sap.sailing.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.server.replication.ReplicationMasterDescriptor; /** * Receives {@link RacingEventServiceOperation}s through JMS and From 5f2fd0aa8ec7eadabce20923e4553b936cf52726 Mon Sep 17 00:00:00 2001 From: fmittag Date: Sun, 9 Nov 2014 02:10:10 +0100 Subject: [PATCH 022/113] removed test output --- .../com/sap/sailing/gwt/home/client/app/PlaceNavigation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index d0da3a45fe1..7f3d3b47fd3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -15,7 +15,6 @@ public class PlaceNavigation { this.destinationPlace = destinationPlace; this.tokenizer = tokenizer; String locationURL = getLocationURL(); - Window.alert(locationURL); this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL)); if(isDestinationOnRemoteServer) { this.baseUrl = AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL; From b21ea15902e64e3fac5af8f7f95d91aebe70a311 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 02:52:48 +0100 Subject: [PATCH 023/113] fixed pom.xml files for new com.sap.sse.gateway bundle --- java/com.sap.sse.gateway/pom.xml | 12 ++++++++++++ java/pom.xml | 1 + 2 files changed, 13 insertions(+) create mode 100644 java/com.sap.sse.gateway/pom.xml diff --git a/java/com.sap.sse.gateway/pom.xml b/java/com.sap.sse.gateway/pom.xml new file mode 100644 index 00000000000..a6b767ebadb --- /dev/null +++ b/java/com.sap.sse.gateway/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sse.gateway + eclipse-plugin + diff --git a/java/pom.xml b/java/pom.xml index 08622e2e840..2dbc3127500 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -17,6 +17,7 @@ com.sap.sse com.sap.sse.common com.sap.sse.mongodb + com.sap.sse.gateway com.sap.sse.gwt com.sap.sse.gwt.adminconsole com.sap.sse.datamining From 1362db5877ca9e5b25dfac6c0382faa3bfbbf50d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 14:13:13 +0100 Subject: [PATCH 024/113] fixed com.sap.sse.common.test pom.xml after fixing the bundle name --- java/com.sap.sse.common.test/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.common.test/pom.xml b/java/com.sap.sse.common.test/pom.xml index 22b06a06acc..8cffd381d86 100644 --- a/java/com.sap.sse.common.test/pom.xml +++ b/java/com.sap.sse.common.test/pom.xml @@ -7,6 +7,6 @@ com.sap.sailing 1.0.0-SNAPSHOT - com.sap.see.common.test + com.sap.sse.common.test eclipse-test-plugin From 2b7d57aa8287f496c7d15e2c8fcf107ca1670da7 Mon Sep 17 00:00:00 2001 From: fmittag Date: Sun, 9 Nov 2014 18:16:46 +0100 Subject: [PATCH 025/113] fixed navigation in eventheader partial --- .../place/event/header/EventHeader.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index f9495396dd3..10d2238b780 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -10,8 +10,10 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; @@ -32,6 +34,8 @@ public class EventHeader extends AbstractEventComposite { interface EventHeaderUiBinder extends UiBinder { } + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); + // @UiField Anchor overviewLink; @UiField Anchor regattasLink; // @UiField Anchor scheduleLink; @@ -73,7 +77,8 @@ public class EventHeader extends AbstractEventComposite { private final HomePlacesNavigator placeNavigator; private PlaceNavigation overallLeaderboardNavigation = null; - + private PlaceNavigation regattasNavigation = null; + public EventHeader(EventDTO event, HomePlacesNavigator placeNavigator, EventPlaceNavigator pageNavigator) { super(event, pageNavigator); @@ -128,9 +133,9 @@ public class EventHeader extends AbstractEventComposite { eventHeaderWrapperDiv.setAttribute("data-navigationtype", "compact"); EventDTO event = getEvent(); - PlaceNavigation eventNavigation = placeNavigator.getEventNavigation(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer()); - regattasLink.setHref(eventNavigation.getTargetUrl()); - regattasLink2.setHref(eventNavigation.getTargetUrl()); + PlaceNavigation regattaDetailsNavigation = placeNavigator.getEventNavigation(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer()); + regattasLink.setHref(regattaDetailsNavigation.getTargetUrl()); + regattasLink2.setHref(regattaDetailsNavigation.getTargetUrl()); } private StrippedLeaderboardDTO findLeaderboardWithSameCourseArea(EventDTO event) { @@ -242,10 +247,10 @@ public class EventHeader extends AbstractEventComposite { } @UiHandler("seriesLeaderboardAnchor") - void seriesLeaderboardClicked(ClickEvent clickevent) { + void seriesLeaderboardClicked(ClickEvent e) { EventDTO event = getEvent(); - if(event.isFakeSeries() && overallLeaderboardNavigation != null) { - placeNavigator.goToPlace(overallLeaderboardNavigation); + if(event.isFakeSeries()) { + handleClickEvent(e, overallLeaderboardNavigation); } } @@ -254,10 +259,8 @@ public class EventHeader extends AbstractEventComposite { // showRegattas(); // } // - private void showRegattas(ClickEvent clickevent) { - getPageNavigator().goToRegattas(); - clickevent.preventDefault(); - + private void showRegattas(ClickEvent e) { + handleClickEvent(e, regattasNavigation); // setActiveLink(links1, regattasLink); // setActiveLink(links2, regattasLink2); // setActiveLink(links3, regattasLink3); @@ -306,7 +309,13 @@ public class EventHeader extends AbstractEventComposite { // setActiveLink(links2, mediaLink2); // setActiveLink(links3, mediaLink3); // } - + + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + placeNavigator.goToPlace(placeNavigation); + e.preventDefault(); + } + } @Override protected void onLoad() { super.onLoad(); From e41954ce561d23925f705df5a08a93838366e51d Mon Sep 17 00:00:00 2001 From: fmittag Date: Sun, 9 Nov 2014 18:18:56 +0100 Subject: [PATCH 026/113] fixed navigation in Regatta partial --- .../client/place/event/header/EventHeader.java | 1 + .../client/place/event/regatta/Regatta.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index 10d2238b780..c782fc054c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -316,6 +316,7 @@ public class EventHeader extends AbstractEventComposite { e.preventDefault(); } } + @Override protected void onLoad() { super.onLoad(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java index 523030f2bed..56322d48ed8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java @@ -13,10 +13,12 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.gwt.common.client.BoatClassImageResolver; import com.sap.sailing.gwt.common.client.BoatClassImageResources; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; @@ -38,6 +40,8 @@ public class Regatta extends Composite { interface RegattaUiBinder extends UiBinder { } + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); + private final EventDTO event; private final Timer timerForClientServerOffset; private RaceGroupDTO raceGroup; @@ -165,13 +169,18 @@ public class Regatta extends Composite { @UiHandler("regattaDetailsLink") void regattaDetailsLinkClicked(ClickEvent e) { - placesNavigator.goToPlace(regattaNavigation); - e.preventDefault(); + handleClickEvent(e, regattaNavigation); } @UiHandler("leaderboardLink") void leaderboardLinkClicked(ClickEvent e) { - placesNavigator.goToPlace(leaderboardNavigation); - e.preventDefault(); + handleClickEvent(e, leaderboardNavigation); + } + + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + placesNavigator.goToPlace(placeNavigation); + e.preventDefault(); + } } } From 911f2160d94dab8670beeca78e266b47beb928bd Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 20:07:48 +0100 Subject: [PATCH 027/113] set lazy activation for new SSE bundles --- ...WT Remote Profiling (Run-Mode only).launch | 118 +++++++------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 150 +++++++++--------- java/com.sap.sse.common/META-INF/MANIFEST.MF | 1 + java/com.sap.sse.gateway/META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 1 + java/com.sap.sse/META-INF/MANIFEST.MF | 1 + 6 files changed, 138 insertions(+), 134 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 0eb43530370..7950be721bc 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -1,59 +1,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 00c608ff9af..83509b551f3 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.common/META-INF/MANIFEST.MF b/java/com.sap.sse.common/META-INF/MANIFEST.MF index 3fcb980a366..50e1fe41905 100644 --- a/java/com.sap.sse.common/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.common/META-INF/MANIFEST.MF @@ -10,3 +10,4 @@ Export-Package: com.sap.sse.common, com.sap.sse.common.impl, com.sap.sse.common.search Require-Bundle: com.sap.sse.datamining.shared;bundle-version="1.0.0" +Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sse.gateway/META-INF/MANIFEST.MF b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF index d5da715a4c0..cc4e39c4a25 100755 --- a/java/com.sap.sse.gateway/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF @@ -12,3 +12,4 @@ Import-Package: javax.servlet;version="3.1.0", Require-Bundle: com.sap.sse.common, com.sap.sse Export-Package: com.sap.sse.gateway +Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sse.gwt.adminconsole/META-INF/MANIFEST.MF b/java/com.sap.sse.gwt.adminconsole/META-INF/MANIFEST.MF index 53d611231c8..bdffabf9645 100755 --- a/java/com.sap.sse.gwt.adminconsole/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.gwt.adminconsole/META-INF/MANIFEST.MF @@ -11,3 +11,4 @@ Require-Bundle: com.google.gwt.osgi;bundle-version="2.6.1", com.sap.sse.security, com.sap.sse.common Export-Package: com.sap.sse.gwt.adminconsole +Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sse/META-INF/MANIFEST.MF b/java/com.sap.sse/META-INF/MANIFEST.MF index ea720660f63..989ce605635 100755 --- a/java/com.sap.sse/META-INF/MANIFEST.MF +++ b/java/com.sap.sse/META-INF/MANIFEST.MF @@ -8,3 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.sap.sse, com.sap.sse.util, com.sap.sse.util.impl +Bundle-ActivationPolicy: lazy From 80aff1561b56e512880886fc5b757e03f5842759 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 20:30:31 +0100 Subject: [PATCH 028/113] renamed packages in com.sap.sse.replication according to bundle name; fixed launch configurations --- .../gwt/ui/test/SailingServiceImplMock.java | 8 +- .../gwt/ui/server/SailingServiceImpl.java | 10 +-- .../test/AbstractServerReplicationTest.java | 18 ++--- .../test/ConnectionResetAndReconnectTest.java | 4 +- ...LeaderboardCorrectionsReplicationTest.java | 4 +- ...tialLoadReplicationObjectIdentityTest.java | 4 +- .../test/PrematureOperationReceiptTest.java | 4 +- .../test/RaceLogReplicationTest.java | 2 +- .../test/RemoteMessageStreamTest.java | 4 +- ...nstancesManagerLoggingPerformanceTest.java | 4 +- .../test/TrackRaceReplicationTest.java | 4 +- .../SailingServer (No Proxy).launch | 74 +++++++++--------- ...ailingServer (No Proxy, Cached MTB).launch | 72 +++++++++--------- ...ingServer (No Proxy, Jetty on 8889).launch | 62 +++++++-------- ...o Proxy, Jetty on 8889, Cached MTB).launch | 64 ++++++++-------- ...ver (No Proxy, Remote Debug SAP VM).launch | 60 +++++++-------- ...ailingServer (No Proxy, winddbTest).launch | 72 +++++++++--------- .../SailingServer (Proxy).launch | 76 +++++++++---------- ...ailingServer (Proxy, Jetty on 8889).launch | 62 +++++++-------- ...Server (Proxy, Remote Debug SAP VM).launch | 60 +++++++-------- ...Proxy, SwissTiming Live Simulation).launch | 58 +++++++------- .../SailingServer (Proxy, winddbTest).launch | 62 +++++++-------- .../sailing/server/RacingEventService.java | 2 +- .../server/RacingEventServiceOperation.java | 2 +- .../com/sap/sailing/server/Replicator.java | 2 +- .../sap/sailing/server/impl/Activator.java | 2 +- .../server/impl/RacingEventServiceImpl.java | 4 +- .../META-INF/MANIFEST.MF | 6 +- java/com.sap.sse.replication/WEB-INF/web.xml | 2 +- .../OperationExecutionListener.java | 2 +- .../replication/OperationWithResult.java | 2 +- .../{server => }/replication/Replicable.java | 2 +- .../replication/ReplicationFactory.java | 4 +- .../ReplicationMasterDescriptor.java | 4 +- .../replication/ReplicationService.java | 6 +- .../replication/impl/Activator.java | 4 +- .../sse/replication/impl/HasReplicable.java | 8 ++ ...bjectInputStreamResolvingAgainstCache.java | 4 +- .../impl/RabbitInputStreamProvider.java | 2 +- .../replication/impl/RabbitOutputStream.java | 2 +- .../replication/impl/ReplicaDescriptor.java | 2 +- .../impl/ReplicationFactoryImpl.java | 6 +- .../impl/ReplicationInstancesManager.java | 6 +- .../impl/ReplicationMasterDescriptorImpl.java | 4 +- .../impl/ReplicationServiceImpl.java | 12 +-- .../replication/impl/ReplicationServlet.java | 6 +- .../replication/impl/Replicator.java | 6 +- .../replication/impl/HasReplicable.java | 8 -- 48 files changed, 449 insertions(+), 449 deletions(-) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/OperationExecutionListener.java (86%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/OperationWithResult.java (92%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/Replicable.java (97%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/ReplicationFactory.java (72%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/ReplicationMasterDescriptor.java (91%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/ReplicationService.java (92%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/Activator.java (97%) create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ObjectInputStreamResolvingAgainstCache.java (93%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/RabbitInputStreamProvider.java (98%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/RabbitOutputStream.java (99%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicaDescriptor.java (94%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicationFactoryImpl.java (69%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicationInstancesManager.java (95%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicationMasterDescriptorImpl.java (96%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicationServiceImpl.java (96%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/ReplicationServlet.java (95%) rename java/com.sap.sse.replication/src/com/sap/sse/{server => }/replication/impl/Replicator.java (96%) delete mode 100755 java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index 8680118f960..13e34ef461b 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -36,10 +36,10 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; -import com.sap.sse.server.replication.Replicable; -import com.sap.sse.server.replication.ReplicationService; -import com.sap.sse.server.replication.impl.ReplicationInstancesManager; -import com.sap.sse.server.replication.impl.ReplicationServiceImpl; +import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicationService; +import com.sap.sse.replication.impl.ReplicationInstancesManager; +import com.sap.sse.replication.impl.ReplicationServiceImpl; public class SailingServiceImplMock extends SailingServiceImpl { private static final long serialVersionUID = 8564037671550730455L; 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 fe0a578e1ef..e9ca446c1e5 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 @@ -403,11 +403,11 @@ import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; -import com.sap.sse.server.replication.OperationWithResult; -import com.sap.sse.server.replication.ReplicationFactory; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.ReplicationService; -import com.sap.sse.server.replication.impl.ReplicaDescriptor; +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.ReplicationFactory; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationService; +import com.sap.sse.replication.impl.ReplicaDescriptor; /** * The server side implementation of the RPC service. diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index 031a213a97e..d637d193f7c 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -39,15 +39,15 @@ import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sse.common.Util; import com.sap.sse.mongodb.MongoDBService; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.ReplicationService; -import com.sap.sse.server.replication.impl.Activator; -import com.sap.sse.server.replication.impl.RabbitOutputStream; -import com.sap.sse.server.replication.impl.ReplicaDescriptor; -import com.sap.sse.server.replication.impl.ReplicationInstancesManager; -import com.sap.sse.server.replication.impl.ReplicationMasterDescriptorImpl; -import com.sap.sse.server.replication.impl.ReplicationServiceImpl; -import com.sap.sse.server.replication.impl.Replicator; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationService; +import com.sap.sse.replication.impl.Activator; +import com.sap.sse.replication.impl.RabbitOutputStream; +import com.sap.sse.replication.impl.ReplicaDescriptor; +import com.sap.sse.replication.impl.ReplicationInstancesManager; +import com.sap.sse.replication.impl.ReplicationMasterDescriptorImpl; +import com.sap.sse.replication.impl.ReplicationServiceImpl; +import com.sap.sse.replication.impl.Replicator; public abstract class AbstractServerReplicationTest { protected static final int SERVLET_PORT = 9990; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java index cfacce1e465..5f963b332fc 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ConnectionResetAndReconnectTest.java @@ -25,8 +25,8 @@ import com.sap.sailing.domain.base.Event; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.impl.ReplicationMasterDescriptorImpl; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.impl.ReplicationMasterDescriptorImpl; public class ConnectionResetAndReconnectTest extends AbstractServerReplicationTest { static final Logger logger = Logger.getLogger(ConnectionResetAndReconnectTest.class.getName()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java index 265dbda0d1e..47ed07659d8 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java @@ -43,8 +43,8 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPoin import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationService; public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServerReplicationTest { private static final Logger logger = Logger.getLogger(DelayedLeaderboardCorrectionsReplicationTest.class.getName()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index 32ab7372a94..e8284fd0bed 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -53,8 +53,8 @@ import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.impl.Replicator; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.impl.Replicator; public class InitialLoadReplicationObjectIdentityTest extends AbstractServerReplicationTest { private Util.Pair replicationDescriptorPair; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index 464ee30f607..9bd477c458b 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -14,8 +14,8 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sse.common.Util; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.impl.Replicator; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.impl.Replicator; public class PrematureOperationReceiptTest extends AbstractServerReplicationTest { private Replicator> replicator; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java index 16e7256ac10..67554413e68 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java @@ -60,7 +60,7 @@ import com.sap.sailing.server.operationaltransformation.RenameLeaderboard; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.mongodb.MongoDBService; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationMasterDescriptor; public class RaceLogReplicationTest extends AbstractServerReplicationTest { private static final String BOAT_CLASS_NAME_49er = "49er"; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java index f5073c947af..6c723a95fe5 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java @@ -19,8 +19,8 @@ import org.junit.Test; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; -import com.sap.sse.server.replication.impl.RabbitInputStreamProvider; -import com.sap.sse.server.replication.impl.RabbitOutputStream; +import com.sap.sse.replication.impl.RabbitInputStreamProvider; +import com.sap.sse.replication.impl.RabbitOutputStream; /** * A number of tests for the {@link OutputStream} / {@link InputStream} implementation using an underlying RabbitMQ message queue. diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java index 7c10bdc4b80..2e1ddb2df9a 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; -import com.sap.sse.server.replication.impl.ReplicaDescriptor; -import com.sap.sse.server.replication.impl.ReplicationInstancesManager; +import com.sap.sse.replication.impl.ReplicaDescriptor; +import com.sap.sse.replication.impl.ReplicationInstancesManager; public class ReplicationInstancesManagerLoggingPerformanceTest { private ReplicationInstancesManager replicationInstanceManager; 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 9f1766b4992..43f52bf301d 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 @@ -39,8 +39,8 @@ import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboar import com.sap.sailing.server.operationaltransformation.CreateTrackedRace; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; -import com.sap.sse.server.replication.OperationExecutionListener; -import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationWithResult; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { private TrackedRace masterTrackedRace; diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 5f025ef3089..7c7ad203ed7 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index 9704a6cf5a8..83edbf64130 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index d455f6e68cb..82a8fca8e70 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index 2a38b52f0cb..6e0e3594ba0 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index e94e6f41734..19d5e71f60a 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index 8de9e6e5d5e..97c91748e71 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index ed04e3ed9a8..19d31d495a2 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index 8de486769e8..a71570b4e67 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index ab284d469db..dcf0b6017c4 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index facdc0436e8..db736cd7faf 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -1,29 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch index 034d1f5cc73..87f436c3a5d 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 e8997d429c6..10caee74a56 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 @@ -69,7 +69,7 @@ import com.sap.sse.common.Util.Triple; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.Searchable; -import com.sap.sse.server.replication.Replicable; +import com.sap.sse.replication.Replicable; /** * An OSGi service that can be used to track boat races using a TracTrac connector that pushes 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 5167174a2b0..60273b508e6 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 @@ -12,7 +12,7 @@ import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; -import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.replication.OperationWithResult; public interface RacingEventServiceOperation extends OperationWithResult, OperationWithTransformationSupport>, Serializable { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java index b7399175ce1..c0932020be8 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java @@ -1,6 +1,6 @@ package com.sap.sailing.server; -import com.sap.sse.server.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationExecutionListener; public interface Replicator { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java index 3e9ab0161ab..7f1c72c2cbd 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java @@ -29,7 +29,7 @@ import com.sap.sailing.server.RacingEventServiceMXBean; import com.sap.sailing.server.racelog.tracking.CachedOsgiTypeBasedServiceFinderFactory; import com.sap.sailing.server.test.support.RacingEventServiceWithTestSupport; import com.sap.sse.common.Util; -import com.sap.sse.server.replication.Replicable; +import com.sap.sse.replication.Replicable; public class Activator implements BundleActivator { private static final Logger logger = Logger.getLogger(Activator.class.getName()); 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 e53dd21808b..de2144fa81c 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 @@ -192,8 +192,8 @@ import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.ResultImpl; import com.sap.sse.operationaltransformation.Operation; -import com.sap.sse.server.replication.OperationExecutionListener; -import com.sap.sse.server.replication.OperationWithResult; +import com.sap.sse.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationWithResult; public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport, RegattaListener, LeaderboardRegistry, Replicator { diff --git a/java/com.sap.sse.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF index ea04fc814b5..554c9a4c5cb 100644 --- a/java/com.sap.sse.replication/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -3,12 +3,12 @@ Bundle-ManifestVersion: 2 Bundle-Name: Server Replication Bundle-SymbolicName: com.sap.sse.replication Bundle-Version: 1.0.0.qualifier -Bundle-Activator: com.sap.sse.server.replication.impl.Activator +Bundle-Activator: com.sap.sse.replication.impl.Activator Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Export-Package: com.sap.sse.server.replication, - com.sap.sse.server.replication.impl +Export-Package: com.sap.sse.replication, + com.sap.sse.replication.impl Require-Bundle: com.sap.sse.common, com.sap.sse.operationaltransformation, com.sap.sse, diff --git a/java/com.sap.sse.replication/WEB-INF/web.xml b/java/com.sap.sse.replication/WEB-INF/web.xml index 478b9b77aab..1c632f3388e 100755 --- a/java/com.sap.sse.replication/WEB-INF/web.xml +++ b/java/com.sap.sse.replication/WEB-INF/web.xml @@ -18,7 +18,7 @@ Replication - com.sap.sailing.server.replication.impl.ReplicationServlet + com.sap.sse.replication.impl.ReplicationServlet Replication diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java similarity index 86% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java index 887331e3e4e..6077d1af79f 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationExecutionListener.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; /** diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationWithResult.java similarity index 92% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/OperationWithResult.java index a060fb5778e..26b3e609212 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/OperationWithResult.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationWithResult.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; import com.sap.sse.operationaltransformation.Operation; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java similarity index 97% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java index 0c53ee6842b..482e1c83e95 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationFactory.java similarity index 72% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationFactory.java index 1ea59cf7334..bbf04436a26 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationFactory.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationFactory.java @@ -1,6 +1,6 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; -import com.sap.sse.server.replication.impl.ReplicationFactoryImpl; +import com.sap.sse.replication.impl.ReplicationFactoryImpl; public interface ReplicationFactory { static ReplicationFactory INSTANCE = new ReplicationFactoryImpl(); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java similarity index 91% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java index 28491d5703a..eabe6fd3a61 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationMasterDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -8,7 +8,7 @@ import java.util.UUID; import com.rabbitmq.client.Channel; import com.rabbitmq.client.QueueingConsumer; -import com.sap.sse.server.replication.impl.RabbitInputStreamProvider; +import com.sap.sse.replication.impl.RabbitInputStreamProvider; /** * Identifies a master server instance from which a replica can obtain an initial load and continuous updates. diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java similarity index 92% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java index f7c77a7d2ac..d4836553f4f 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication; +package com.sap.sse.replication; import java.io.IOException; import java.net.ConnectException; @@ -6,8 +6,8 @@ import java.util.Map; import java.util.UUID; import com.rabbitmq.client.Channel; -import com.sap.sse.server.replication.impl.ReplicaDescriptor; -import com.sap.sse.server.replication.impl.ReplicationServlet; +import com.sap.sse.replication.impl.ReplicaDescriptor; +import com.sap.sse.replication.impl.ReplicationServlet; /** * A service that organizes a master server and its replicas. diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java similarity index 97% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java index afecbb0342b..914953f391b 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.util.logging.Logger; @@ -6,7 +6,7 @@ import java.util.logging.Logger; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; -import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.replication.ReplicationService; /** * Initializes the replication sub-system. A hierarchy of parameter specifications is evaluated to configure this diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java new file mode 100755 index 00000000000..34049861d3d --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java @@ -0,0 +1,8 @@ +package com.sap.sse.replication.impl; + +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.Replicable; + +public interface HasReplicable> { + Replicable getReplicable(); +} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java similarity index 93% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java index 2fc1b13fcfb..1b1cb3d372b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ObjectInputStreamResolvingAgainstCache.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.InputStream; @@ -6,7 +6,7 @@ import java.io.ObjectInputStream; import java.io.ObjectStreamClass; import com.sap.sse.common.IsManagedByCache; -import com.sap.sse.server.replication.Replicable; +import com.sap.sse.replication.Replicable; /** * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitInputStreamProvider.java similarity index 98% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitInputStreamProvider.java index a1ebf14bb1d..469b6f46556 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitInputStreamProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitInputStreamProvider.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitOutputStream.java similarity index 99% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitOutputStream.java index ed73796d14a..e8a2afad76f 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/RabbitOutputStream.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/RabbitOutputStream.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.InputStream; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicaDescriptor.java similarity index 94% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicaDescriptor.java index 67096019b1d..db2a3d3562b 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicaDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicaDescriptor.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.Serializable; import java.net.InetAddress; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationFactoryImpl.java similarity index 69% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationFactoryImpl.java index 579d89ef751..50bd889f690 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationFactoryImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationFactoryImpl.java @@ -1,7 +1,7 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; -import com.sap.sse.server.replication.ReplicationFactory; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationFactory; +import com.sap.sse.replication.ReplicationMasterDescriptor; public class ReplicationFactoryImpl implements ReplicationFactory { @Override diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java similarity index 95% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java index 0ae019e07d7..390e68be032 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationInstancesManager.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.util.Collections; import java.util.HashMap; @@ -8,8 +8,8 @@ import java.util.Map; import java.util.Set; import com.sap.sse.common.Util; -import com.sap.sse.server.replication.OperationWithResult; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.ReplicationMasterDescriptor; /** * Manages the replicas and keeps statistics. diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java index b781e824977..fe403ca9bf8 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -13,7 +13,7 @@ import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sse.BuildVersion; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationMasterDescriptor; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { private static final String REPLICATION_SERVLET = "/replication/replication"; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index d04cab912e4..4275461bfc2 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -30,11 +30,11 @@ import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sse.BuildVersion; -import com.sap.sse.server.replication.OperationExecutionListener; -import com.sap.sse.server.replication.OperationWithResult; -import com.sap.sse.server.replication.Replicable; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; -import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.ReplicationService; /** * Can observe a {@link RacingEventService} for the operations it performs that require replication. Only observes as diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java similarity index 95% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index 657d8633479..c9c7b29714e 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.ObjectOutputStream; @@ -22,8 +22,8 @@ import org.osgi.util.tracker.ServiceTracker; import com.rabbitmq.client.Channel; import com.sap.sse.gateway.AbstractHttpServlet; -import com.sap.sse.server.replication.Replicable; -import com.sap.sse.server.replication.ReplicationService; +import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicationService; import com.sap.sse.util.impl.CountingOutputStream; /** diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java similarity index 96% rename from java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java rename to java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index 05d37e6bac3..cc5e2e09f93 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -1,4 +1,4 @@ -package com.sap.sse.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.ByteArrayInputStream; import java.io.EOFException; @@ -21,8 +21,8 @@ import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; -import com.sap.sse.server.replication.OperationWithResult; -import com.sap.sse.server.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.ReplicationMasterDescriptor; /** * Receives {@link RacingEventServiceOperation}s through JMS and diff --git a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java deleted file mode 100755 index 617acfd9533..00000000000 --- a/java/com.sap.sse.replication/src/com/sap/sse/server/replication/impl/HasReplicable.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sap.sse.server.replication.impl; - -import com.sap.sse.server.replication.OperationWithResult; -import com.sap.sse.server.replication.Replicable; - -public interface HasReplicable> { - Replicable getReplicable(); -} From 65a9d29719a0eddd4acf115436092ee44b2fffcf Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 20:32:55 +0100 Subject: [PATCH 029/113] fixed paths in SailingGWT.launch after sse-oriented bundle renames --- ...WT Remote Profiling (Run-Mode only).launch | 58 ++++++++--------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 62 +++++++++---------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 7950be721bc..acf9694d1b0 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -19,35 +19,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 83509b551f3..5bc49f72e26 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -33,37 +33,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9ac290dda94c8d7ba3e57aaaab090710f28490b1 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 9 Nov 2014 20:45:47 +0100 Subject: [PATCH 030/113] added new com.sap.sse bundles to sailing feature; adjusted start levels for new sse bundles in raceanalysis.product --- .../raceanalysis.product | 1 + java/com.sap.sailing.feature/feature.xml | 84 ++++++++++++++----- 2 files changed, 64 insertions(+), 21 deletions(-) diff --git a/java/com.sap.sailing.feature.p2build/raceanalysis.product b/java/com.sap.sailing.feature.p2build/raceanalysis.product index d8b0f103de1..cc4aa8c72a3 100755 --- a/java/com.sap.sailing.feature.p2build/raceanalysis.product +++ b/java/com.sap.sailing.feature.p2build/raceanalysis.product @@ -57,6 +57,7 @@ + diff --git a/java/com.sap.sailing.feature/feature.xml b/java/com.sap.sailing.feature/feature.xml index da7cb32a161..6eadece9fd1 100755 --- a/java/com.sap.sailing.feature/feature.xml +++ b/java/com.sap.sailing.feature/feature.xml @@ -40,13 +40,6 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al version="0.0.0" unpack="false"/> - - - - - - + + + + + + + + + + + + + + + + + + From fd297bea135011e5f97485cb6291480cfc04d89e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 10 Nov 2014 01:11:41 +0100 Subject: [PATCH 031/113] set context class loader in Replicator to that of the Replicable to enable de-serialization of replicable's domain objects --- .../gwt/ui/test/SailingServiceImplMock.java | 2 +- .../replication/impl/ReplicationServiceImpl.java | 12 ++++++------ .../com/sap/sse/replication/impl/Replicator.java | 14 ++++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index 13e34ef461b..71105220035 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -69,7 +69,7 @@ public class SailingServiceImplMock extends SailingServiceImpl { new ReplicationServiceImpl>("test exchange", "localhost", 0, new ReplicationInstancesManager()) { @Override - protected ServiceTracker>, Replicable>> getRacingEventServiceTracker() { + protected ServiceTracker>, Replicable>> getReplicableTracker() { @SuppressWarnings("unchecked") ServiceTracker>, Replicable>> result = (ServiceTracker>, Replicable>>) mock(ServiceTracker.class); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 4275461bfc2..7aaec71f84a 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -57,7 +57,7 @@ OperationExecutionListener, HasReplicable { private final ReplicationInstancesManager replicationInstancesManager; - private final ServiceTracker, Replicable> racingEventServiceTracker; + private final ServiceTracker, Replicable> replicableTracker; private final Replicable localService; @@ -183,10 +183,10 @@ OperationExecutionListener, HasReplicable { this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); if (createRacingEventServiceTracker) { - racingEventServiceTracker = getRacingEventServiceTracker(); - racingEventServiceTracker.open(); + replicableTracker = getReplicableTracker(); + replicableTracker.open(); } else { - racingEventServiceTracker = null; + replicableTracker = null; } this.localService = localService; this.exchangeName = exchangeName; @@ -210,7 +210,7 @@ OperationExecutionListener, HasReplicable { this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); } - protected ServiceTracker, Replicable> getRacingEventServiceTracker() { + protected ServiceTracker, Replicable> getReplicableTracker() { return new ServiceTracker, Replicable>( Activator.getDefaultContext(), Replicable.class.getName(), null); } @@ -247,7 +247,7 @@ OperationExecutionListener, HasReplicable { if (localService != null) { result = localService; } else { - result = racingEventServiceTracker.getService(); + result = replicableTracker.getService(); } return result; } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index cc5e2e09f93..a3c9319ce36 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -22,6 +22,7 @@ import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationMasterDescriptor; /** @@ -80,7 +81,7 @@ public class Replicator> implements Runna /** * @param master * descriptor of the master server from which this replicator receives messages - * @param racingEventServiceTracker + * @param replicableProvider * OSGi service tracker for the replica to which to apply the messages received * @param startSuspended * decides whether to stars the replicator immediately, not holding back messages received but forwarding @@ -88,10 +89,10 @@ public class Replicator> implements Runna * @param consumer * the RabbitMQ consumer from which to load messages */ - public Replicator(ReplicationMasterDescriptor master, HasReplicable racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer) { + public Replicator(ReplicationMasterDescriptor master, HasReplicable replicableProvider, boolean startSuspended, QueueingConsumer consumer) { this.queue = new ArrayList>(); this.master = master; - this.replicableProvider = racingEventServiceTracker; + this.replicableProvider = replicableProvider; this.suspended = startSuspended; this.consumer = consumer; } @@ -136,15 +137,16 @@ public class Replicator> implements Runna checksPerformed = 0; // Set this object's class's class loader as context for de-serialization so that all exported classes // of all required bundles/packages can be deserialized at least - Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); - ObjectInputStream ois = replicableProvider.getReplicable() + Replicable replicable = replicableProvider.getReplicable(); + Thread.currentThread().setContextClassLoader(replicable.getClass().getClassLoader()); + ObjectInputStream ois = replicable .createObjectInputStreamResolvingAgainstCache( new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage))); int operationsInMessage = 0; try { while (true) { byte[] serializedOperation = (byte[]) ois.readObject(); - ObjectInputStream operationOIS = replicableProvider.getReplicable() + ObjectInputStream operationOIS = replicable .createObjectInputStreamResolvingAgainstCache(new ByteArrayInputStream(serializedOperation)); @SuppressWarnings("unchecked") OperationWithResult operation = (OperationWithResult) operationOIS.readObject(); From 656fa2a7b54ab2b159ae1ed446179cec7a10e843 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 10 Nov 2014 11:51:53 +0100 Subject: [PATCH 032/113] fixing bug 2425, comment 5/6 by re-establishing the scroll panel logic as it used to be --- ...WT Remote Profiling (Run-Mode only).launch | 118 +++++++------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 150 +++++++++--------- .../gwt/adminconsole/AdminConsolePanel.java | 2 +- 3 files changed, 135 insertions(+), 135 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index acf9694d1b0..6c77bdc1c19 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -1,59 +1,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 5bc49f72e26..6bd3024b61d 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java index b5ef983adf8..1ba0975b1c7 100755 --- a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java +++ b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java @@ -110,7 +110,7 @@ public class AdminConsolePanel extends DockLayoutPanel { } private void refreshDataFor(Widget target) { - RefreshableAdminConsolePanel refreshTarget = panelsByWidget.get(target); + RefreshableAdminConsolePanel refreshTarget = panelsByWidget.get(unwrapScrollPanel(target)); if (refreshTarget != null) { refreshTarget.refreshAfterBecomingVisible(); } From 9020c4217d56cfa166e47f8a2923f8a0d52b3a65 Mon Sep 17 00:00:00 2001 From: fmittag Date: Mon, 10 Nov 2014 12:23:02 +0100 Subject: [PATCH 033/113] fixed link for local place changes --- .../sap/sailing/gwt/home/client/app/PlaceNavigation.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index 7f3d3b47fd3..507720859b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -16,18 +16,14 @@ public class PlaceNavigation { this.tokenizer = tokenizer; String locationURL = getLocationURL(); this.isDestinationOnRemoteServer = !(isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL)); - if(isDestinationOnRemoteServer) { - this.baseUrl = AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL; - } else { - this.baseUrl = locationURL; - } + this.baseUrl = isDestinationOnRemoteServer ? AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL : locationURL; } public PlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer, boolean isDestinationOnRemoteServer) { this.destinationPlace = destinationPlace; this.tokenizer = tokenizer; - this.baseUrl = baseUrl; this.isDestinationOnRemoteServer = isDestinationOnRemoteServer; + this.baseUrl = isDestinationOnRemoteServer ? baseUrl : getLocationURL(); } public void gotoPlace() { From 2e0ba4ac33e3960a81c0ccba6830774e3e4e452d Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 11 Nov 2014 13:21:00 +0100 Subject: [PATCH 034/113] fixed parameter decoding when using browser 'back' navigation --- .../com/sap/sailing/gwt/common/client/AbstractBasePlace.java | 3 ++- .../src/main/resources/com/sap/sailing/gwt/Home.gwt.xml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java index 59b79981a55..3457e95e177 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; +import com.google.gwt.http.client.URL; import com.google.gwt.place.shared.Place; import com.sap.sse.gwt.client.URLEncoder; @@ -46,7 +47,7 @@ public abstract class AbstractBasePlace extends Place { public AbstractBasePlace(String url) { if (url != null && !url.isEmpty()) { - this.placeParametersAsToken = url; + this.placeParametersAsToken = URL.decode(url); List list = Arrays.asList(url.split("&")); diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml index e63c7a90800..2c52627ad0f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml @@ -7,6 +7,7 @@ + From 79e8c45148950082e0fc721764b580a9d0a2be38 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 11 Nov 2014 14:28:01 +0100 Subject: [PATCH 035/113] url decoding fix2 --- .../com/sap/sailing/gwt/common/client/AbstractBasePlace.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java index 3457e95e177..1f8ed1a8b22 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java @@ -8,7 +8,6 @@ import java.util.logging.Logger; import com.google.gwt.http.client.URL; import com.google.gwt.place.shared.Place; -import com.sap.sse.gwt.client.URLEncoder; /** * An abstract Place which is able to manage and parse place parameters. @@ -35,7 +34,7 @@ public abstract class AbstractBasePlace extends Place { if(stringBuilder.length() > 0) { stringBuilder.append("&"); } - stringBuilder.append(paramName + "=" + URLEncoder.encode(paramValue)); + stringBuilder.append(paramName + "=" + URL.encode(paramValue)); } } @@ -49,7 +48,7 @@ public abstract class AbstractBasePlace extends Place { if (url != null && !url.isEmpty()) { this.placeParametersAsToken = URL.decode(url); - List list = Arrays.asList(url.split("&")); + List list = Arrays.asList(placeParametersAsToken.split("&")); if (list == null || list.size() < 1) { logger.warning("Token empty, no-op"); From cdb391d92404e73515bf4888240da22fab002fe7 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 11 Nov 2014 18:48:23 +0100 Subject: [PATCH 036/113] fix back link from regatta detail page to regatta list page --- .../sailing/gwt/home/client/place/event/header/EventHeader.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index c782fc054c4..1a5db4c2a4d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -156,6 +156,8 @@ public class EventHeader extends AbstractEventComposite { boolean isSeries = event.isFakeSeries(); String eventName = event.getName(); + + regattasNavigation = placeNavigator.getEventNavigation(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer()); if(isSeries) { LeaderboardGroupDTO leaderboardGroupDTO = event.getLeaderboardGroups().get(0); eventName = leaderboardGroupDTO.getDisplayName() != null ? leaderboardGroupDTO.getDisplayName() : leaderboardGroupDTO.getName(); From 1872656b5bd730e151988f3f51bbacb9efd37fd0 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 11 Nov 2014 19:26:48 +0100 Subject: [PATCH 037/113] fix for broken navigation in eventheader --- .../home/client/app/SmartphoneApplicationClientFactory.java | 2 +- .../client/app/TabletAndDesktopApplicationClientFactory.java | 2 +- .../event/TabletAndDesktopEventWithoutRegattasView.java | 5 +++-- .../gwt/home/client/place/event/header/EventHeader.java | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 72ce24e8e41..2f54a81744b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -51,7 +51,7 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien @Override public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { - return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index e004fe1088c..8ef401ef9cc 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -56,7 +56,7 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio @Override public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { - return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java index f140e40cbc6..b5b9934bbd1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java @@ -5,6 +5,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.place.event.header.EventHeader; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -17,8 +18,8 @@ public class TabletAndDesktopEventWithoutRegattasView extends Composite implemen @UiField(provided=true) EventHeader eventHeader; - public TabletAndDesktopEventWithoutRegattasView(SailingServiceAsync sailingService, EventDTO event) { - eventHeader = new EventHeader(event); + public TabletAndDesktopEventWithoutRegattasView(SailingServiceAsync sailingService, EventDTO event, HomePlacesNavigator placeNavigator) { + eventHeader = new EventHeader(event, placeNavigator); initWidget(uiBinder.createAndBindUi(this)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index 1a5db4c2a4d..c7f2fb90c2a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -105,10 +105,10 @@ public class EventHeader extends AbstractEventComposite { updateUI(); } - public EventHeader(EventDTO event) { + public EventHeader(EventDTO event, HomePlacesNavigator placeNavigator) { super(event, null); - this.placeNavigator = null; + this.placeNavigator = placeNavigator; initResources(); isFinishedDiv.getStyle().setDisplay(Display.NONE); From 7455e6ddb816e87f10b0abbbfcba4cbd4a0fb105 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 11 Nov 2014 19:32:39 +0100 Subject: [PATCH 038/113] removed url encoding/decoding form AbstractBasePlace --- .../com/sap/sailing/gwt/common/client/AbstractBasePlace.java | 5 ++--- .../sailing/gwt/home/client/app/AbstractPlaceNavigator.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java index 1f8ed1a8b22..2ce01ba4d7a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/AbstractBasePlace.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; -import com.google.gwt.http.client.URL; import com.google.gwt.place.shared.Place; /** @@ -34,7 +33,7 @@ public abstract class AbstractBasePlace extends Place { if(stringBuilder.length() > 0) { stringBuilder.append("&"); } - stringBuilder.append(paramName + "=" + URL.encode(paramValue)); + stringBuilder.append(paramName + "=" + paramValue); } } @@ -46,7 +45,7 @@ public abstract class AbstractBasePlace extends Place { public AbstractBasePlace(String url) { if (url != null && !url.isEmpty()) { - this.placeParametersAsToken = URL.decode(url); + this.placeParametersAsToken = url; List list = Arrays.asList(placeParametersAsToken.split("&")); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index 1d9ccef6cae..355ee2a1d76 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java @@ -18,10 +18,10 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { public void goToPlace(PlaceNavigation placeNavigation) { if(placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); - History.newItem(History.getToken()); + History.newItem(History.getToken(), false); Window.Location.replace(destinationUrl); } else { - placeController.goTo(placeNavigation.getPlace()); + placeController.goTo(placeNavigation.getPlace()); } } From fe2f10a20b9602cba7691e0ef3e4d4c8a3aa6221 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 11 Nov 2014 21:15:07 +0100 Subject: [PATCH 039/113] harmonized the unwrapping of scroll panels in AdminConsolePanel --- .../src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java index cbc6b8efaaf..8b4c5ab035f 100755 --- a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java +++ b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java @@ -93,7 +93,7 @@ public class AdminConsolePanel extends DockLayoutPanel { if (source instanceof TabLayoutPanel) { final TabLayoutPanel tabPanel = ((TabLayoutPanel) source); final Widget selectedPanel = tabPanel.getWidget(event.getSelectedItem()); - refreshDataFor(unwrapScrollPanel(selectedPanel)); + refreshDataFor(selectedPanel); } else if (source instanceof VerticalTabLayoutPanel) { final VerticalTabLayoutPanel verticalTabLayoutPanel = (VerticalTabLayoutPanel) source; Widget widgetAssociatedToVerticalTab = verticalTabLayoutPanel.getWidget(verticalTabLayoutPanel.getSelectedIndex()); @@ -101,7 +101,7 @@ public class AdminConsolePanel extends DockLayoutPanel { TabLayoutPanel selectedTabLayoutPanel = (TabLayoutPanel) widgetAssociatedToVerticalTab; final int selectedIndex = selectedTabLayoutPanel.getSelectedIndex(); if (selectedIndex >= 0) { - widgetAssociatedToVerticalTab = unwrapScrollPanel(selectedTabLayoutPanel.getWidget(selectedIndex)); + widgetAssociatedToVerticalTab = selectedTabLayoutPanel.getWidget(selectedIndex); } } refreshDataFor(widgetAssociatedToVerticalTab); From 6fbba6dde6757aeccd29a95fe2693ff4f8fd2ccd Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 10:10:27 +0100 Subject: [PATCH 040/113] fixed formatting (no tabs; spaces instead) for android string messages --- .../res/values-de/strings.xml | 169 ++++++++-------- .../res/values/strings.xml | 186 ++++++++---------- 2 files changed, 160 insertions(+), 195 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml index f41a0014ab5..ee482755b20 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml @@ -6,7 +6,6 @@ SAP Race Committee Service Warte auf Rennen… Aktuell %d Rennen verwaltet. - SAP Race Committee Cockpit Start Startzeit ändern @@ -56,7 +55,7 @@ Zurücksetzen des Rennens Beim Zurücksetzen des Rennens werden alle Daten gelöscht. Alle Informationen zum Rennen müssen erneut eingegeben werden. Nur der eingegeben Kurs bleibt erhalten. Ein Zurücksetzen wird nicht empfohlen. Zurücksetzen - Trotzdem zurücksetzen + Trotzdem zurücksetzen Rennstart um: Rennende um: %1$s bis %2$s eingeholt wird @@ -83,8 +82,8 @@ Backbord Steuerbord Gate - Linie - Ablauf + Linie + Ablauf Veröffentlichen @@ -110,7 +109,6 @@ Foto hinzufügen Angehängte Fotos Bisher keine Fotos - [Race Committee] %s Ergebnislisten für Rennen %s sind angehängt. Windrichtung (Grad) @@ -124,122 +122,109 @@ Die eingegebene Position, Windgeschwindigkeit oder -richtung ist leer. Bitte korrigieren Sie die Werte. Warte auf GPS Signal… Windeingaben speichern - + Weitere Einstellungen Verwaltete Bahnen Sprache auswählen Sprache auswählen. Eventuell muss die App neugestartet werden. - Regatta Einstellungen (Standard) Regatta Einstellungen (Speziell) Kursdesigner Einstellungen - Standard Startprozedur (wenn überschrieben) Wenn Option "Standard Startprozedur überschreiben" aktiv ist, wird ausgewählte Startprozedur als Standard gewählt. - Zum Übernehmen der Änderung bitte Aktion \'Neuladen\' durchführen. Server URL Empfänger der Ergebnislisten - Polling Einstellungen Aktiviere Polling Wenn aktiv wird im festgelegten Intervall Änderungen an den Rennen beim Server abgefragt. Polling Intervall (Sekunden) - + Kompass Nadel - Die Bahn konnte nicht geladen werden. Bitte neu anmelden. %d Rennen erfolgreich geladen. Beim Laden der Daten ist ein Fehler aufgetreten:\n\"%s\"\nErneut versuchen? Kurs setzen - Fehler beim Laden - (Wind setzen) - (%1$s kn, %2$s) - Anmelden - Bitte Login-Typ angeben. - - Alle Rennen - Aktive Rennen - - Rennen planen - Startmodus und Startzeit setzen - Heute - Startzeit des Rennens setzen - - Nationalität - Nummer - Fotos schießen - - Möchten Sie sich abmelden? - Wenn Sie sich abmelden wird kein Rennen mehr verwaltet. - Abmelden - - Lade Konfiguration… - Fehler beim Laden der Konfiguration. - Für dieses Gerät existiert keine Konfiguration auf dem Server. - Konfiguration vom Server übernommen. - - Installieren - Trotzdem installieren - - - - Einzelrückruf entfernen + (Wind setzen) + (%1$s kn, %2$s) + Anmelden + Bitte Login-Typ angeben. + Alle Rennen + Aktive Rennen + Rennen planen + Startmodus und Startzeit setzen + Heute + Startzeit des Rennens setzen + Nationalität + Nummer + Fotos schießen + Möchten Sie sich abmelden? + Wenn Sie sich abmelden wird kein Rennen mehr verwaltet. + Abmelden + Lade Konfiguration… + Fehler beim Laden der Konfiguration. + Für dieses Gerät existiert keine Konfiguration auf dem Server. + Konfiguration vom Server übernommen. + Installieren + Trotzdem installieren + + + Einzelrückruf entfernen Als Startschiff-Wettfahrtleiter anmelden Als Zielschiff-Wettfahrtleiter anmelden Als Regattaleitung an Land anmelden Gate Launch stoppt nach %dmin Kursdesigner - Kursnamen - Startmodus Flaggen - Klassenflagge - Einzelrückruf - Diese Option aktiviert den Einzelrückruf - Diese Option aktiviert den Pathfinder - Pathfinder - Diese Option aktiviert das Wählen der zusätzlichen Golfflaggenzeit. - Zusätzliche Golfflaggenzeit. - Gerätename - Synchronisiere mit Server - Zur Synchronisierung der Gerätekonfiguration vom Server per QR-Code hier klicken. - Update erzwingen - Erzwingt ein Update. Es ist besser die Synchronisierung zu nutzen. - Technische Informationen - Gate Launch - Golf - Regattakonfiguration - %1$s - Speichere %1$s Konfiguration - Hier klicken um Regattakonfiguration für 1$s zu speichern. - Auto-Update - Prüfe Versionsinformation auf Server… - Versuche Versionsinformation von %1$s zu erhalten - Link zur Versionsinformation ungültig. - Klicke \'Installieren\' um ein Update auf Version %1$d durchzuführen. - Es ist bereits die Server-Version installiert (Version %1$d). - Alles aktuell! - Downloade APK vom Server… - Der Downloadlink ist ungültig. - Konnte Zieldatei nicht erstellen. - Fehler beim Update. - Auto-Update erfolgreich - Update erfolgreich ausgeführt. Es sollte erneut mit dem Server synchronisiert werden. - Bring\' mich hin - GPS ist ausgeschaltet, soll es aktiviert werde? - Startmodus Flagge verändert zu %1$s - Bisher keine Regatta geladen. - Konfiguriere Regatta %1$s + Kursnamen + Startmodus Flaggen + Klassenflagge + Einzelrückruf + Diese Option aktiviert den Einzelrückruf + Diese Option aktiviert den Pathfinder + Pathfinder + Diese Option aktiviert das Wählen der zusätzlichen Golfflaggenzeit. + Zusätzliche Golfflaggenzeit. + Gerätename + Synchronisiere mit Server + Zur Synchronisierung der Gerätekonfiguration vom Server per QR-Code hier klicken. + Update erzwingen + Erzwingt ein Update. Es ist besser die Synchronisierung zu nutzen. + Technische Informationen + Gate Launch + Golf + Regattakonfiguration - %1$s + Speichere %1$s Konfiguration + Hier klicken um Regattakonfiguration für 1$s zu speichern. + Auto-Update + Prüfe Versionsinformation auf Server… + Versuche Versionsinformation von %1$s zu erhalten + Link zur Versionsinformation ungültig. + Klicke \'Installieren\' um ein Update auf Version %1$d durchzuführen. + Es ist bereits die Server-Version installiert (Version %1$d). + Alles aktuell! + Downloade APK vom Server… + Der Downloadlink ist ungültig. + Konnte Zieldatei nicht erstellen. + Fehler beim Update. + Auto-Update erfolgreich + Update erfolgreich ausgeführt. Es sollte erneut mit dem Server synchronisiert werden. + Bring\' mich hin + GPS ist ausgeschaltet, soll es aktiviert werde? + Startmodus Flagge verändert zu %1$s + Bisher keine Regatta geladen. + Konfiguriere Regatta %1$s + 5 Minuten + 4 Minuten + 2 Minuten + 1 Minute + Kurs ändern + Kein Kurs gesetzt + Gruppenrennen? + Kein Gruppenrennen + Gruppenrennen - 5 Minuten - 4 Minuten - 2 Minuten - 1 Minute - Kurs ändern - Kein Kurs gesetzt - Gruppenrennen? - Kein Gruppenrennen - Gruppenrennen \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml index 200aa286b68..13a18d51dfe 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml @@ -1,13 +1,13 @@ - + + (on course %s) Course has %s waypoints SAP Race Committee Service Waiting for races to monitor… Currently monitoring %d races. - SAP Race Committee Cockpit Start Restart @@ -87,8 +87,8 @@ Port Starboard Gate - Line - Offset + Line + Offset Publish @@ -112,7 +112,6 @@ Add photo Attached photos No photos yet - [Race Committee] %s Results for race %s are attached. Wind direction from (degrees) @@ -126,122 +125,103 @@ The entered location, wind speed or direction is empty. Please correct the values. Waiting for GPS Signal… Store wind - - - Other + + + Other Managed Course Areas Select Language Select the language. You might need to restart the app to have changes applied. - Default start procedure type when overriden Races will use selected start procedure type as a default. For this option to be active override checkbox has to be enabled. - Please execute action \'Reload\' to apply changes. Webservice URL Positioning mail recipient - Polling Activate Polling When active the server will be polled for changes. Polling Interval (seconds) - Compass Needle - Course area could not be loaded. Please go back to the login page. Successfully loaded %d races. There was an error loading the requested data:\n\"%s\"\nDo you want to retry? Set the course layout - Load failure - (click to set wind) - (%1$s kn, %2$s) - Login - Please select a login type. - - Show all - Show active - - Schedule race - Select start mode and start time - Today - Set start time - - Nationality - Number - Set positionings - Confirm positionings - Snap - - Are you sure want to logout? - Logging out stops automatic monitoring for all races. - Logout - - Loading configuration… - There was an error loading the configuration. - There was no remote configuration found for this device. - Remote configuration applied. - - Gate Launch stops after %dmin - - Regatta Configuration (default) - Regatta Configuration (specific) - Course Designer Configuration - Course Designer type - - Course Names - - Startmode Flags - Class Flag - Individual Recall - Activate this option to enable individual recall - Activate this option to enable choosing the Pathfinder - Pathfinder - Activate this option to enable choosing the additional Golf-Down time - Additional Golf-down time - Device identifier - Synchronize with server - When creating a configuration on the server, click here to synchronize your app and connection settings via QRCode. - Force update - Force an update from the server. It\'s a better idea to use the synchronize option. - - Expert Information - - Install - Install anyway - Gate Launch - Golf Down - - Regatta Configuration - %1$s - Save %1$s configuration - This will save the shown configuration for all races of %1$s. - Auto-Update - Checking for version information on server… - Trying to download auto-update info from %1$s - The version file link was not valid. - Click \'Install\' to perform the update to version %1$d. - You already have installed the version offered by the server (version %1$d). - You are already up to date! - Downloading APK from server… - The download link was not valid. - The download file couldn\'t be created. - Error while trying to auto-update. - Auto-Update completed - The automatic update has been completed. You should now re-synchronize your connection settings with the server. - Take me there - Your GPS seems to be disabled, do you want to enable it? - Start mode flag changed to %1$s - There are no regattas loaded. - Configure regatta %1$s + (click to set wind) + (%1$s kn, %2$s) + Login + Please select a login type. + Show all + Show active + Schedule race + Select start mode and start time + Today + Set start time + Nationality + Number + Set positionings + Confirm positionings + Snap + Are you sure want to logout? + Logging out stops automatic monitoring for all races. + Logout + Loading configuration… + There was an error loading the configuration. + There was no remote configuration found for this device. + Remote configuration applied. + Gate Launch stops after %dmin + Regatta Configuration (default) + Regatta Configuration (specific) + Course Designer Configuration + Course Designer type + Course Names + Startmode Flags + Class Flag + Individual Recall + Activate this option to enable individual recall + Activate this option to enable choosing the Pathfinder + Pathfinder + Activate this option to enable choosing the additional Golf-Down time + Additional Golf-down time + Device identifier + Synchronize with server + When creating a configuration on the server, click here to synchronize your app and connection settings via QRCode. + Force update + Force an update from the server. It\'s a better idea to use the synchronize option. + Expert Information + Install + Install anyway + Gate Launch + Golf Down + Regatta Configuration - %1$s + Save %1$s configuration + This will save the shown configuration for all races of %1$s. + Auto-Update + Checking for version information on server… + Trying to download auto-update info from %1$s + The version file link was not valid. + Click \'Install\' to perform the update to version %1$d. + You already have installed the version offered by the server (version %1$d). + You are already up to date! + Downloading APK from server… + The download link was not valid. + The download file couldn\'t be created. + Error while trying to auto-update. + Auto-Update completed + The automatic update has been completed. You should now re-synchronize your connection settings with the server. + Take me there + Your GPS seems to be disabled, do you want to enable it? + Start mode flag changed to %1$s + There are no regattas loaded. + Configure regatta %1$s + 5 Minutes + 4 Minutes + 2 Minutes + 1 Minute + Reset course + No course active + Group Race? + No Group Racing + Group Racing - 5 Minutes - 4 Minutes - 2 Minutes - 1 Minute - Reset course - - No course active - Group Race? - No Group Racing - Group Racing \ No newline at end of file From f92a055abb67af15f50046d0e66640aeaab1eef9 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 10:13:46 +0100 Subject: [PATCH 041/113] more format tab/space fixes in Android string.xml files --- .../res/values-de/strings.xml | 17 +++++---- .../res/values/strings.xml | 37 ++++++++++--------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/mobile/com.sap.sailing.android.shared/res/values-de/strings.xml b/mobile/com.sap.sailing.android.shared/res/values-de/strings.xml index 517246e3c8b..ed6069579dc 100644 --- a/mobile/com.sap.sailing.android.shared/res/values-de/strings.xml +++ b/mobile/com.sap.sailing.android.shared/res/values-de/strings.xml @@ -1,12 +1,13 @@ - Verbindungsinformationen - + + Verbindungsinformationen Entfernen - Neues Element eingeben - Hinzufügen - Bisher keine Elemente. - - + Neues Element eingeben + Hinzufügen + Bisher keine Elemente. + + Fehler - + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.android.shared/res/values/strings.xml b/mobile/com.sap.sailing.android.shared/res/values/strings.xml index d8c41eb83b3..da052b4de6b 100644 --- a/mobile/com.sap.sailing.android.shared/res/values/strings.xml +++ b/mobile/com.sap.sailing.android.shared/res/values/strings.xml @@ -1,22 +1,23 @@ - Connection Information - + + Connection Information Remove - Enter new item - Add - There are no items yet. - - - Application Information - Identifier - Install Date - Persistence Status - Clear events - Waiting events - Version - - + Enter new item + Add + There are no items yet. + + + Application Information + Identifier + Install Date + Persistence Status + Clear events + Waiting events + Version + + - Error - + Error + + \ No newline at end of file From f61243bfbde34b25ca0d7cfd46734b1504cf20a8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 13:06:49 +0100 Subject: [PATCH 042/113] preparing for multiple replicables --- .../sse/replication/impl/ReplicationServlet.java | 7 +++++-- .../com/sap/sse/replication/impl/Replicator.java | 15 ++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index c9c7b29714e..6fa8e052ad7 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -27,8 +27,11 @@ import com.sap.sse.replication.ReplicationService; import com.sap.sse.util.impl.CountingOutputStream; /** - * As the response to any type of GET request, sends a serialized copy of the {@link RacingEventService} to - * the response's output stream. + * The servlet supports registering and de-registering a replica from a master and can send the serialized initial load + * data of the {@link Replicable}s registered as replicable OSGi service from the master to a requesting replica. The + * initial load is transmitted through a {@link RabbitOutputStream}, and the response to the servlet request is only the + * name of the queue the replica can use to obtain the initial load from the message queuing system. This guarantees + * a more robust transmission of the initial load, even in the face of a flaky connection between master and replica. * * @author Axel Uhl (D043530) * diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index a3c9319ce36..557e8fa8683 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -26,14 +26,15 @@ import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationMasterDescriptor; /** - * Receives {@link RacingEventServiceOperation}s through JMS and - * {@link RacingEventService#apply(RacingEventServiceOperation) applies} them to the {@link RacingEventService} passed - * to this replicator at construction. When started in suspended mode, messages received will be turned into - * {@link RacingEventServiceOperation}s and then queued until {@link #setSuspended(boolean) setSuspended(false)} is invoked - * which applies all queued operations before applying the ones received later.

+ * Receives {@link OperationWithResult} objects from a message queue and {@link Replicable#apply(OperationWithResult) + * applies} them to the {@link Replicable} passed to this replicator at construction. When started in suspended mode, + * messages received will be turned into {@link OperationWithResult} objects and then queued until + * {@link #setSuspended(boolean) setSuspended(false)} is invoked which applies all queued operations before applying the + * ones received later. + *

* - * The receiver takes care of synchronizing receiving, suspending/resuming and queuing. Waiters are notified - * whenever the result of {@link #isQueueEmpty} changes. + * The receiver takes care of synchronizing receiving, suspending/resuming and queuing. Waiters are notified whenever + * the result of {@link #isQueueEmpty} changes. * * @author Axel Uhl (d043530) * From ab4033c2efcb0f15914d72128a95f383eef8d9ec Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 13:07:09 +0100 Subject: [PATCH 043/113] preparing for multiple replicables in activator --- .../src/com/sap/sailing/server/impl/Activator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java index 7f1c72c2cbd..ed59126c052 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java @@ -68,7 +68,9 @@ public class Activator implements BundleActivator { // register the racing service in the OSGi registry racingEventService.setBundleContext(context); - context.registerService(Replicable.class.getName(), racingEventService, null); + final Dictionary replicableServiceProperties = new Hashtable<>(); + replicableServiceProperties.put(Replicable.OSGi_Service_Registry_ID_Property_Name, racingEventService.getId().toString()); + context.registerService(Replicable.class.getName(), racingEventService, replicableServiceProperties); context.registerService(RacingEventService.class.getName(), racingEventService, null); context.registerService(RacingEventServiceWithTestSupport.class.getName(), racingEventService, null); From 091a753d6291cee3b3e9626f5513a9186523091c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 13:07:16 +0100 Subject: [PATCH 044/113] added AdminConsole module inherits to Simulator.gwt.xml --- .../src/main/resources/com/sap/sailing/gwt/ui/Simulator.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Simulator.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Simulator.gwt.xml index 6d1a6d22ecf..646abb88c35 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Simulator.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Simulator.gwt.xml @@ -21,6 +21,7 @@ + From bf9f90e75d9ddf3ce12822a96c1db300c242379e Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 12 Nov 2014 13:47:55 +0100 Subject: [PATCH 045/113] implemented a title for places used to set the browser window title in case of place changes --- java/com.sap.sailing.gwt.ui/Home.html | 2 +- .../sap/sailing/gwt/common/client/i18n/TextMessages.java | 2 ++ .../sailing/gwt/common/client/i18n/TextMessages.properties | 2 ++ .../gwt/common/client/i18n/TextMessages_de.properties | 2 ++ .../sailing/gwt/home/client/place/event/EventActivity.java | 7 +++++-- .../sailing/gwt/home/client/place/event/EventPlace.java | 5 +++++ .../gwt/home/client/place/events/EventsActivity.java | 4 ++++ .../sailing/gwt/home/client/place/events/EventsPlace.java | 5 +++++ .../home/client/place/leaderboard/LeaderboardPlace.java | 5 +++++ .../client/place/searchresult/SearchResultActivity.java | 2 ++ .../home/client/place/searchresult/SearchResultPlace.java | 5 +++++ .../gwt/home/client/place/solutions/SolutionsActivity.java | 3 +++ .../sailing/gwt/home/client/place/start/StartActivity.java | 4 ++++ .../sailing/gwt/home/client/place/start/StartPlace.java | 5 +++++ 14 files changed, 50 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/Home.html b/java/com.sap.sailing.gwt.ui/Home.html index db6fa079582..f0c73d4c6f4 100644 --- a/java/com.sap.sailing.gwt.ui/Home.html +++ b/java/com.sap.sailing.gwt.ui/Home.html @@ -19,7 +19,7 @@ - SAP Sailing Analytics Homepage + SAP Sailing - Homepage diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java index d0b57ee125b..dc40fd68eba 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java @@ -34,6 +34,8 @@ public interface TextMessages extends Messages { String chooseChart(); String series(); String regattaLeaderboards(); + String sapSailing(); + String search(); String countdownDays(); String countdownHours(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties index ee596588a6e..beb62215708 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties @@ -26,6 +26,8 @@ competitorsAnalytics=Competitors Analytics chooseChart=Choose chart type series=Series regattaLeaderboards=Regatta leaderboards +sapSailing=SAP Sailing +search=Search countdownDays=Days countdownHours=Hrs diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties index 9dcada2cc78..5606f152eb9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties @@ -26,6 +26,8 @@ competitorsAnalytics=Teilnehmeranalysen chooseChart=Wähle einen Diagrammtyp aus series=Serie regattaLeaderboards=Regattaergebnisse +sapSailing=SAP Sailing +search=Suche countdownDays=Tage countdownHours=Std. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java index c40d5ff68f8..c7403b2e989 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java @@ -56,7 +56,7 @@ public class EventActivity extends AbstractActivity { clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback() { @Override public void onSuccess(final EventDTO event) { - loadRegattaStructure(panel, clientTimeWhenRequestWasSent, event); + loadRegattaStructureAndCreateEventView(panel, clientTimeWhenRequestWasSent, event); } @Override @@ -66,8 +66,9 @@ public class EventActivity extends AbstractActivity { }); } - private void loadRegattaStructure(final AcceptsOneWidget panel, final long clientTimeWhenRequestWasSent, final EventDTO event) { + private void loadRegattaStructureAndCreateEventView(final AcceptsOneWidget panel, final long clientTimeWhenRequestWasSent, final EventDTO event) { this.event = event; + if(event.getLeaderboardGroups().size() > 0) { clientFactory.getSailingService().getRegattaStructureOfEvent(event.id, new AsyncCallback>() { @Override @@ -115,12 +116,14 @@ public class EventActivity extends AbstractActivity { private void createEventView(EventDTO event, List raceGroups, AcceptsOneWidget panel) { view = clientFactory.createEventView(event, eventPlace.getNavigationTab(), raceGroups, eventPlace.getLeaderboardIdAsNameString(), timerForClientServerOffset); panel.setWidget(view.asWidget()); + Window.setTitle(eventPlace.getTitle(event.getName())); } private void createEventWithoutRegattasView(EventDTO event, AcceptsOneWidget panel) { // no leaderboard groups defined yet -> show a teaser page EventWithoutRegattasView view = clientFactory.createEventWithoutRegattasView(event); panel.setWidget(view.asWidget()); + Window.setTitle(eventPlace.getTitle(event.getName())); } protected void loadAndUpdateEventRaceStatesLog() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlace.java index 86ba9a02ae2..c41a9d27c17 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPlace.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.place.event; import com.google.gwt.place.shared.PlaceTokenizer; import com.sap.sailing.gwt.common.client.AbstractBasePlace; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class EventPlace extends AbstractBasePlace { private final String eventUuidAsString; @@ -33,6 +34,10 @@ public class EventPlace extends AbstractBasePlace { this.leaderboardIdAsNameString = leaderboardIdAsNameString; } + public String getTitle(String eventName) { + return TextMessages.INSTANCE.sapSailing() + " - " + eventName; + } + public String getEventUuidAsString() { return eventUuidAsString; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java index dd8bfe889af..32cafbc36e7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java @@ -4,6 +4,7 @@ import java.util.List; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; @@ -13,9 +14,11 @@ import com.sap.sse.gwt.client.mvp.ErrorView; public class EventsActivity extends AbstractActivity { private final EventsClientFactory clientFactory; + private final EventsPlace place; public EventsActivity(EventsPlace place, EventsClientFactory clientFactory) { this.clientFactory = clientFactory; + this.place = place; } @Override @@ -27,6 +30,7 @@ public class EventsActivity extends AbstractActivity { public void onSuccess(List events) { final EventsView eventsView = clientFactory.createEventsView(EventsActivity.this); panel.setWidget(eventsView.asWidget()); + Window.setTitle(place.getTitle()); eventsView.setEvents(events); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java index 009d97886f6..bacc260b41c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java @@ -2,8 +2,13 @@ package com.sap.sailing.gwt.home.client.place.events; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class EventsPlace extends Place { + public String getTitle() { + return TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.events(); + } + public static class Tokenizer implements PlaceTokenizer { @Override public String getToken(EventsPlace place) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java index 221f345d9f1..d0ed07f2ae3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.place.leaderboard; import com.google.gwt.place.shared.PlaceTokenizer; import com.sap.sailing.gwt.common.client.AbstractBasePlace; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class LeaderboardPlace extends AbstractBasePlace { private final String eventUuidAsString; @@ -31,6 +32,10 @@ public class LeaderboardPlace extends AbstractBasePlace { this.showSettings = showSettings; } + public String getTitle(String eventName, String leaderboardName) { + return TextMessages.INSTANCE.sapSailing() + " - " + eventName + " - " + leaderboardName; + } + public String getEventUuidAsString() { return eventUuidAsString; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java index 7806e3e1464..968fc8e8580 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java @@ -42,6 +42,8 @@ public class SearchResultActivity extends AbstractActivity { view = clientFactory.createSearchResultView(); panel.setWidget(view.asWidget()); + Window.setTitle(searchResultPlace.getTitle()); + doSearch(searchResultPlace.getSearchText()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java index 859912279a9..a46c2373011 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.place.searchresult; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class SearchResultPlace extends Place { private final String searchText; @@ -11,6 +12,10 @@ public class SearchResultPlace extends Place { this.searchText = searchText; } + public String getTitle() { + return TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.search(); + } + public String getSearchText() { return searchText; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java index b21c97d99dc..bb67de103d1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java @@ -2,7 +2,9 @@ package com.sap.sailing.gwt.home.client.place.solutions; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AcceptsOneWidget; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class SolutionsActivity extends AbstractActivity { @@ -12,6 +14,7 @@ public class SolutionsActivity extends AbstractActivity { @Override public void start(AcceptsOneWidget panel, EventBus eventBus) { panel.setWidget(new TabletAndDesktopSolutionsView()); + Window.setTitle(TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.solutions()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java index 88f502da45e..e94e1368d91 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java @@ -10,6 +10,7 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.common.client.DateUtil; @@ -20,9 +21,11 @@ import com.sap.sse.common.Util.Pair; public class StartActivity extends AbstractActivity { private final StartClientFactory clientFactory; + private final StartPlace place; public StartActivity(StartPlace place, StartClientFactory clientFactory) { this.clientFactory = clientFactory; + this.place = place; } @Override @@ -33,6 +36,7 @@ public class StartActivity extends AbstractActivity { public void onSuccess(List result) { final StartView view = clientFactory.createStartView(); panel.setWidget(view.asWidget()); + Window.setTitle(place.getTitle()); fillStartPageEvents(view, result); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java index 69e494d1a78..e3e5080d63b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java @@ -2,8 +2,13 @@ package com.sap.sailing.gwt.home.client.place.start; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class StartPlace extends Place { + public String getTitle() { + return TextMessages.INSTANCE.sapSailing(); + } + public static class Tokenizer implements PlaceTokenizer { @Override public String getToken(StartPlace place) { From 5fada25549fee3d1aacec6be0ff4885c52d04159 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:10:33 +0100 Subject: [PATCH 046/113] added admin console module inherits to Leaderboard.gwt.xml --- .../com/sap/sailing/gwt/ui/Leaderboard.gwt.xml | 1 + .../src/com/sap/sailing/server/Replicator.java | 1 - .../server/impl/RacingEventServiceImpl.java | 8 +++----- .../impl/ReplicationServiceImpl.java | 17 +++++++++-------- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Leaderboard.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Leaderboard.gwt.xml index 0d5ebe36c10..6094f905f2a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Leaderboard.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Leaderboard.gwt.xml @@ -34,6 +34,7 @@ + diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java index c0932020be8..3398af70365 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java @@ -3,7 +3,6 @@ package com.sap.sailing.server; import com.sap.sse.replication.OperationExecutionListener; public interface Replicator { - /** * Replicates an operation to any replica of this replicator known and * {@link OperationExecutionListener#executed(RacingEventServiceOperation) notifies} all registered 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 de2144fa81c..8ee5c741a9b 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 @@ -2077,12 +2077,10 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport } /** - * Currently, the operation is executed by immediately {@link Operation#internalApplyTo(Object) applying} it to this - * service object. - *

+ * The operation is executed by immediately {@link Operation#internalApplyTo(Object) applying} it to this + * service object. It is then replicated to all replicas. * - * Future implementations of this method will need to also replicate the effects of the operation to all replica of - * this service known. + * @see {@link #replicate(RacingEventServiceOperation)} */ @Override public T apply(OperationWithResult operation) { diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 7aaec71f84a..e07c09c7f91 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -37,16 +37,17 @@ import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.ReplicationService; /** - * Can observe a {@link RacingEventService} for the operations it performs that require replication. Only observes as - * long as there are replicas registered. If the last replica is de-registered, the service stops observing the - * {@link RacingEventService}. Operations received that require replication are sent to the {@link Exchange} to which - * replica queues can bind. The exchange name is provided to this service during construction. + * Can observe a {@link Replicable} for the operations it performs that require replication. Only observes as long as + * there are replicas registered. If the last replica is de-registered, the service stops observing the + * {@link Replicable}. Operations received that require replication are sent to the {@link Exchange} to which replica + * queues can bind, using a {@link Replicator}. The exchange name and connectivity information for the message queuing + * system is provided to this service during construction. *

* - * This service object {@link RacingEventService#addOperationExecutionListener(OperationExecutionListener) registers} as - * listener at the {@link RacingEventService} so it {@link #executed(RacingEventServiceOperation) receives} - * notifications about operations executed by the {@link RacingEventService} that require replication if and only if - * there is at least one replica registered. + * This service object {@link Replicable#addOperationExecutionListener(OperationExecutionListener) registers} as + * listener at the {@link Replicable} so it {@link #executed(OperationWithResult) receives} notifications about + * operations executed by the {@link Replicable} that require replication if and only if there is at least one + * replica registered. * * @author Frank Mittag, Axel Uhl (d043530) * From 1580fd40527d398a3ae8928502a033d41ff1ebf6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:13:43 +0100 Subject: [PATCH 047/113] added Admin console module inherit to PolarSheet.gwt.xml --- .../sap/sailing/gwt/ui/PolarSheets.gwt.xml | 3 ++- .../impl/ReplicationServiceImpl.java | 24 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/PolarSheets.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/PolarSheets.gwt.xml index b2210abb967..d3d95e332e0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/PolarSheets.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/PolarSheets.gwt.xml @@ -26,7 +26,8 @@ - + + diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index e07c09c7f91..46c9593666a 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -174,16 +174,16 @@ OperationExecutionListener, HasReplicable { * @param exchangePort port of the RabbitMQ server, or 0 for default port */ public ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager) throws IOException { - this(exchangeName, exchangeHost, exchangePort, replicationInstancesManager, /* localService */ null, /* create RacingEventServiceTracker */ true); + this(exchangeName, exchangeHost, exchangePort, replicationInstancesManager, /* localService */ null, /* create ReplicableServiceTracker */ true); } private ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager, - Replicable localService, boolean createRacingEventServiceTracker) throws IOException { + Replicable localService, boolean createReplicableServiceTracker) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); - if (createRacingEventServiceTracker) { + if (createReplicableServiceTracker) { replicableTracker = getReplicableTracker(); replicableTracker.open(); } else { @@ -201,14 +201,14 @@ OperationExecutionListener, HasReplicable { /** * Like {@link #ReplicationServiceImpl(String, ReplicationInstancesManager)}, only that instead of using an OSGi - * service tracker to discover the {@link RacingEventService}, the service to replicate is "injected" here. + * service tracker to discover the {@link Replicable}, the service to replicate is "injected" here. * * @param exchangeName * the name of the exchange to which replicas can bind */ public ReplicationServiceImpl(String exchangeName, String exchangeHost, final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { - this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); + this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create ReplicableServiceTracker */ false); } protected ServiceTracker, Replicable> getReplicableTracker() { @@ -256,7 +256,7 @@ OperationExecutionListener, HasReplicable { @Override public void registerReplica(ReplicaDescriptor replica) throws IOException { if (!replicationInstancesManager.hasReplicas()) { - addAsListenerToRacingEventService(); + addAsListenerToReplicables(); synchronized (this) { if (masterChannel == null) { masterChannel = createMasterChannelAndDeclareFanoutExchange(); @@ -267,7 +267,7 @@ OperationExecutionListener, HasReplicable { logger.info("Registered replica " + replica); } - private void addAsListenerToRacingEventService() { + private void addAsListenerToReplicables() { getReplicable().addOperationExecutionListener(this); } @@ -276,7 +276,7 @@ OperationExecutionListener, HasReplicable { logger.info("Unregistering replica " + replica); replicationInstancesManager.unregisterReplica(replica); if (!replicationInstancesManager.hasReplicas()) { - removeAsListenerFromRacingEventService(); + removeAsListenerFromReplicables(); synchronized (this) { if (masterChannel != null) { masterChannel.close(); @@ -286,7 +286,7 @@ OperationExecutionListener, HasReplicable { } } - private void removeAsListenerFromRacingEventService() { + private void removeAsListenerFromReplicables() { getReplicable().removeOperationExecutionListener(this); } @@ -431,7 +431,7 @@ OperationExecutionListener, HasReplicable { // start receiving messages already now, but start in suspended mode replicatorThread = new Thread(replicator, "Replicator receiving from "+master.getMessagingHostname()+"/"+master.getExchangeName()); final Replicable replicable = getReplicable(); - // clear racingEventService state here, before starting to receive and de-serialized operations which builds up new state, e.g., in competitor store + // clear Replicable state here, before starting to receive and de-serialized operations which builds up new state, e.g., in competitor store replicable.clearReplicaState(); // see also bug 2437 replicatorThread.start(); logger.info("Started replicator thread"); @@ -494,7 +494,7 @@ OperationExecutionListener, HasReplicable { } /** - * {@link #broadcastOperation(RacingEventServiceOperation) Broadcasts} the operation to all registered + * {@link #broadcastOperation(OperationWithResult) Broadcasts} the operation to all registered * replicas by publishing it to the fan-out exchange. */ @Override @@ -559,7 +559,7 @@ OperationExecutionListener, HasReplicable { public void stopAllReplica() throws IOException { if (replicationInstancesManager.hasReplicas()) { replicationInstancesManager.removeAll(); - removeAsListenerFromRacingEventService(); + removeAsListenerFromReplicables(); synchronized (this) { if (masterChannel != null) { masterChannel.close(); From 64bcd15733ba9727e76340caa4ab42c70f432788 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:17:44 +0100 Subject: [PATCH 048/113] added admin console module inherits to VideoPopup.gwt.xml --- .../src/main/resources/com/sap/sailing/gwt/ui/VideoPopup.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/VideoPopup.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/VideoPopup.gwt.xml index 4b1a366406d..46f13aae9d6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/VideoPopup.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/VideoPopup.gwt.xml @@ -10,6 +10,7 @@ + From 882b96c15b6d8e48046a6a7cfd46bfc567d2d2c7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:18:18 +0100 Subject: [PATCH 049/113] added admin console module inherits to VideoPopup.gwt.xml and YoutubePopup.gwt.xml --- .../main/resources/com/sap/sailing/gwt/ui/YoutubePopup.gwt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/YoutubePopup.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/YoutubePopup.gwt.xml index 1b3ad714eeb..5328a11462e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/YoutubePopup.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/YoutubePopup.gwt.xml @@ -8,8 +8,8 @@ - + From 2a4f4cf20cd7529b71f1f8f91abd3025d95becc3 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:22:20 +0100 Subject: [PATCH 050/113] added admin console module inherits to RegattaOverview.gwt.xml --- .../resources/com/sap/sailing/gwt/ui/RegattaOverview.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RegattaOverview.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RegattaOverview.gwt.xml index b0a904c6698..0ffd098000a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RegattaOverview.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RegattaOverview.gwt.xml @@ -20,6 +20,7 @@ + From e1875db57b3bc5199551c12ad8244bc94b00120e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:27:18 +0100 Subject: [PATCH 051/113] added admin console module inherits to Spectator.gwt.xml --- .../sailing/gwt/ui/server/SailingServiceImpl.java | 2 +- .../com/sap/sailing/gwt/ui/Spectator.gwt.xml | 1 + .../com/sap/sse/replication/ReplicationService.java | 13 ++++++------- .../replication/impl/ReplicationServiceImpl.java | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) 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 e9ca446c1e5..71f187ccf07 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 @@ -3207,7 +3207,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S service.getNumberOfMessagesSent(replicaDescriptor), service.getNumberOfBytesSent(replicaDescriptor), service.getAverageNumberOfBytesPerMessage(replicaDescriptor))); } ReplicationMasterDTO master; - ReplicationMasterDescriptor replicatingFromMaster = service.isReplicatingFromMaster(); + ReplicationMasterDescriptor replicatingFromMaster = service.getReplicatingFromMaster(); if (replicatingFromMaster == null) { master = null; } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Spectator.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Spectator.gwt.xml index ebccbfd30fb..1c2d830fa3e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Spectator.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/Spectator.gwt.xml @@ -21,6 +21,7 @@ + diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java index d4836553f4f..fad92b35ea3 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java @@ -28,13 +28,14 @@ public interface ReplicationService { * If this server instance is a replica of some other master server instance, this method returns that master's * descriptor. Otherwise (if this instance is not a replica), returns null. */ - ReplicationMasterDescriptor isReplicatingFromMaster(); + ReplicationMasterDescriptor getReplicatingFromMaster(); /** - * Performs a servlet request to the server's {@link ReplicationServlet}, first registering this replica, ensuring - * the JMS replication topic is created, then subscribing for the master's JMS replication topic and asking the servlet - * for the stream containing the initial load. - * @throws InterruptedException + * Performs a servlet request to the remote master server's {@link ReplicationServlet}, first registering this + * replica, ensuring the message queue for replicating operations is created, then subscribing to the master's + * replication message queue and asking the servlet for the stream containing the initial load which will then be + * used to {@link Replicable#initiallyFillFrom(java.io.ObjectInputStream) replace} the current {@link Replicable}'s + * state. */ void startToReplicateFrom(ReplicationMasterDescriptor master) throws IOException, ClassNotFoundException, InterruptedException; @@ -63,13 +64,11 @@ public interface ReplicationService { /** * Stops all replica currently registered with this server. - * @throws IOException */ void stopAllReplica() throws IOException; /** * Returns an unique server identifier - * @return */ UUID getServerIdentifier(); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 46c9593666a..729d3de7911 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -398,7 +398,7 @@ OperationExecutionListener, HasReplicable { } @Override - public ReplicationMasterDescriptor isReplicatingFromMaster() { + public ReplicationMasterDescriptor getReplicatingFromMaster() { return replicatingFromMaster; } @@ -537,7 +537,7 @@ OperationExecutionListener, HasReplicable { @Override public void stopToReplicateFromMaster() throws IOException { - ReplicationMasterDescriptor descriptor = isReplicatingFromMaster(); + ReplicationMasterDescriptor descriptor = getReplicatingFromMaster(); if (descriptor != null) { synchronized(replicaUUIDs) { if (replicator != null) { From 13da3d76270b6b369eac5e39cbc246c5ad58ee41 Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 12 Nov 2014 14:29:35 +0100 Subject: [PATCH 052/113] set title for LeaderboardPlace --- .../gwt/home/client/place/leaderboard/LeaderboardActivity.java | 1 + .../gwt/home/client/place/leaderboard/LeaderboardPlace.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java index 6ef4308e09f..6a55946075e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java @@ -106,6 +106,7 @@ public class LeaderboardActivity extends AbstractActivity implements ErrorReport boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); AnalyticsView analyticsView = clientFactory.createLeaderboardView(event, leaderboardName, timerForClientServerOffset); + Window.setTitle(leaderboardPlace.getTitle(event.getName(), leaderboardDisplayName)); if (leaderboardType.isMetaLeaderboard()) { analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java index d0ed07f2ae3..75e2734de7e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java @@ -33,7 +33,7 @@ public class LeaderboardPlace extends AbstractBasePlace { } public String getTitle(String eventName, String leaderboardName) { - return TextMessages.INSTANCE.sapSailing() + " - " + eventName + " - " + leaderboardName; + return TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName; } public String getEventUuidAsString() { From 61320d9428af725306c10e0af174ab7c701e9045 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:33:50 +0100 Subject: [PATCH 053/113] added admin console module inherits to TvView.gwt.xml --- .../resources/com/sap/sailing/gwt/ui/TvView.gwt.xml | 1 + .../com/sap/sse/replication/ReplicationService.java | 11 ++++++++--- .../sse/replication/impl/ReplicationServiceImpl.java | 5 +++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/TvView.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/TvView.gwt.xml index 91a7eb4d5d0..cadf2cd8972 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/TvView.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/TvView.gwt.xml @@ -16,6 +16,7 @@ + diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java index fad92b35ea3..0c974d1d99a 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java @@ -45,6 +45,12 @@ public interface ReplicationService { */ void registerReplica(ReplicaDescriptor replica) throws IOException; + /** + * When this service runs on a master instance, the replica will no longer be considered part of this + * master's replica set. In particular, if this was the last replica that got de-registered, this replication + * service will stop to pump replication operations into the message queue until a replica is + * {@link #registerReplica(ReplicaDescriptor) registered} again. + */ void unregisterReplica(ReplicaDescriptor replica) throws IOException; /** @@ -56,9 +62,8 @@ public interface ReplicationService { double getAverageNumberOfOperationsPerMessage(ReplicaDescriptor replicaDescriptor); /** - * Stops the currently running replication. As there can be only one replication running - * this method needs no parameters. - * @throws IOException + * For this instance running on a replica, stops the currently running replication. As a replica has exactly one + * master server that it replicates, this method needs no parameters. */ void stopToReplicateFromMaster() throws IOException; diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 729d3de7911..f6d41bd0185 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -98,7 +98,12 @@ OperationExecutionListener, HasReplicable { */ private final UUID serverUUID; + /** + * For this instance running as a replica, the replicator receives messages from the master's queue and applies them + * to the local replica. + */ private Replicator replicator; + private Thread replicatorThread; /** From cf65030908d9570daf4e7ab6281fdad288141a19 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:42:14 +0100 Subject: [PATCH 054/113] added admin console module inherit fo LeaderboardEditing.gwt.xml --- .../resources/com/sap/sailing/gwt/ui/LeaderboardEditing.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/LeaderboardEditing.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/LeaderboardEditing.gwt.xml index b93c09ff035..9d8a39dbf19 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/LeaderboardEditing.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/LeaderboardEditing.gwt.xml @@ -19,6 +19,7 @@ + From 75038b748dbcb5b2b0632aee40c3812301d737db Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 14:53:08 +0100 Subject: [PATCH 055/113] added admin console module inherits to DataMining.gwt.xml --- .../main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml index bbf36fb5e2f..81eecea4598 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml @@ -22,7 +22,8 @@ - + + From 447b2fbde464e74f6086c23822dbe01dce1cf06f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 15:36:05 +0100 Subject: [PATCH 056/113] added admin console module inherits to Home.gwt.xml --- .../src/main/resources/com/sap/sailing/gwt/Home.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml index e63c7a90800..d4c4f4b64e6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/Home.gwt.xml @@ -25,6 +25,7 @@ + From 5abbc22d6a18f4d56c344fb1bb4f540196e3fbf5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 15:51:34 +0100 Subject: [PATCH 057/113] added admin console module inherits for RaceBoard.gwt.xml --- .../src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml index 27842d2701f..896c341078b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml @@ -14,6 +14,7 @@ + From 312b18e96ca4523749d9e5986a1fd7780e61b7eb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 12 Nov 2014 16:06:38 +0100 Subject: [PATCH 058/113] added admin console module inherits to AutoPlay.gwt.xml --- .../src/main/resources/com/sap/sailing/gwt/AutoPlay.gwt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/AutoPlay.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/AutoPlay.gwt.xml index 2d7a5b2f1f0..c1abf418516 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/AutoPlay.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/AutoPlay.gwt.xml @@ -26,6 +26,7 @@ + From 4cf06f32922563acf0d53c15b28614c82c7fb042 Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 12 Nov 2014 22:56:36 +0100 Subject: [PATCH 059/113] refactoring of LeaderboardPlace to RegattaPlace and SeriesPlace (also to prepare future navigation structure) first step to enable tab navigation with history management for regatta and series leaderboards --- .../client/app/ApplicationActivityMapper.java | 12 +- .../client/app/ApplicationClientFactory.java | 5 +- .../client/app/ApplicationHistoryMapper.java | 4 +- .../home/client/app/HomePlacesNavigator.java | 18 +- .../SmartphoneApplicationClientFactory.java | 17 +- ...letAndDesktopApplicationClientFactory.java | 17 +- .../place/event/header/EventHeader.java | 7 +- .../OldCompetitorCharts.ui.xml | 1 - .../oldleaderboard/OldLeaderboard.ui.xml | 1 - .../OldMultiLeaderboard.ui.xml | 1 - .../client/place/event/regatta/Regatta.java | 8 +- .../regattaanalytics/RegattaAnalytics.ui.xml | 2 +- .../EventSeriesAnalytics.ui.xml | 2 +- .../leaderboard/LeaderboardActivityProxy.java | 25 -- .../leaderboard/LeaderboardClientFactory.java | 9 - .../RegattaActivity.java} | 22 +- .../place/regatta/RegattaActivityProxy.java | 25 ++ .../place/regatta/RegattaAnalyticsView.java | 26 ++ .../place/regatta/RegattaClientFactory.java | 9 + .../RegattaPlace.java} | 33 ++- .../TabletAndDesktopRegattaView.java} | 8 +- .../TabletAndDesktopRegattaView.ui.xml} | 0 .../client/place/series/SeriesActivity.java | 239 ++++++++++++++++++ .../place/series/SeriesActivityProxy.java | 25 ++ .../SeriesAnalyticsView.java} | 4 +- .../place/series/SeriesClientFactory.java | 9 + .../home/client/place/series/SeriesPlace.java | 81 ++++++ .../series/TabletAndDesktopSeriesView.java | 57 +++++ .../series/TabletAndDesktopSeriesView.ui.xml | 11 + 29 files changed, 585 insertions(+), 93 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivityProxy.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardClientFactory.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/{leaderboard/LeaderboardActivity.java => regatta/RegattaActivity.java} (93%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivityProxy.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/{leaderboard/LeaderboardPlace.java => regatta/RegattaPlace.java} (60%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/{leaderboard/TabletAndDesktopLeaderboardView.java => regatta/TabletAndDesktopRegattaView.java} (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/{leaderboard/TabletAndDesktopLeaderboardView.ui.xml => regatta/TabletAndDesktopRegattaView.ui.xml} (100%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivityProxy.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/{leaderboard/AnalyticsView.java => series/SeriesAnalyticsView.java} (93%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesPlace.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationActivityMapper.java index ef42d84a558..ef5ae3e146a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationActivityMapper.java @@ -11,10 +11,12 @@ import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardActivityProxy; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaActivityProxy; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultActivityProxy; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesActivityProxy; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivityProxy; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; @@ -46,8 +48,10 @@ public class ApplicationActivityMapper implements ActivityMapper { return new SponsoringActivityProxy((SponsoringPlace) place, clientFactory); } else if (place instanceof SolutionsPlace) { return new SolutionsActivityProxy((SolutionsPlace) place, clientFactory); - } else if (place instanceof LeaderboardPlace) { - return new LeaderboardActivityProxy((LeaderboardPlace) place, clientFactory); + } else if (place instanceof RegattaPlace) { + return new RegattaActivityProxy((RegattaPlace) place, clientFactory); + } else if (place instanceof SeriesPlace) { + return new SeriesActivityProxy((SeriesPlace) place, clientFactory); } else if (place instanceof SearchResultPlace) { return new SearchResultActivityProxy((SearchResultPlace) place, clientFactory); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationClientFactory.java index ec6c2f7580f..dd4f58315c4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationClientFactory.java @@ -4,14 +4,15 @@ import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsClientFactory; import com.sap.sailing.gwt.home.client.place.contact.ContactClientFactory; import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardClientFactory; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaClientFactory; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultClientFactory; +import com.sap.sailing.gwt.home.client.place.series.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; public interface ApplicationClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory, EventsClientFactory, StartClientFactory, SponsoringClientFactory, SolutionsClientFactory, SearchResultClientFactory, - LeaderboardClientFactory { + RegattaClientFactory, SeriesClientFactory { HomePlacesNavigator getHomePlacesNavigator(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java index 72f4ab48c09..1d22da7167a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java @@ -6,7 +6,7 @@ import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; @@ -14,6 +14,6 @@ import com.sap.sailing.gwt.home.client.place.start.StartPlace; @WithTokenizers({ AboutUsPlace.Tokenizer.class, ContactPlace.Tokenizer.class, EventPlace.Tokenizer.class, EventsPlace.Tokenizer.class, SolutionsPlace.Tokenizer.class, SponsoringPlace.Tokenizer.class, SearchResultPlace.Tokenizer.class, StartPlace.Tokenizer.class, - LeaderboardPlace.Tokenizer.class}) + RegattaPlace.Tokenizer.class}) public interface ApplicationHistoryMapper extends PlaceHistoryMapper { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index cad4ff3a272..2ca15d7bd6d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java @@ -6,8 +6,11 @@ import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.event.EventPlace.EventNavigationTabs; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; @@ -52,9 +55,16 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { return createPlaceNavigation(baseUrl, isOnRemoteServer, eventPlace, new EventPlace.Tokenizer()); } - public PlaceNavigation getLeaderboardNavigation(String eventUuidAsString, String leaderboardIdAsNameString, String baseUrl, boolean isOnRemoteServer) { - LeaderboardPlace leaderboardPlace = new LeaderboardPlace(eventUuidAsString, leaderboardIdAsNameString, true, true); - return createPlaceNavigation(baseUrl, isOnRemoteServer, leaderboardPlace, new LeaderboardPlace.Tokenizer()); + /** this place will be merged into the common regatta view as tab later on */ + public PlaceNavigation getRegattaAnalyticsNavigation(String eventUuidAsString, RegattaNavigationTabs navigationTab, String leaderboardIdAsNameString, String baseUrl, boolean isOnRemoteServer) { + RegattaPlace regattaPlace = new RegattaPlace(eventUuidAsString, navigationTab, leaderboardIdAsNameString, true, true); + return createPlaceNavigation(baseUrl, isOnRemoteServer, regattaPlace, new RegattaPlace.Tokenizer()); + } + + /** this place will be merged into the common series event view as tab later on */ + public PlaceNavigation getSeriesAnalyticsNavigation(String eventUuidAsString, SeriesNavigationTabs navigationTab, String leaderboardIdAsNameString, String baseUrl, boolean isOnRemoteServer) { + SeriesPlace seriesPlace = new SeriesPlace(eventUuidAsString, navigationTab, leaderboardIdAsNameString, true, true); + return createPlaceNavigation(baseUrl, isOnRemoteServer, seriesPlace, new SeriesPlace.Tokenizer()); } public PlaceNavigation getSearchResultNavigation(String searchQuery) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 2f54a81744b..6942c68bfa2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -6,18 +6,20 @@ import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView; +import com.sap.sailing.gwt.home.client.place.event.EventPlace.EventNavigationTabs; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; -import com.sap.sailing.gwt.home.client.place.event.EventPlace.EventNavigationTabs; import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; -import com.sap.sailing.gwt.home.client.place.leaderboard.AnalyticsView; -import com.sap.sailing.gwt.home.client.place.leaderboard.TabletAndDesktopLeaderboardView; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; +import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; +import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; +import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; @@ -80,8 +82,13 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien } @Override - public AnalyticsView createLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopLeaderboardView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + } + + @Override + public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { + return new TabletAndDesktopSeriesView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index 8ef401ef9cc..a84444b8195 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -6,18 +6,20 @@ import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView; +import com.sap.sailing.gwt.home.client.place.event.EventPlace.EventNavigationTabs; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; -import com.sap.sailing.gwt.home.client.place.event.EventPlace.EventNavigationTabs; import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; -import com.sap.sailing.gwt.home.client.place.leaderboard.AnalyticsView; -import com.sap.sailing.gwt.home.client.place.leaderboard.TabletAndDesktopLeaderboardView; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; +import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; +import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; +import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; @@ -80,8 +82,13 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio } @Override - public AnalyticsView createLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopLeaderboardView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + } + + @Override + public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { + return new TabletAndDesktopSeriesView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index c7f2fb90c2a..cbd0fa5f5a6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -21,7 +21,8 @@ import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.event.AbstractEventComposite; import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.event.EventPlaceNavigator; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.ui.shared.CourseAreaDTO; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -76,7 +77,7 @@ public class EventHeader extends AbstractEventComposite { // private final List links3; private final HomePlacesNavigator placeNavigator; - private PlaceNavigation overallLeaderboardNavigation = null; + private PlaceNavigation overallLeaderboardNavigation = null; private PlaceNavigation regattasNavigation = null; public EventHeader(EventDTO event, HomePlacesNavigator placeNavigator, EventPlaceNavigator pageNavigator) { @@ -163,7 +164,7 @@ public class EventHeader extends AbstractEventComposite { eventName = leaderboardGroupDTO.getDisplayName() != null ? leaderboardGroupDTO.getDisplayName() : leaderboardGroupDTO.getName(); String overallLeaderboardName = leaderboardGroupDTO.getName() + " " + LeaderboardNameConstants.OVERALL; - overallLeaderboardNavigation = placeNavigator.getLeaderboardNavigation(event.id.toString(), overallLeaderboardName, event.getBaseURL(), event.isOnRemoteServer()); + overallLeaderboardNavigation = placeNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.OverallLeaderboard, overallLeaderboardName, event.getBaseURL(), event.isOnRemoteServer()); seriesLeaderboardAnchor.setHref(overallLeaderboardNavigation.getTargetUrl()); StrippedLeaderboardDTO leaderboardFittingToEvent = findLeaderboardWithSameCourseArea(event); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml index e43d0da7e81..997e1bc24b5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml @@ -1,7 +1,6 @@ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml index a299bd5fa75..8f65326ebe2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml @@ -1,7 +1,6 @@ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml index 6aef6dfbdd2..5b78dfeda4e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml @@ -1,7 +1,6 @@ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java index 56322d48ed8..5fa910d549c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.java @@ -25,7 +25,8 @@ import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.event.EventPlaceNavigator; -import com.sap.sailing.gwt.home.client.place.leaderboard.LeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; @@ -77,7 +78,7 @@ public class Regatta extends Composite { @UiField Image boatClassImage; - private PlaceNavigation leaderboardNavigation; + private PlaceNavigation leaderboardNavigation; private PlaceNavigation regattaNavigation; private final HomePlacesNavigator placesNavigator; private final EventPlaceNavigator eventPlaceNavigator; @@ -108,7 +109,8 @@ public class Regatta extends Composite { if(isSingleView) { regattaDetailsLink.setVisible(false); - leaderboardNavigation = placesNavigator.getLeaderboardNavigation(event.id.toString(), leaderboard.name, event.getBaseURL(), event.isOnRemoteServer()); + leaderboardNavigation = placesNavigator.getRegattaAnalyticsNavigation(event.id.toString(), RegattaNavigationTabs.Leaderboard, + leaderboard.name, event.getBaseURL(), event.isOnRemoteServer()); leaderboardLink.setHref(leaderboardNavigation.getTargetUrl()); } else { leaderboardLink.setVisible(false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml index 21c25e18108..58b5ee5b1ca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml @@ -1,7 +1,7 @@ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml index 4fdfad52835..0e6756cf96e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml @@ -1,7 +1,7 @@ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivityProxy.java deleted file mode 100644 index 9d186021e7c..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivityProxy.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; - -import com.google.gwt.core.client.GWT; -import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; - -public class LeaderboardActivityProxy extends AbstractActivityProxy { - - private final LeaderboardClientFactory clientFactory; - private final LeaderboardPlace place; - - public LeaderboardActivityProxy(LeaderboardPlace place, LeaderboardClientFactory clientFactory) { - this.place = place; - this.clientFactory = clientFactory; - } - - @Override - protected void startAsync() { - GWT.runAsync(new AbstractRunAsyncCallback() { - @Override - public void onSuccess() { - super.onSuccess(new LeaderboardActivity(place, clientFactory)); - } - }); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardClientFactory.java deleted file mode 100644 index 8ed05437ba1..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardClientFactory.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; - -import com.sap.sailing.gwt.ui.client.SailingClientFactory; -import com.sap.sailing.gwt.ui.shared.EventDTO; -import com.sap.sse.gwt.client.player.Timer; - -public interface LeaderboardClientFactory extends SailingClientFactory { - AnalyticsView createLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset); -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java index 6a55946075e..2546f24ca55 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; +package com.sap.sailing.gwt.home.client.place.regatta; import java.util.ArrayList; import java.util.Collections; @@ -33,16 +33,16 @@ import com.sap.sse.gwt.client.player.Timer.PlayStates; import com.sap.sse.gwt.client.useragent.UserAgentDetails; import com.sap.sse.gwt.shared.GwtHttpRequestUtils; -public class LeaderboardActivity extends AbstractActivity implements ErrorReporter { - private final LeaderboardClientFactory clientFactory; - private final LeaderboardPlace leaderboardPlace; +public class RegattaActivity extends AbstractActivity implements ErrorReporter { + private final RegattaClientFactory clientFactory; + private final RegattaPlace regattaPlace; private final Timer timerForClientServerOffset; private final UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); - public LeaderboardActivity(LeaderboardPlace place, LeaderboardClientFactory clientFactory) { + public RegattaActivity(RegattaPlace place, RegattaClientFactory clientFactory) { this.clientFactory = clientFactory; - this.leaderboardPlace = place; + this.regattaPlace = place; timerForClientServerOffset = new Timer(PlayModes.Replay); } @@ -51,9 +51,9 @@ public class LeaderboardActivity extends AbstractActivity implements ErrorReport public void start(final AcceptsOneWidget panel, EventBus eventBus) { panel.setWidget(new Placeholder()); - UUID eventUUID = UUID.fromString(leaderboardPlace.getEventUuidAsString()); - final String leaderboardName = leaderboardPlace.getLeaderboardIdAsNameString(); - final boolean showRaceDetails = leaderboardPlace.getShowRaceDetails(); + UUID eventUUID = UUID.fromString(regattaPlace.getEventUuidAsString()); + final String leaderboardName = regattaPlace.getLeaderboardIdAsNameString(); + final boolean showRaceDetails = regattaPlace.getShowRaceDetails(); clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback() { @Override @@ -105,8 +105,8 @@ public class LeaderboardActivity extends AbstractActivity implements ErrorReport boolean showOverallLeaderboard = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_LEADERBOARD, false); boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); - AnalyticsView analyticsView = clientFactory.createLeaderboardView(event, leaderboardName, timerForClientServerOffset); - Window.setTitle(leaderboardPlace.getTitle(event.getName(), leaderboardDisplayName)); + RegattaAnalyticsView analyticsView = clientFactory.createRegattaAnalyticsView(event, leaderboardName, timerForClientServerOffset); + Window.setTitle(regattaPlace.getTitle(event.getName(), leaderboardDisplayName)); if (leaderboardType.isMetaLeaderboard()) { analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivityProxy.java new file mode 100644 index 00000000000..e1a718527fb --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivityProxy.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.client.place.regatta; + +import com.google.gwt.core.client.GWT; +import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; + +public class RegattaActivityProxy extends AbstractActivityProxy { + + private final RegattaClientFactory clientFactory; + private final RegattaPlace place; + + public RegattaActivityProxy(RegattaPlace place, RegattaClientFactory clientFactory) { + this.place = place; + this.clientFactory = clientFactory; + } + + @Override + protected void startAsync() { + GWT.runAsync(new AbstractRunAsyncCallback() { + @Override + public void onSuccess() { + super.onSuccess(new RegattaActivity(place, clientFactory)); + } + }); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java new file mode 100644 index 00000000000..081c15a22a8 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java @@ -0,0 +1,26 @@ +package com.sap.sailing.gwt.home.client.place.regatta; + +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.RaceIdentifier; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.async.AsyncActionsExecutor; +import com.sap.sse.gwt.client.player.Timer; +import com.sap.sse.gwt.client.useragent.UserAgentDetails; + +public interface RegattaAnalyticsView { + Widget asWidget(); + + void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, + final Timer timer, final LeaderboardSettings leaderboardSettings, final RaceIdentifier preselectedRace, + final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, + final UserAgentDetails userAgent, boolean showRaceDetails, + boolean autoExpandLastRaceColumn, boolean showOverallLeaderboard); + + void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, + Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, + String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, + UserAgentDetails userAgent, boolean showRaceDetails, + boolean autoExpandLastRaceColumn, boolean showSeriesLeaderboards); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java new file mode 100644 index 00000000000..276f51f3f4a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java @@ -0,0 +1,9 @@ +package com.sap.sailing.gwt.home.client.place.regatta; + +import com.sap.sailing.gwt.ui.client.SailingClientFactory; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.gwt.client.player.Timer; + +public interface RegattaClientFactory extends SailingClientFactory { + RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaPlace.java similarity index 60% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaPlace.java index 75e2734de7e..adbb88eb0d8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/LeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaPlace.java @@ -1,32 +1,43 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; +package com.sap.sailing.gwt.home.client.place.regatta; import com.google.gwt.place.shared.PlaceTokenizer; import com.sap.sailing.gwt.common.client.AbstractBasePlace; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -public class LeaderboardPlace extends AbstractBasePlace { +public class RegattaPlace extends AbstractBasePlace { private final String eventUuidAsString; private final String leaderboardIdAsNameString; private final Boolean showRaceDetails; private final Boolean showSettings; + private final RegattaNavigationTabs navigationTab; private final static String PARAM_EVENTID = "eventId"; private final static String PARAM_LEADERBOARD_NAME = "leaderboardName"; private final static String PARAM_SHOW_RACE_DETAILS = "showRaceDetails"; private final static String PARAM_SHOW_SETTINGS = "showSettings"; + private final static String PARAM_NAVIGATION_TAB = "navigationTab"; + + public enum RegattaNavigationTabs { Leaderboard, CompetitorAnalytics }; - public LeaderboardPlace(String url) { + public RegattaPlace(String url) { super(url); eventUuidAsString = getParameter(PARAM_EVENTID); leaderboardIdAsNameString = getParameter(PARAM_LEADERBOARD_NAME); showRaceDetails = Boolean.valueOf(getParameter(PARAM_SHOW_RACE_DETAILS)); showSettings = Boolean.valueOf(getParameter(PARAM_SHOW_SETTINGS)); + String paramNavTab = getParameter(PARAM_NAVIGATION_TAB); + if(paramNavTab != null) { + navigationTab = RegattaNavigationTabs.valueOf(paramNavTab); + } else { + navigationTab = RegattaNavigationTabs.Leaderboard; + } } - public LeaderboardPlace(String eventUuidAsString, String leaderboardIdAsNameString, Boolean showRaceDetails, Boolean showSettings) { - super(PARAM_EVENTID, eventUuidAsString, PARAM_LEADERBOARD_NAME, leaderboardIdAsNameString, + public RegattaPlace(String eventUuidAsString, RegattaNavigationTabs navigationTab, String leaderboardIdAsNameString, Boolean showRaceDetails, Boolean showSettings) { + super(PARAM_EVENTID, eventUuidAsString, PARAM_NAVIGATION_TAB, navigationTab.name(), PARAM_LEADERBOARD_NAME, leaderboardIdAsNameString, PARAM_SHOW_RACE_DETAILS, String.valueOf(showRaceDetails), PARAM_SHOW_SETTINGS, String.valueOf(showSettings)); this.eventUuidAsString = eventUuidAsString; + this.navigationTab = navigationTab; this.leaderboardIdAsNameString = leaderboardIdAsNameString; this.showRaceDetails = showRaceDetails; this.showSettings = showSettings; @@ -40,6 +51,10 @@ public class LeaderboardPlace extends AbstractBasePlace { return eventUuidAsString; } + public RegattaNavigationTabs getNavigationTab() { + return navigationTab; + } + public String getLeaderboardIdAsNameString() { return leaderboardIdAsNameString; } @@ -52,15 +67,15 @@ public class LeaderboardPlace extends AbstractBasePlace { return showSettings; } - public static class Tokenizer implements PlaceTokenizer { + public static class Tokenizer implements PlaceTokenizer { @Override - public String getToken(LeaderboardPlace place) { + public String getToken(RegattaPlace place) { return place.getParametersAsToken(); } @Override - public LeaderboardPlace getPlace(String url) { - return new LeaderboardPlace(url); + public RegattaPlace getPlace(String url) { + return new RegattaPlace(url); } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/TabletAndDesktopLeaderboardView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/TabletAndDesktopLeaderboardView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java index 1431d60a3a0..1303840e6ff 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/TabletAndDesktopLeaderboardView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; +package com.sap.sailing.gwt.home.client.place.regatta; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -17,16 +17,16 @@ import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.useragent.UserAgentDetails; -public class TabletAndDesktopLeaderboardView extends Composite implements AnalyticsView { +public class TabletAndDesktopRegattaView extends Composite implements RegattaAnalyticsView { private static LeaderboardPageViewUiBinder uiBinder = GWT.create(LeaderboardPageViewUiBinder.class); - interface LeaderboardPageViewUiBinder extends UiBinder { + interface LeaderboardPageViewUiBinder extends UiBinder { } @UiField(provided=true) RegattaAnalytics regattaAnalytics; @UiField(provided=true) EventSeriesAnalytics seriesAnalytics; - public TabletAndDesktopLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + public TabletAndDesktopRegattaView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { regattaAnalytics = new RegattaAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/TabletAndDesktopLeaderboardView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/TabletAndDesktopLeaderboardView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java new file mode 100644 index 00000000000..bc925672a0c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java @@ -0,0 +1,239 @@ +package com.sap.sailing.gwt.home.client.place.series; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import com.google.gwt.activity.shared.AbstractActivity; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.AcceptsOneWidget; +import com.sap.sailing.domain.common.DetailType; +import com.sap.sailing.domain.common.LeaderboardType; +import com.sap.sailing.domain.common.RaceIdentifier; +import com.sap.sailing.domain.common.RegattaNameAndRaceName; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; +import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.common.Util; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.async.AsyncActionsExecutor; +import com.sap.sse.gwt.client.async.MarkedAsyncCallback; +import com.sap.sse.gwt.client.mvp.ErrorView; +import com.sap.sse.gwt.client.player.Timer; +import com.sap.sse.gwt.client.player.Timer.PlayModes; +import com.sap.sse.gwt.client.player.Timer.PlayStates; +import com.sap.sse.gwt.client.useragent.UserAgentDetails; +import com.sap.sse.gwt.shared.GwtHttpRequestUtils; + +public class SeriesActivity extends AbstractActivity implements ErrorReporter { + private final SeriesClientFactory clientFactory; + private final SeriesPlace seriesPlace; + private final Timer timerForClientServerOffset; + + private final UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); + + public SeriesActivity(SeriesPlace place, SeriesClientFactory clientFactory) { + this.clientFactory = clientFactory; + this.seriesPlace = place; + + timerForClientServerOffset = new Timer(PlayModes.Replay); + } + + @Override + public void start(final AcceptsOneWidget panel, EventBus eventBus) { + panel.setWidget(new Placeholder()); + + UUID eventUUID = UUID.fromString(seriesPlace.getEventUuidAsString()); + final String leaderboardName = seriesPlace.getLeaderboardIdAsNameString(); + final boolean showRaceDetails = seriesPlace.getShowRaceDetails(); + + clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback() { + @Override + public void onSuccess(final EventDTO event) { + if (leaderboardName != null) { + clientFactory.getSailingService().checkLeaderboardName(leaderboardName, new MarkedAsyncCallback>( + new AsyncCallback>() { + @Override + public void onSuccess(Util.Pair leaderboardNameAndType) { + if (leaderboardNameAndType != null && leaderboardName.equals(leaderboardNameAndType.getA())) { + createAnalyticsViewer(panel, event, leaderboardNameAndType.getA(), leaderboardNameAndType.getB(), showRaceDetails); + } else { + createErrorView(TextMessages.INSTANCE.errorMessageNoSuchLeaderboard(), null, panel); + } + } + + @Override + public void onFailure(Throwable caught) { + createErrorView("Error while checking the leaderboard name with service checkLeaderboardName()", caught, panel); + } + })); + } else { + createErrorView(TextMessages.INSTANCE.errorMessageNoSuchLeaderboard(), null, panel); + } + } + + @Override + public void onFailure(Throwable caught) { + createErrorView("Error while loading the event with service getEventById()", caught, panel); + } + }); + } + + private void createAnalyticsViewer(AcceptsOneWidget panel, EventDTO event, String leaderboardName, LeaderboardType leaderboardType, boolean showRaceDetails) { + String leaderboardDisplayName = Window.Location.getParameter("displayName"); + if (leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) { + leaderboardDisplayName = leaderboardName; + } + + long delayBetweenAutoAdvancesInMilliseconds = 3000l; + final RaceIdentifier preselectedRace = getPreselectedRace(Window.Location.getParameterMap()); + // make a single live request as the default but don't continue to play by default + Timer timer = new Timer(PlayModes.Live, PlayStates.Paused, delayBetweenAutoAdvancesInMilliseconds); + final LeaderboardSettings leaderboardSettings = createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap()); + if (leaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds() != null) { + timer.setPlayMode(PlayModes.Live); // the leaderboard, viewed via the entry point, goes "live" and "playing" if an auto-refresh + } // interval has been specified + boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); + boolean showOverallLeaderboard = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_LEADERBOARD, false); + boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); + + SeriesAnalyticsView analyticsView = clientFactory.createSeriesAnalyticsView(event, leaderboardName, timerForClientServerOffset); + Window.setTitle(seriesPlace.getTitle(event.getName(), leaderboardDisplayName)); + + if (leaderboardType.isMetaLeaderboard()) { + analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), + timer, leaderboardSettings, null, preselectedRace, "leaderboardGroupName", leaderboardName, this, + userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); + } else { + analyticsView.createRegattaAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), + timer, leaderboardSettings, preselectedRace, "leaderboardGroupName", leaderboardName, this, + userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); + } + + panel.setWidget(analyticsView.asWidget()); + } + + /** + * Constructs {@link LeaderboardSettings} from the URL parameters found + */ + private LeaderboardSettings createLeaderboardSettingsFromURLParameters(Map> parameterMap) { + LeaderboardSettings result; + Long refreshIntervalMillis = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_REFRESH_INTERVAL_MILLIS) ? Long + .valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_REFRESH_INTERVAL_MILLIS).get(0)) : null; + RaceColumnSelectionStrategies raceColumnSelectionStrategy; + final Integer numberOfLastRacesToShow; + if (parameterMap.containsKey(LeaderboardUrlSettings.PARAM_NAME_LAST_N)) { + raceColumnSelectionStrategy = RaceColumnSelectionStrategies.LAST_N; + numberOfLastRacesToShow = Integer.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_NAME_LAST_N).get(0)); + } else if (isSmallWidth()) { + raceColumnSelectionStrategy = RaceColumnSelectionStrategies.LAST_N; + int width = Window.getClientWidth(); + numberOfLastRacesToShow = (width-275)/40; + } else { + raceColumnSelectionStrategy = RaceColumnSelectionStrategies.EXPLICIT; + numberOfLastRacesToShow = null; + } + if (parameterMap.containsKey(LeaderboardUrlSettings.PARAM_RACE_NAME) || parameterMap.containsKey(LeaderboardUrlSettings.PARAM_RACE_DETAIL) || + parameterMap.containsKey(LeaderboardUrlSettings.PARAM_LEG_DETAIL) || parameterMap.containsKey(LeaderboardUrlSettings.PARAM_MANEUVER_DETAIL) || + parameterMap.containsKey(LeaderboardUrlSettings.PARAM_OVERALL_DETAIL) || parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_ADDED_SCORES) || + parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_COLUMN_WITH_NUMBER_OF_RACES_COMPLETED)) { + List maneuverDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_MANEUVER_DETAIL)); + List raceDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_DETAIL)); + List overallDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_OVERALL_DETAIL)); + List legDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_LEG_DETAIL)); + List namesOfRacesToShow = getStringListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_NAME)); + boolean showAddedScores = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_ADDED_SCORES) ? + Boolean.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_SHOW_ADDED_SCORES).get(0)) : false; + boolean showOverallColumnWithNumberOfRacesSailedPerCompetitor = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_COLUMN_WITH_NUMBER_OF_RACES_COMPLETED) ? + Boolean.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_COLUMN_WITH_NUMBER_OF_RACES_COMPLETED).get(0)) : false; + boolean autoExpandPreSelectedRace = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE) ? + Boolean.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE).get(0)) : + (namesOfRacesToShow != null && namesOfRacesToShow.size() == 1); + result = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetails, + /* namesOfRaceColumnsToShow */ null, + namesOfRacesToShow, numberOfLastRacesToShow, + autoExpandPreSelectedRace, refreshIntervalMillis, /* sort by column */ (namesOfRacesToShow != null && !namesOfRacesToShow.isEmpty()) ? + namesOfRacesToShow.get(0) : null, + /* ascending */ true, /* updateUponPlayStateChange */ raceDetails.isEmpty() && legDetails.isEmpty(), + raceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesSailedPerCompetitor); + + } else { + final List overallDetails = Collections.singletonList(DetailType.REGATTA_RANK); + result = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, + /* overallDetails */ overallDetails, null, + /* autoExpandFirstRace */false, refreshIntervalMillis, numberOfLastRacesToShow, + raceColumnSelectionStrategy); + } + return result; + } + + private RaceIdentifier getPreselectedRace(Map> parameterMap) { + RaceIdentifier result; + if (parameterMap.containsKey(LeaderboardUrlSettings.PARAM_RACE_NAME) && parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_NAME).size() == 1 && + parameterMap.containsKey(LeaderboardUrlSettings.PARAM_REGATTA_NAME) && parameterMap.get(LeaderboardUrlSettings.PARAM_REGATTA_NAME).size() == 1) { + result = new RegattaNameAndRaceName(parameterMap.get(LeaderboardUrlSettings.PARAM_REGATTA_NAME).get(0), parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_NAME).get(0)); + } else { + result = null; + } + return result; + } + + private List getDetailTypeListFromParamValue(List list) { + List result = new ArrayList(); + if (list != null) { + for (String entry : list) { + try { + result.add(DetailType.valueOf(entry)); + } catch (IllegalArgumentException e) { + } + } + } + return result; + } + + private List getStringListFromParamValue(List list) { + List result = new ArrayList(); + if (list != null) { + result.addAll(list); + } + return result; + } + + private void createErrorView(String errorMessage, Throwable errorReason, AcceptsOneWidget panel) { + ErrorView view = clientFactory.createErrorView(errorMessage, errorReason); + panel.setWidget(view.asWidget()); + } + + public boolean isSmallWidth() { + int width = Window.getClientWidth(); + return width <= 720; + } + + @Override + public void reportError(String message) { + Window.alert(message); + } + + @Override + public void reportError(String message, boolean silentMode) { + if (silentMode) { + Window.setStatus(message); + } else { + reportError(message); + } + } + + @Override + public void reportPersistentInformation(String message) { + Window.setStatus(message); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivityProxy.java new file mode 100644 index 00000000000..fc85427f6b8 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivityProxy.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.client.place.series; + +import com.google.gwt.core.client.GWT; +import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; + +public class SeriesActivityProxy extends AbstractActivityProxy { + + private final SeriesClientFactory clientFactory; + private final SeriesPlace place; + + public SeriesActivityProxy(SeriesPlace place, SeriesClientFactory clientFactory) { + this.place = place; + this.clientFactory = clientFactory; + } + + @Override + protected void startAsync() { + GWT.runAsync(new AbstractRunAsyncCallback() { + @Override + public void onSuccess() { + super.onSuccess(new SeriesActivity(place, clientFactory)); + } + }); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/AnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/AnalyticsView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java index 2ac02d0477f..f8876aabb15 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/leaderboard/AnalyticsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.leaderboard; +package com.sap.sailing.gwt.home.client.place.series; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RaceIdentifier; @@ -9,7 +9,7 @@ import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.useragent.UserAgentDetails; -public interface AnalyticsView { +public interface SeriesAnalyticsView { Widget asWidget(); void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java new file mode 100644 index 00000000000..7a45b276a0b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java @@ -0,0 +1,9 @@ +package com.sap.sailing.gwt.home.client.place.series; + +import com.sap.sailing.gwt.ui.client.SailingClientFactory; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.gwt.client.player.Timer; + +public interface SeriesClientFactory extends SailingClientFactory { + SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesPlace.java new file mode 100644 index 00000000000..b88229cc942 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesPlace.java @@ -0,0 +1,81 @@ +package com.sap.sailing.gwt.home.client.place.series; + +import com.google.gwt.place.shared.PlaceTokenizer; +import com.sap.sailing.gwt.common.client.AbstractBasePlace; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; + +public class SeriesPlace extends AbstractBasePlace { + private final String eventUuidAsString; + private final String leaderboardIdAsNameString; + private final Boolean showRaceDetails; + private final Boolean showSettings; + private final SeriesNavigationTabs navigationTab; + + private final static String PARAM_EVENTID = "eventId"; + private final static String PARAM_LEADERBOARD_NAME = "leaderboardName"; + private final static String PARAM_SHOW_RACE_DETAILS = "showRaceDetails"; + private final static String PARAM_SHOW_SETTINGS = "showSettings"; + private final static String PARAM_NAVIGATION_TAB = "navigationTab"; + + public enum SeriesNavigationTabs { OverallLeaderboard, RegattaLeaderboards, CompetitorAnalytics }; + + public SeriesPlace(String url) { + super(url); + eventUuidAsString = getParameter(PARAM_EVENTID); + leaderboardIdAsNameString = getParameter(PARAM_LEADERBOARD_NAME); + showRaceDetails = Boolean.valueOf(getParameter(PARAM_SHOW_RACE_DETAILS)); + showSettings = Boolean.valueOf(getParameter(PARAM_SHOW_SETTINGS)); + String paramNavTab = getParameter(PARAM_NAVIGATION_TAB); + if(paramNavTab != null) { + navigationTab = SeriesNavigationTabs.valueOf(paramNavTab); + } else { + navigationTab = SeriesNavigationTabs.OverallLeaderboard; + } + } + + public SeriesPlace(String eventUuidAsString, SeriesNavigationTabs navigationTab, String leaderboardIdAsNameString, Boolean showRaceDetails, Boolean showSettings) { + super(PARAM_EVENTID, eventUuidAsString, PARAM_NAVIGATION_TAB, navigationTab.name(), PARAM_LEADERBOARD_NAME, leaderboardIdAsNameString, + PARAM_SHOW_RACE_DETAILS, String.valueOf(showRaceDetails), PARAM_SHOW_SETTINGS, String.valueOf(showSettings)); + this.eventUuidAsString = eventUuidAsString; + this.navigationTab = navigationTab; + this.leaderboardIdAsNameString = leaderboardIdAsNameString; + this.showRaceDetails = showRaceDetails; + this.showSettings = showSettings; + } + + public String getTitle(String eventName, String leaderboardName) { + return TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName; + } + + public String getEventUuidAsString() { + return eventUuidAsString; + } + + public SeriesNavigationTabs getNavigationTab() { + return navigationTab; + } + + public String getLeaderboardIdAsNameString() { + return leaderboardIdAsNameString; + } + + public Boolean getShowRaceDetails() { + return showRaceDetails; + } + + public Boolean getShowSettings() { + return showSettings; + } + + public static class Tokenizer implements PlaceTokenizer { + @Override + public String getToken(SeriesPlace place) { + return place.getParametersAsToken(); + } + + @Override + public SeriesPlace getPlace(String url) { + return new SeriesPlace(url); + } + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java new file mode 100644 index 00000000000..c09f58c22ca --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java @@ -0,0 +1,57 @@ +package com.sap.sailing.gwt.home.client.place.series; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.RaceIdentifier; +import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; +import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalytics; +import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalytics; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.async.AsyncActionsExecutor; +import com.sap.sse.gwt.client.player.Timer; +import com.sap.sse.gwt.client.useragent.UserAgentDetails; + +public class TabletAndDesktopSeriesView extends Composite implements SeriesAnalyticsView { + private static LeaderboardPageViewUiBinder uiBinder = GWT.create(LeaderboardPageViewUiBinder.class); + + interface LeaderboardPageViewUiBinder extends UiBinder { + } + + @UiField(provided=true) RegattaAnalytics regattaAnalytics; + @UiField(provided=true) EventSeriesAnalytics seriesAnalytics; + + public TabletAndDesktopSeriesView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + regattaAnalytics = new RegattaAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); + seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); + + regattaAnalytics.setVisible(false); + seriesAnalytics.setVisible(false); + + initWidget(uiBinder.createAndBindUi(this)); + } + + public void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, + final Timer timer, final LeaderboardSettings leaderboardSettings, final RaceIdentifier preselectedRace, + final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, + final UserAgentDetails userAgent, boolean showRaceDetails, + boolean autoExpandLastRaceColumn, boolean showOverallLeaderboard) { + regattaAnalytics.createRegattaAnalyticsViewer(sailingService, asyncActionsExecutor, timer, leaderboardSettings, preselectedRace, + leaderboardGroupName, leaderboardName, errorReporter, userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); + regattaAnalytics.setVisible(true); + } + + public void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, + Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, + String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, + UserAgentDetails userAgent, boolean showRaceDetails, boolean autoExpandLastRaceColumn, boolean showSeriesLeaderboards) { + seriesAnalytics.createSeriesAnalyticsViewer(sailingService, asyncActionsExecutor, timer, leaderboardSettings, preselectedLeaderboardName, + preselectedRace, leaderboardGroupName, metaLeaderboardName, errorReporter, userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); + seriesAnalytics.setVisible(true); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml new file mode 100644 index 00000000000..69daaf248cd --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml @@ -0,0 +1,11 @@ + + + + + + + + + From be2dc5a3259b74c07a8b28e748ad1c3cebf5407f Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 13 Nov 2014 13:22:03 +0100 Subject: [PATCH 060/113] finished refactoring LeaderboardPlace into RegattaPlace and SeriesPlace --- .../client/app/ApplicationHistoryMapper.java | 3 ++- .../place/event/header/EventHeader.java | 8 +++---- .../client/place/regatta/RegattaActivity.java | 21 ++++++++---------- .../place/regatta/RegattaAnalyticsView.java | 6 ----- .../regatta/TabletAndDesktopRegattaView.java | 21 ++++-------------- .../TabletAndDesktopRegattaView.ui.xml | 1 - .../client/place/series/SeriesActivity.java | 21 ++++++++---------- .../place/series/SeriesAnalyticsView.java | 6 ----- .../series/TabletAndDesktopSeriesView.java | 22 ++++--------------- .../series/TabletAndDesktopSeriesView.ui.xml | 1 - 10 files changed, 32 insertions(+), 78 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java index 1d22da7167a..1ee1c3d4aad 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/ApplicationHistoryMapper.java @@ -8,12 +8,13 @@ import com.sap.sailing.gwt.home.client.place.event.EventPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; @WithTokenizers({ AboutUsPlace.Tokenizer.class, ContactPlace.Tokenizer.class, EventPlace.Tokenizer.class, EventsPlace.Tokenizer.class, SolutionsPlace.Tokenizer.class, SponsoringPlace.Tokenizer.class, SearchResultPlace.Tokenizer.class, StartPlace.Tokenizer.class, - RegattaPlace.Tokenizer.class}) + RegattaPlace.Tokenizer.class, SeriesPlace.Tokenizer.class }) public interface ApplicationHistoryMapper extends PlaceHistoryMapper { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index cbd0fa5f5a6..d8bbe253cfb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -77,7 +77,7 @@ public class EventHeader extends AbstractEventComposite { // private final List links3; private final HomePlacesNavigator placeNavigator; - private PlaceNavigation overallLeaderboardNavigation = null; + private PlaceNavigation seriesAnalyticsNavigation = null; private PlaceNavigation regattasNavigation = null; public EventHeader(EventDTO event, HomePlacesNavigator placeNavigator, EventPlaceNavigator pageNavigator) { @@ -164,8 +164,8 @@ public class EventHeader extends AbstractEventComposite { eventName = leaderboardGroupDTO.getDisplayName() != null ? leaderboardGroupDTO.getDisplayName() : leaderboardGroupDTO.getName(); String overallLeaderboardName = leaderboardGroupDTO.getName() + " " + LeaderboardNameConstants.OVERALL; - overallLeaderboardNavigation = placeNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.OverallLeaderboard, overallLeaderboardName, event.getBaseURL(), event.isOnRemoteServer()); - seriesLeaderboardAnchor.setHref(overallLeaderboardNavigation.getTargetUrl()); + seriesAnalyticsNavigation = placeNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.OverallLeaderboard, overallLeaderboardName, event.getBaseURL(), event.isOnRemoteServer()); + seriesLeaderboardAnchor.setHref(seriesAnalyticsNavigation.getTargetUrl()); StrippedLeaderboardDTO leaderboardFittingToEvent = findLeaderboardWithSameCourseArea(event); if(leaderboardFittingToEvent != null) { @@ -253,7 +253,7 @@ public class EventHeader extends AbstractEventComposite { void seriesLeaderboardClicked(ClickEvent e) { EventDTO event = getEvent(); if(event.isFakeSeries()) { - handleClickEvent(e, overallLeaderboardNavigation); + handleClickEvent(e, seriesAnalyticsNavigation); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java index 2546f24ca55..6794f5ace10 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java @@ -63,8 +63,12 @@ public class RegattaActivity extends AbstractActivity implements ErrorReporter { new AsyncCallback>() { @Override public void onSuccess(Util.Pair leaderboardNameAndType) { - if (leaderboardNameAndType != null && leaderboardName.equals(leaderboardNameAndType.getA())) { - createAnalyticsViewer(panel, event, leaderboardNameAndType.getA(), leaderboardNameAndType.getB(), showRaceDetails); + if(leaderboardNameAndType != null && leaderboardName.equals(leaderboardNameAndType.getA())) { + if(leaderboardNameAndType.getB().isMetaLeaderboard()) { + createErrorView("Leaderboard is a meta leaderboard.", null, panel); + } else { + createAnalyticsViewer(panel, event, leaderboardNameAndType.getA(), leaderboardNameAndType.getB(), showRaceDetails); + } } else { createErrorView(TextMessages.INSTANCE.errorMessageNoSuchLeaderboard(), null, panel); } @@ -103,20 +107,13 @@ public class RegattaActivity extends AbstractActivity implements ErrorReporter { } // interval has been specified boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); boolean showOverallLeaderboard = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_LEADERBOARD, false); - boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); RegattaAnalyticsView analyticsView = clientFactory.createRegattaAnalyticsView(event, leaderboardName, timerForClientServerOffset); Window.setTitle(regattaPlace.getTitle(event.getName(), leaderboardDisplayName)); - if (leaderboardType.isMetaLeaderboard()) { - analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), - timer, leaderboardSettings, null, preselectedRace, "leaderboardGroupName", leaderboardName, this, - userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); - } else { - analyticsView.createRegattaAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), - timer, leaderboardSettings, preselectedRace, "leaderboardGroupName", leaderboardName, this, - userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); - } + analyticsView.createRegattaAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), + timer, leaderboardSettings, preselectedRace, "leaderboardGroupName", leaderboardName, this, + userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); panel.setWidget(analyticsView.asWidget()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java index 081c15a22a8..3af3bc6ae7c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java @@ -17,10 +17,4 @@ public interface RegattaAnalyticsView { final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final UserAgentDetails userAgent, boolean showRaceDetails, boolean autoExpandLastRaceColumn, boolean showOverallLeaderboard); - - void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, - Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, - String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, - UserAgentDetails userAgent, boolean showRaceDetails, - boolean autoExpandLastRaceColumn, boolean showSeriesLeaderboards); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java index 1303840e6ff..9b747ba0f42 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java @@ -8,7 +8,6 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalytics; -import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalytics; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -18,22 +17,19 @@ import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.useragent.UserAgentDetails; public class TabletAndDesktopRegattaView extends Composite implements RegattaAnalyticsView { - private static LeaderboardPageViewUiBinder uiBinder = GWT.create(LeaderboardPageViewUiBinder.class); + private static TabletAndDesktopRegattaViewUiBinder uiBinder = GWT.create(TabletAndDesktopRegattaViewUiBinder.class); - interface LeaderboardPageViewUiBinder extends UiBinder { + interface TabletAndDesktopRegattaViewUiBinder extends UiBinder { } @UiField(provided=true) RegattaAnalytics regattaAnalytics; - @UiField(provided=true) EventSeriesAnalytics seriesAnalytics; public TabletAndDesktopRegattaView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { regattaAnalytics = new RegattaAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); - seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); - - regattaAnalytics.setVisible(false); - seriesAnalytics.setVisible(false); initWidget(uiBinder.createAndBindUi(this)); + + regattaAnalytics.setVisible(false); } public void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, @@ -45,13 +41,4 @@ public class TabletAndDesktopRegattaView extends Composite implements RegattaAna leaderboardGroupName, leaderboardName, errorReporter, userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); regattaAnalytics.setVisible(true); } - - public void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, - Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, - String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, - UserAgentDetails userAgent, boolean showRaceDetails, boolean autoExpandLastRaceColumn, boolean showSeriesLeaderboards) { - seriesAnalytics.createSeriesAnalyticsViewer(sailingService, asyncActionsExecutor, timer, leaderboardSettings, preselectedLeaderboardName, - preselectedRace, leaderboardGroupName, metaLeaderboardName, errorReporter, userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); - seriesAnalytics.setVisible(true); - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml index 69daaf248cd..a213594e35a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml @@ -6,6 +6,5 @@ - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java index bc925672a0c..0fcd150df28 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java @@ -63,8 +63,12 @@ public class SeriesActivity extends AbstractActivity implements ErrorReporter { new AsyncCallback>() { @Override public void onSuccess(Util.Pair leaderboardNameAndType) { - if (leaderboardNameAndType != null && leaderboardName.equals(leaderboardNameAndType.getA())) { - createAnalyticsViewer(panel, event, leaderboardNameAndType.getA(), leaderboardNameAndType.getB(), showRaceDetails); + if(leaderboardNameAndType != null && leaderboardName.equals(leaderboardNameAndType.getA())) { + if(!leaderboardNameAndType.getB().isMetaLeaderboard()) { + createErrorView("Leaderboard is a not meta leaderboard.", null, panel); + } else { + createAnalyticsViewer(panel, event, leaderboardNameAndType.getA(), leaderboardNameAndType.getB(), showRaceDetails); + } } else { createErrorView(TextMessages.INSTANCE.errorMessageNoSuchLeaderboard(), null, panel); } @@ -102,21 +106,14 @@ public class SeriesActivity extends AbstractActivity implements ErrorReporter { timer.setPlayMode(PlayModes.Live); // the leaderboard, viewed via the entry point, goes "live" and "playing" if an auto-refresh } // interval has been specified boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); - boolean showOverallLeaderboard = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_LEADERBOARD, false); boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); SeriesAnalyticsView analyticsView = clientFactory.createSeriesAnalyticsView(event, leaderboardName, timerForClientServerOffset); Window.setTitle(seriesPlace.getTitle(event.getName(), leaderboardDisplayName)); - if (leaderboardType.isMetaLeaderboard()) { - analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), - timer, leaderboardSettings, null, preselectedRace, "leaderboardGroupName", leaderboardName, this, - userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); - } else { - analyticsView.createRegattaAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), - timer, leaderboardSettings, preselectedRace, "leaderboardGroupName", leaderboardName, this, - userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); - } + analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), + timer, leaderboardSettings, null, preselectedRace, "leaderboardGroupName", leaderboardName, this, + userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); panel.setWidget(analyticsView.asWidget()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java index f8876aabb15..2865cdba159 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java @@ -12,12 +12,6 @@ import com.sap.sse.gwt.client.useragent.UserAgentDetails; public interface SeriesAnalyticsView { Widget asWidget(); - void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, - final Timer timer, final LeaderboardSettings leaderboardSettings, final RaceIdentifier preselectedRace, - final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, - final UserAgentDetails userAgent, boolean showRaceDetails, - boolean autoExpandLastRaceColumn, boolean showOverallLeaderboard); - void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java index c09f58c22ca..6e57586812e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java @@ -7,7 +7,6 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; -import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalytics; import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalytics; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; @@ -18,34 +17,21 @@ import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.useragent.UserAgentDetails; public class TabletAndDesktopSeriesView extends Composite implements SeriesAnalyticsView { - private static LeaderboardPageViewUiBinder uiBinder = GWT.create(LeaderboardPageViewUiBinder.class); + private static TabletAndDesktopSeriesViewUiBinder uiBinder = GWT.create(TabletAndDesktopSeriesViewUiBinder.class); - interface LeaderboardPageViewUiBinder extends UiBinder { + interface TabletAndDesktopSeriesViewUiBinder extends UiBinder { } - @UiField(provided=true) RegattaAnalytics regattaAnalytics; @UiField(provided=true) EventSeriesAnalytics seriesAnalytics; public TabletAndDesktopSeriesView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - regattaAnalytics = new RegattaAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); - regattaAnalytics.setVisible(false); - seriesAnalytics.setVisible(false); - initWidget(uiBinder.createAndBindUi(this)); + + seriesAnalytics.setVisible(false); } - public void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, - final Timer timer, final LeaderboardSettings leaderboardSettings, final RaceIdentifier preselectedRace, - final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, - final UserAgentDetails userAgent, boolean showRaceDetails, - boolean autoExpandLastRaceColumn, boolean showOverallLeaderboard) { - regattaAnalytics.createRegattaAnalyticsViewer(sailingService, asyncActionsExecutor, timer, leaderboardSettings, preselectedRace, - leaderboardGroupName, leaderboardName, errorReporter, userAgent, showRaceDetails, autoExpandLastRaceColumn, showOverallLeaderboard); - regattaAnalytics.setVisible(true); - } - public void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, LeaderboardSettings leaderboardSettings, String preselectedLeaderboardName, RaceIdentifier preselectedRace, String leaderboardGroupName, String metaLeaderboardName, ErrorReporter errorReporter, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml index 69daaf248cd..7cda0a091f7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml @@ -5,7 +5,6 @@ - From 2c9631346164960895a73f495d64f594c6508920 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 13 Nov 2014 16:01:37 +0100 Subject: [PATCH 061/113] whitespace change only --- .../pages/adminconsole/AdminConsolePage.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java index 94bd17a2ca6..e69706b4d93 100755 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java @@ -71,18 +71,6 @@ public class AdminConsolePage extends HostPage { */ public static AdminConsolePage goToPage(WebDriver driver, String root) { driver.get(root + "gwt/AdminConsole.html?" + getGWTCodeServer()); //$NON-NLS-1$ - // TODO: As soon as the security API is available in Selenium we should use it to login into the admin console. -// FluentWait wait = createFluentWait(driver, 5, 100); -// Alert alert = wait.until(new Function() { -// @Override -// public Alert apply(WebDriver context) { -// TargetLocator locator = context.switchTo(); -// -// return locator.alert(); -// } -// }); -// alert.authenticateUsing(new UserAndPassword("user", "password")); - return new AdminConsolePage(driver); } From 401da5f50be561a65ddb4daed17ff38dfd138f1e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 13 Nov 2014 16:07:30 +0100 Subject: [PATCH 062/113] trying to make waiting for the admin console title a bit more robust, hoping to avoid intermittent test failures for testSimpleLeaderboardEditing --- .../selenium/pages/adminconsole/AdminConsolePage.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java index e69706b4d93..c1ffcb11c39 100755 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java @@ -1,6 +1,8 @@ package com.sap.sailing.selenium.pages.adminconsole; import java.text.MessageFormat; +import java.util.logging.Level; +import java.util.logging.Logger; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -27,6 +29,7 @@ import com.sap.sailing.selenium.pages.adminconsole.tractrac.TracTracEventManagem * D049941 */ public class AdminConsolePage extends HostPage { + private static final Logger logger = Logger.getLogger(AdminConsolePage.class.getName()); private static final String PAGE_TITLE = "SAP Sailing Analytics Administration Console"; //$NON-NLS-1$ private static final MessageFormat TAB_EXPRESSION = new MessageFormat( @@ -122,6 +125,11 @@ public class AdminConsolePage extends HostPage { */ @Override protected void verify() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + logger.log(Level.WARNING, "Interrupted while waiting for an admin console tab to appear", e); + } // wait a bit for the page to have initialized and set its title if (!PAGE_TITLE.equals(this.driver.getTitle())) { throw new IllegalStateException("This is not the administration console: " + this.driver.getTitle()); //$NON-NLS-1$ } From bb5a16e1ac3d23e7009dfca8facee84f8eba7fe9 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 13 Nov 2014 23:06:05 +0100 Subject: [PATCH 063/113] major refactoring introducing tagging the replication streams with the Replicable IDs and introducing a new URL parameter for the initial load servlet request --- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../sailing/domain/base/DomainFactory.java | 3 +- ...utStreamResolvingAgainstDomainFactory.java | 62 ----- .../domain/base/impl/DomainFactoryImpl.java | 4 +- ...reamResolvingAgainstDomainFactoryImpl.java | 4 +- .../gwt/ui/test/SailingServiceImplMock.java | 30 ++- .../gwt/ui/server/SailingServiceImpl.java | 16 +- .../test/AbstractServerReplicationTest.java | 31 +-- .../sailing/server/RacingEventService.java | 32 ++- .../server/impl/RacingEventServiceImpl.java | 8 +- .../server/masterdata/MasterDataImporter.java | 4 +- .../com/sap/sse/replication/Replicable.java | 94 +++++--- .../sse/replication/ReplicablesProvider.java | 33 +++ .../ReplicationMasterDescriptor.java | 9 +- .../sse/replication/ReplicationService.java | 4 +- .../impl/AbstractReplicablesProvider.java | 39 ++++ .../sap/sse/replication/impl/Activator.java | 10 +- .../sse/replication/impl/HasReplicable.java | 8 - .../impl/OSGiReplicableTracker.java | 63 +++++ ...bjectInputStreamResolvingAgainstCache.java | 19 +- .../impl/ReplicableWithObjectInputStream.java | 59 +++++ .../impl/ReplicationInstancesManager.java | 16 +- .../impl/ReplicationMasterDescriptorImpl.java | 3 +- .../ReplicationServiceExecutionListener.java | 47 ++++ .../impl/ReplicationServiceImpl.java | 221 ++++++++++-------- .../replication/impl/ReplicationServlet.java | 39 ++-- .../sap/sse/replication/impl/Replicator.java | 154 +++++++----- 28 files changed, 648 insertions(+), 370 deletions(-) delete mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java delete mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceExecutionListener.java diff --git a/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF index 11ff5b2ec1a..ed6bb411bdc 100644 --- a/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF @@ -17,6 +17,7 @@ Require-Bundle: com.sap.sailing.domain, org.objenesis;bundle-version="1.3.0", org.junit4;bundle-version="4.8.2", org.json.simple;bundle-version="1.1.0", - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.replication Export-Package: com.sap.sailing.domain.test, com.sap.sailing.domain.test.mock diff --git a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF index 1b0da8d8d32..ca5fb94e6b8 100644 --- a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF @@ -34,4 +34,5 @@ Require-Bundle: com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sailing.geocoding, com.sap.sse.datamining.shared;bundle-version="1.0.0", com.sap.sse.common, - com.sap.sse + com.sap.sse, + com.sap.sse.replication diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java index 5c7bd10c123..d24eacc32eb 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java @@ -22,6 +22,7 @@ import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sse.common.TimePoint; +import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; public interface DomainFactory extends SharedDomainFactory { /** @@ -38,7 +39,7 @@ public interface DomainFactory extends SharedDomainFactory { * de-serialized instances need to be replaced by / resolved to the counterparts already known by this factory. * The stream returned by this method can be used */ - ObjectInputStreamResolvingAgainstDomainFactory createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException; + ObjectInputStreamResolvingAgainstCache createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException; ScoringScheme createScoringScheme(ScoringSchemeType scoringSchemeType); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java deleted file mode 100755 index f99cefceae6..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.sap.sailing.domain.base; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectStreamClass; - -import com.sap.sse.common.IsManagedByCache; - -/** - * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed - * to the constructor. Additionally, class loading is managed using the current thread's context class loader which is - * required in and works well for OSGi environments. - *

- * - * Create an instance of this class using - * {@link DomainFactory#createObjectInputStreamResolvingAgainstThisFactory(InputStream)}. - * - * @author Axel Uhl (D043530) - * - */ -public abstract class ObjectInputStreamResolvingAgainstDomainFactory extends ObjectInputStream implements HasDomainFactory { - private final DomainFactory domainFactory; - - /** - * Package protected on purpose; instances to be created using - * {@link DomainFactory#createObjectInputStreamResolvingAgainstThisFactory(InputStream)}. This constructor - * {@link #enableResolveObject(boolean) enables resolving} by default. - */ - protected ObjectInputStreamResolvingAgainstDomainFactory(InputStream in, DomainFactory domainFactory) throws IOException { - super(in); - this.domainFactory = domainFactory; - enableResolveObject(true); - } - - @Override - public DomainFactory getDomainFactory() { - return domainFactory; - } - - @Override - protected Class resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException { - String className = classDesc.getName(); - // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6554519 - // If using loadClass(...) on the class loader directly, an exception is thrown: - // StreamCorruptedException: invalid type code 00 - return Class.forName(className, /* initialize */ true, Thread.currentThread().getContextClassLoader()); - } - - @Override - protected Object resolveObject(Object o) { - Object result; - if (o instanceof IsManagedByCache) { - @SuppressWarnings("unchecked") - IsManagedByCache castResult = ((IsManagedByCache) o).resolve(getDomainFactory()); - result = castResult; - } else { - result = o; - } - return result; - } -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java index 85b5c593805..898f9a24e6f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java @@ -13,7 +13,6 @@ import com.sap.sailing.domain.base.CompetitorStore; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.base.ObjectInputStreamResolvingAgainstDomainFactory; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Waypoint; @@ -61,6 +60,7 @@ import com.sap.sailing.geocoding.ReverseGeocoder; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; public class DomainFactoryImpl extends SharedDomainFactoryImpl implements DomainFactory { private static Logger logger = Logger.getLogger(DomainFactoryImpl.class.getName()); @@ -82,7 +82,7 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl implements Domain } @Override - public ObjectInputStreamResolvingAgainstDomainFactory createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException { + public ObjectInputStreamResolvingAgainstCache createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException { return new ObjectInputStreamResolvingAgainstDomainFactoryImpl(inputStream, this); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/ObjectInputStreamResolvingAgainstDomainFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/ObjectInputStreamResolvingAgainstDomainFactoryImpl.java index ec42320df84..dc24656d2c4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/ObjectInputStreamResolvingAgainstDomainFactoryImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/ObjectInputStreamResolvingAgainstDomainFactoryImpl.java @@ -4,9 +4,9 @@ import java.io.IOException; import java.io.InputStream; import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.domain.base.ObjectInputStreamResolvingAgainstDomainFactory; +import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; -public class ObjectInputStreamResolvingAgainstDomainFactoryImpl extends ObjectInputStreamResolvingAgainstDomainFactory { +public class ObjectInputStreamResolvingAgainstDomainFactoryImpl extends ObjectInputStreamResolvingAgainstCache { ObjectInputStreamResolvingAgainstDomainFactoryImpl(InputStream in, DomainFactory domainFactory) throws IOException { super(in, domainFactory); diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java index 71105220035..e4edc14689a 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/SailingServiceImplMock.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.ui.test; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.UnknownHostException; import java.text.ParseException; +import java.util.Collections; import java.util.List; import javax.xml.bind.JAXBException; @@ -33,11 +33,11 @@ import com.sap.sailing.domain.tracking.TrackerManager; import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; import com.sap.sailing.gwt.ui.server.SailingServiceImpl; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.xrr.resultimport.schema.RegattaResults; import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationService; +import com.sap.sse.replication.impl.AbstractReplicablesProvider; import com.sap.sse.replication.impl.ReplicationInstancesManager; import com.sap.sse.replication.impl.ReplicationServiceImpl; @@ -60,24 +60,20 @@ public class SailingServiceImplMock extends SailingServiceImpl { } @Override - protected ServiceTracker, ReplicationService> createAndOpenReplicationServiceTracker( + protected ServiceTracker createAndOpenReplicationServiceTracker( BundleContext context) { @SuppressWarnings("unchecked") - ServiceTracker, ReplicationService> result = mock(ServiceTracker.class); + ServiceTracker result = mock(ServiceTracker.class); try { - final ReplicationServiceImpl> replicationService = - new ReplicationServiceImpl>("test exchange", "localhost", 0, - new ReplicationInstancesManager()) { - @Override - protected ServiceTracker>, Replicable>> getReplicableTracker() { - @SuppressWarnings("unchecked") - ServiceTracker>, Replicable>> result = - (ServiceTracker>, Replicable>>) mock(ServiceTracker.class); - doReturn("Humba Humba").when(result).toString(); - when(result.getService()).thenReturn(new RacingEventServiceImpl()); - return result; - } - }; + final RacingEventService replicable = new RacingEventServiceImpl(); + final ReplicationServiceImpl replicationService = + new ReplicationServiceImpl("test exchange", "localhost", 0, + new ReplicationInstancesManager(), new AbstractReplicablesProvider() { + @Override + public Iterable> getReplicables() { + return Collections.>singleton(replicable); + } + }); when(result.getService()).thenReturn(replicationService); } catch (IOException e) { throw new RuntimeException(); 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 71f187ccf07..40aed307ac0 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 @@ -419,7 +419,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S private final ServiceTracker racingEventServiceTracker; - private final ServiceTracker, ReplicationService> replicationServiceTracker; + private final ServiceTracker replicationServiceTracker; private final ServiceTracker resultUrlRegistryServiceTracker; @@ -662,10 +662,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return new ScoreCorrectionProviderDTO(scoreCorrectionProvider.getName(), hasResultsForBoatClassFromDateByEventName); } - protected ServiceTracker, ReplicationService> createAndOpenReplicationServiceTracker( + protected ServiceTracker createAndOpenReplicationServiceTracker( BundleContext context) { - ServiceTracker, ReplicationService> result = - new ServiceTracker, ReplicationService>( + ServiceTracker result = + new ServiceTracker( context, ReplicationService.class.getName(), null); result.open(); return result; @@ -2206,7 +2206,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return racingEventServiceTracker.getService(); // grab the service } - private ReplicationService getReplicationService() { + private ReplicationService getReplicationService() { return replicationServiceTracker.getService(); } @@ -3193,12 +3193,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public ReplicationStateDTO getReplicaInfo() { - ReplicationService service = getReplicationService(); + ReplicationService service = getReplicationService(); Set replicaDTOs = new HashSet(); for (ReplicaDescriptor replicaDescriptor : service.getReplicaInfo()) { - final Map>, Integer> statistics = service.getStatistics(replicaDescriptor); + final Map>, Integer> statistics = service.getStatistics(replicaDescriptor); Map replicationCountByOperationClassName = new HashMap(); - for (Entry>, Integer> e : statistics.entrySet()) { + for (Entry>, Integer> e : statistics.entrySet()) { replicationCountByOperationClassName.put(e.getKey().getName(), e.getValue()); } replicaDTOs.add(new ReplicaDTO(replicaDescriptor.getIpAddress().getHostName(), replicaDescriptor diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index d637d193f7c..dfc4629532e 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -39,6 +39,7 @@ import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sse.common.Util; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.ReplicationService; import com.sap.sse.replication.impl.Activator; @@ -56,7 +57,7 @@ public abstract class AbstractServerReplicationTest { protected RacingEventServiceImpl master; protected ReplicationServiceTestImpl replicaReplicator; private ReplicaDescriptor replicaDescriptor; - private ReplicationServiceImpl> masterReplicator; + private ReplicationServiceImpl masterReplicator; private ReplicationMasterDescriptor masterDescriptor; @Rule public Timeout AbstractTracTracLiveTestTimeout = new Timeout(5 * 60 * 1000); // timeout after 5 minutes @@ -167,17 +168,17 @@ public abstract class AbstractServerReplicationTest { replicaReplicator.stopToReplicateFromMaster(); } - static class ReplicationServiceTestImpl extends ReplicationServiceImpl> { + static class ReplicationServiceTestImpl extends ReplicationServiceImpl { protected static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; private final DomainFactory resolveAgainst; private final RacingEventService master; private final ReplicaDescriptor replicaDescriptor; - private final ReplicationService masterReplicationService; + private final ReplicationService masterReplicationService; private final ReplicationMasterDescriptor masterDescriptor; public ReplicationServiceTestImpl(String exchangeName, String exchangeHost, DomainFactory resolveAgainst, - ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, - RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, + ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, + RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, ReplicationMasterDescriptor masterDescriptor) throws IOException { super(exchangeName, exchangeHost, replicationInstancesManager, replica); @@ -248,17 +249,6 @@ public abstract class AbstractServerReplicationTest { return initialLoadTestServerThread; } - /** - * Ignore the master descriptor and replicate from the local master passed to the constructor instead. - */ -// @Override -// public void startToReplicateFrom(ReplicationMasterDescriptor master) throws IOException, -// ClassNotFoundException { -// Replicator replicator = startToReplicateFromButDontYetFetchInitialLoad(master, /* startReplicatorSuspended */ true); -// initialLoad(); -// replicator.setSuspended(false); // resume after initial load -// } - protected Replicator> startToReplicateFromButDontYetFetchInitialLoad(ReplicationMasterDescriptor master, boolean startReplicatorSuspended) throws IOException { masterReplicationService.registerReplica(replicaDescriptor); @@ -291,10 +281,11 @@ public abstract class AbstractServerReplicationTest { } } }.start(); - ObjectInputStream dis = resolveAgainst.createObjectInputStreamResolvingAgainstThisFactory(pis); - getReplicable().clearReplicaState(); - getReplicable().initiallyFillFrom(dis); - dis.close(); + for (Replicable replicable : getReplicables()) { + replicable.clearReplicaState(); + replicable.initiallyFillFrom(pis); + } + pis.close(); } } } 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 10caee74a56..f6b71219109 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 @@ -69,29 +69,37 @@ import com.sap.sse.common.Util.Triple; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.Searchable; -import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.impl.ReplicableWithObjectInputStream; /** - * An OSGi service that can be used to track boat races using a TracTrac connector that pushes - * live GPS boat location, waypoint, coarse and mark passing data.

+ * An OSGi service that can be used to track boat races using a TracTrac connector that pushes live GPS boat location, + * waypoint, coarse and mark passing data. + *

* * If a race/regatta is already being tracked, another {@link #addTracTracRace(URL, URI, URI, WindStore, long)} or - * {@link #addRegatta(URL, URI, URI, WindStore, long)} call will have no effect, even if a different - * {@link WindStore} is requested.

+ * {@link #addRegatta(URL, URI, URI, WindStore, long)} call will have no effect, even if a different {@link WindStore} + * is requested. + *

* - * When the tracking of a race/regatta is {@link #stopTracking(Regatta, RaceDefinition) stopped}, the next - * time it's started to be tracked, a new {@link TrackedRace} at least will be constructed. This also - * means that when a {@link TrackedRegatta} exists that still holds other {@link TrackedRace}s, the - * no longer tracked {@link TrackedRace} will be removed from the {@link TrackedRegatta}. - * corresponding information is removed also from the {@link DomainFactory}'s caches to ensure that - * clean, fresh data is received should another tracking request be issued later. + * When the tracking of a race/regatta is {@link #stopTracking(Regatta, RaceDefinition) stopped}, the next time it's + * started to be tracked, a new {@link TrackedRace} at least will be constructed. This also means that when a + * {@link TrackedRegatta} exists that still holds other {@link TrackedRace}s, the no longer tracked {@link TrackedRace} + * will be removed from the {@link TrackedRegatta}. corresponding information is removed also from the + * {@link DomainFactory}'s caches to ensure that clean, fresh data is received should another tracking request be issued + * later. + *

+ * + * During receiving the initial load for a replication in {@link #initiallyFillFromInternal(java.io.ObjectInputStream)}, + * tracked regattas read from the stream are observed (see {@link RaceListener}) by this object for automatic updates to + * the default leaderboard and for automatic linking to leaderboard columns. It is assumed that no explicit replication + * of these operations will happen based on the changes performed on the replication master. * * @author Axel Uhl (d043530) * */ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher, LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable, - Replicable> { + ReplicableWithObjectInputStream> { @Override Regatta getRegatta(RegattaName regattaName); 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 8ee5c741a9b..ea489b80ec6 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 @@ -325,8 +325,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport /** * This author should be used for server generated race log events */ - private final RaceLogEventAuthor raceLogEventAuthorForServer = new RaceLogEventAuthorImpl( - RacingEventService.class.getName(), 0); + private final RaceLogEventAuthor raceLogEventAuthorForServer = new RaceLogEventAuthorImpl(RacingEventService.class.getName(), 0); /** * Allow only one master data import at a time to avoid situation where multiple Imports override each other in @@ -2129,7 +2128,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport } @Override - public void serializeForInitialReplication(ObjectOutputStream oos) throws IOException { + public void serializeForInitialReplicationInternal(ObjectOutputStream oos) throws IOException { StringBuffer logoutput = new StringBuffer(); logger.info("Serializing events..."); @@ -2191,8 +2190,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport @SuppressWarnings("unchecked") // all the casts of ois.readObject()'s return value to Map<..., ...> // the type-parameters in the casts of the de-serialized collection objects can't be checked @Override - public void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException, - InterruptedException { + public void initiallyFillFromInternal(ObjectInputStream ois) throws IOException, ClassNotFoundException, InterruptedException { logger.info("Performing initial replication load on " + this); ClassLoader oldContextClassloader = Thread.currentThread().getContextClassLoader(); try { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java index ec585d60e16..ae0912fd725 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java @@ -9,7 +9,6 @@ import java.util.UUID; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorStore; import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.domain.base.ObjectInputStreamResolvingAgainstDomainFactory; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.impl.MasterDataImportInformation; import com.sap.sailing.domain.base.impl.RegattaImpl; @@ -20,6 +19,7 @@ import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.ImportMasterDataOperation; +import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; public class MasterDataImporter { private final DomainFactory baseDomainFactory; @@ -33,7 +33,7 @@ public class MasterDataImporter { public void importFromStream(InputStream inputStream, UUID importOperationId, boolean override) throws IOException, ClassNotFoundException { - ObjectInputStreamResolvingAgainstDomainFactory objectInputStream = racingEventService.getBaseDomainFactory() + ObjectInputStreamResolvingAgainstCache objectInputStream = racingEventService.getBaseDomainFactory() .createObjectInputStreamResolvingAgainstThisFactory(inputStream); racingEventService .createOrUpdateDataImportProgressWithReplication(importOperationId, 0.03, "Reading Data", 0.5); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java index 482e1c83e95..04dec321ac4 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.io.OutputStream; import java.net.MalformedURLException; import org.osgi.framework.BundleContext; @@ -11,33 +12,46 @@ import org.osgi.framework.BundleContext; import com.sap.sse.common.WithID; import com.sap.sse.operationaltransformation.Operation; import com.sap.sse.operationaltransformation.OperationWithTransformationSupport; +import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; /** - * Represents a replicable part of an application. Such a replicable part is usually holder of the application state and - * central transaction / operation processing unit. Processing {@link Operation operations} generally happens by - * {@link Operation#applyTo(Object) applying} operations to this replicable. As such, this replicable plays the - * role of the toState argument in the {@link Operation#applyTo(Object)} method calls.

+ * Represents a replicable part of an application. Such a replicable part is usually holder of application state and a + * transaction / operation processing unit. Processing {@link Operation operations} generally happens by + * {@link Operation#applyTo(Object) applying} operations to this replicable. As such, this replicable plays the role of + * the toState argument in the {@link Operation#applyTo(Object)} method calls. + *

* - * In addition to being the operation processor, a replicable must be able to serialize its state for the initial - * load of a replica, and it must be able to initialize its state from this serialized form.

+ * In addition to being the operation processor, a replicable must be able to serialize its state for the initial load + * of a replica, and it must be able to initialize its state from this serialized form. In doing so it is important to + * not include state that is controlled by another replicable. References to such objects need to be transient + * which means they are not serialized together with the initial load of this replica. If such references need to be + * re-established after de-serialization then they need to represented by some key which can later be looked up in the + * other replicable which can be discovered through the OSGi service registry on the receiving end. + *

* - * For operation and initial load serialization, a replicable must provide a specialized {@link ObjectInputStream} that - * ensures that on the receiving end there are no two Java object copies representing the same domain object where this - * matters. This is particularly important for objects with mutable state that otherwise may run inconsistent when only - * one of the multiple copies gets modified. Typically, the object input stream uses some sort of cache and overrides - * the {@link ObjectInputStream#resolveObject} method, and the types whose objects are de-serialized need to co-operate by + * For operation and initial load serialization, a replicable is provided an {@link InputStream} from which to read the + * operations and the initial load. A typical implementation for reading the stream's contents will use a specialized + * {@link ObjectInputStream} such as a specialization of {@link ObjectInputStreamResolvingAgainstCache} that ensures + * that on the receiving end there are no two Java object copies representing the same domain object where this matters. + * This is particularly important for objects with mutable state that otherwise may run inconsistent when only one of + * the multiple copies gets modified. Typically, the object input stream uses some sort of cache and overrides the + * {@link ObjectInputStream#resolveObject} method, and the types whose objects are de-serialized need to co-operate by * implementing a marker interface telling the specialized object input stream to use the cache when resolving objects - * of that type.

+ * of that type. + *

* * Several {@link Replicable} instances can share the same replication service and the same set of replication channels. * In order to participate in replication, {@link Replicable} objects need to be registered as OSGi services for the * {@link Replicable} interface. The replication service will dynamically discover the {@link Replicable} objects when - * initial load is requested and when an {@link Operation} is received. The initial load streams as well as each replication - * operation need to identify the {@link Replicable} they refer to. This identification is added as an OSGi service registry - * parameter that is used during service discovery. + * initial load is requested and when an {@link Operation} is received. The initial load streams as well as each + * replication operation need to identify the {@link Replicable} they refer to. This identification is added as an OSGi + * service registry parameter that is used during service discovery. * - * @param the type of state to which the operations are applied; usually this will be set to the implementing subclass - * @param type of operation that the replicable accepts + * @param + * the type of state to which the operations are applied; usually this will be set to the implementing + * subclass + * @param + * type of operation that the replicable accepts * * @author Axel Uhl (D043530) * @@ -51,12 +65,6 @@ public interface Replicable> extends With */ final String OSGi_Service_Registry_ID_Property_Name = "ID"; - /** - * Produces an object input stream that can choose to resolve objects against a cache so that duplicate instances - * are avoided. - */ - ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is) throws IOException; - /** * Executes an operation whose effects need to be replicated to any replica of this service known and * {@link OperationExecutionListener#executed(OperationWithTransformationSupport) notifies} all registered @@ -64,6 +72,11 @@ public interface Replicable> extends With */ T apply(OperationWithResult operation); + /** + * An operation execution listener must be able to process notifications of operations being executed that have + * type S or any more specific type. The listener can achieve this also by accepting any type more general than + * S. + */ void addOperationExecutionListener(OperationExecutionListener listener); void removeOperationExecutionListener(OperationExecutionListener listener); @@ -80,27 +93,32 @@ public interface Replicable> extends With void clearReplicaState() throws MalformedURLException, IOException, InterruptedException; /** - * Dual, reading operation for {@link #serializeForInitialReplication(ObjectOutputStream)}. In other words, when - * this operation returns, this service instance is in a state "equivalent" to that of the service instance that - * produced the stream contents in its {@link #serializeForInitialReplication(ObjectOutputStream)}. "Equivalent" - * here means that a replica will have equal sets of regattas, tracked regattas, leaderboards and leaderboard groups but - * will not have any active trackers for wind or positions because it relies on these elements to be sent through - * the replication channel. + * Dual, reading operation for {@link #serializeForInitialReplication(OutputStream)}. In other words, when this + * operation returns, this service instance is in a state "equivalent" to that of the service instance that produced + * the stream contents in its {@link #serializeForInitialReplication(OutputStream)}. "Equivalent" here means that a + * replica will have equal sets of objects serialized in the initial load but will usually not have any transient + * processes replicated that are responsible for building and maintaining the state on the master side because it + * relies on these elements to be sent through the replication channel. *

* - * Tracked regattas read from the stream are observed (see {@link RaceListener}) by this object for automatic updates - * to the default leaderboard and for automatic linking to leaderboard columns. It is assumed that no explicit - * replication of these operations will happen based on the changes performed on the replication master.

- * * Caution: All relevant contents of this service instance needs to be cleared before by a call to * {@link #clearReplicaState()}. It will be replaced by the stream contents. */ - void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException, InterruptedException; + void initiallyFillFrom(InputStream is) throws IOException, ClassNotFoundException, InterruptedException; /** - * Produces a one-shot serializable copy of those elements required for replication into oos so that - * afterwards the {@link RacingEventServiceOperation}s can be {@link #apply(RacingEventServiceOperation) applied} to - * maintain consistency with the master copy of the service. The dual operation is {@link #initiallyFillFrom}. + * Produces a one-shot serializable copy of those elements required for replication into os by wrapping + * that stream by an {@link ObjectOutputStream} so that afterwards the {@link OperationWithResult}s can be + * {@link #apply(OperationWithResult) applied} to maintain consistency with the master copy of the service. The dual + * operation is {@link #initiallyFillFrom}. */ - void serializeForInitialReplication(ObjectOutputStream oos) throws IOException; + void serializeForInitialReplication(OutputStream os) throws IOException; + + /** + * From an input stream, reads an operation that can be {@link #apply(OperationWithResult) applied} to this object. + * Separating reading and applying gives clients an opportunity to queue operations, e.g., in order to wait until + * receiving and {@link #initiallyFillFrom(InputStream) filling} the initial load has completed. + * @throws ClassNotFoundException + */ + O readOperation(InputStream inputStream) throws IOException, ClassNotFoundException; } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java new file mode 100755 index 00000000000..4c3e765ceac --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java @@ -0,0 +1,33 @@ +package com.sap.sse.replication; + + +public interface ReplicablesProvider { + /** + * Listeners of this type can be registered and de-registered using + * {@link ReplicablesProvider#addReplicableLifeCycleListener(ReplicableLifeCycleListener)} and + * {@link ReplicablesProvider#removeReplicableLifeCycleListener(ReplicableLifeCycleListener)}. They will be notified of + * {@link Replicable}s being added to or removed from this server instance. A replication service may use this to + * start listening to operations executed by a new {@link Replicable} or stop observing one that is being removed. + * + * @author Axel Uhl (D043530) + * + */ + public static interface ReplicableLifeCycleListener { + void replicableAdded(Replicable replicable); + void replicableRemoved(Replicable replicable); + } + + Iterable> getReplicables(); + + /** + * Tries to obtain a {@link Replicable> by its {@link Replicable#getId() ID}, converted to a string using {@link Object#toString()} + * on the ID. + * + * @return null if no such replicable can be found; the replicable otherwise + */ + Replicable getReplicable(String replicableIdAsString); + + void addReplicableLifeCycleListener(ReplicableLifeCycleListener listener); + + void removeReplicableLifeCycleListener(ReplicableLifeCycleListener listener); +} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java index eabe6fd3a61..9d865f089c2 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java @@ -23,10 +23,13 @@ public interface ReplicationMasterDescriptor { URL getReplicationDeRegistrationRequestURL(UUID uuid) throws MalformedURLException; /** - * The content produced by the URL returned is the name of the queue from which the client can read the - * initial load using a {@link RabbitInputStreamProvider}. + * The content produced by the URL returned is the name of the queue from which the client can read the initial load + * using a {@link RabbitInputStreamProvider}. + * + * @param replicables + * the replicables for which to request the initial load */ - URL getInitialLoadURL() throws MalformedURLException; + URL getInitialLoadURL(Iterable> replicables) throws MalformedURLException; int getMessagingPort(); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java index 0c974d1d99a..d123e2e6deb 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java @@ -16,7 +16,7 @@ import com.sap.sse.replication.impl.ReplicationServlet; * * @param the type representing the master's state */ -public interface ReplicationService { +public interface ReplicationService { static String SAILING_SERVER_REPLICATION_TOPIC = "SailingServerReplicationTopic"; /** @@ -57,7 +57,7 @@ public interface ReplicationService { * For a replica replicating off this master, provides statistics in the form of number of operations sent to that * replica by type, where the operation type is the key, represented as the operation's class name */ - Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); + Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor); double getAverageNumberOfOperationsPerMessage(ReplicaDescriptor replicaDescriptor); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java new file mode 100755 index 00000000000..5bb73bf9a98 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java @@ -0,0 +1,39 @@ +package com.sap.sse.replication.impl; + +import java.util.HashSet; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.stream.StreamSupport; + +import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicablesProvider; + +public abstract class AbstractReplicablesProvider implements ReplicablesProvider { + private final Set listeners; + + public AbstractReplicablesProvider() { + this.listeners = new HashSet<>(); + } + + @Override + public void addReplicableLifeCycleListener(ReplicableLifeCycleListener listener) { + listeners.add(listener); + } + + @Override + public void removeReplicableLifeCycleListener(ReplicableLifeCycleListener listener) { + listeners.remove(listener); + } + + /** + * This default implementation loops over the result of {@link #getReplicables()} and returns the first object whose + * {@link Replicable#getId() ID} equals the value of the parameter replicableIdAsString. + * + * @throws NoSuchElementException if no replicable by that name is found + */ + @Override + public Replicable getReplicable(String replicableIdAsString) { + return StreamSupport.stream(getReplicables().spliterator(), /* parallel */false) + .filter(r -> r.getId().toString().equals(replicableIdAsString)).findAny().orElse(null); + } +} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java index 914953f391b..a4e83b02162 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java @@ -74,7 +74,7 @@ public class Activator implements BundleActivator { public static final String PROPERTY_NAME_REPLICATE_MASTER_QUEUE_PORT = "replicate.master.queue.port"; public static final String PROPERTY_NAME_REPLICATE_MASTER_EXCHANGE_NAME = "replicate.master.exchange.name"; - private ReplicationInstancesManager replicationInstancesManager; + private ReplicationInstancesManager replicationInstancesManager; private static BundleContext defaultContext; @@ -110,15 +110,15 @@ public class Activator implements BundleActivator { } catch (NumberFormatException nfe) { logger.severe("Couldn't parse the replication port specification \""+exchangePortAsString+"\". Using default."); } - replicationInstancesManager = new ReplicationInstancesManager<>(); - ReplicationService serverReplicationMasterService = new ReplicationServiceImpl<>( - exchangeName, exchangeHost, exchangePort, replicationInstancesManager); + replicationInstancesManager = new ReplicationInstancesManager(); + ReplicationService serverReplicationMasterService = new ReplicationServiceImpl( + exchangeName, exchangeHost, exchangePort, replicationInstancesManager, new OSGiReplicableTracker(bundleContext)); bundleContext.registerService(ReplicationService.class, serverReplicationMasterService, null); logger.info("Registered replication service "+serverReplicationMasterService+" using exchange name "+exchangeName+" on host "+exchangeHost); checkIfAutomaticReplicationShouldStart(serverReplicationMasterService, exchangeName); } - private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName) { + private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName) { String replicateOnStart = System.getProperty(PROPERTY_NAME_REPLICATE_ON_START); if (Boolean.valueOf(replicateOnStart)) { logger.info("Configuration requested automatic replication. Starting it up..."); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java deleted file mode 100755 index 34049861d3d..00000000000 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/HasReplicable.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sap.sse.replication.impl; - -import com.sap.sse.replication.OperationWithResult; -import com.sap.sse.replication.Replicable; - -public interface HasReplicable> { - Replicable getReplicable(); -} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java new file mode 100755 index 00000000000..0b12589c218 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -0,0 +1,63 @@ +package com.sap.sse.replication.impl; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.util.tracker.ServiceTracker; +import org.osgi.util.tracker.ServiceTrackerCustomizer; + +import com.sap.sse.replication.Replicable; + +/** + * Uses an OSGi {@link ServiceTracker} to track and follow the set of {@link Replicable} objects registered with + * the OSGi service registry under that interface and uses the information and the events from the tracker to + * prepare the responses to the {@link #getReplicable(String)} and {@link #getReplicables()} method calls. + * + * @author Axel Uhl (D043530) + * + */ +public class OSGiReplicableTracker extends AbstractReplicablesProvider { + private final ServiceTracker, Replicable> serviceTracker; + private final Map>> serviceReferenceByIdAsString; + private final Map>, String> idAsStringByServiceReference; + private final BundleContext bundleContext; + + public OSGiReplicableTracker(final BundleContext bundleContext) { + this.bundleContext = bundleContext; + this.serviceReferenceByIdAsString = new HashMap<>(); + this.idAsStringByServiceReference = new HashMap<>(); + this.serviceTracker = new ServiceTracker, Replicable>( + bundleContext, Replicable.class.getName(), new ServiceTrackerCustomizer, Replicable>() { + @Override + public Replicable addingService(ServiceReference> reference) { + final Replicable result = bundleContext.getService(reference); + serviceReferenceByIdAsString.put(result.getId().toString(), reference); + idAsStringByServiceReference.put(reference, result.getId().toString()); + return result; + } + + @Override + public void removedService(ServiceReference> reference, + Replicable service) { + serviceReferenceByIdAsString.remove(idAsStringByServiceReference.get(reference)); + idAsStringByServiceReference.remove(reference); + } + + @Override public void modifiedService(ServiceReference> reference, Replicable service) {} + }); + serviceTracker.open(); + } + + @Override + public Iterable> getReplicables() { + return Arrays.asList(serviceTracker.getServices(new Replicable[0])); + } + + @Override + public Replicable getReplicable(String replicableIdAsString) { + return bundleContext.getService(serviceReferenceByIdAsString.get(replicableIdAsString)); + } +} \ No newline at end of file diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java index 1b1cb3d372b..fda698e4c91 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -9,15 +9,22 @@ import com.sap.sse.common.IsManagedByCache; import com.sap.sse.replication.Replicable; /** - * During de-serialization, resolves objects managed by a {@link DomainFactory} using the domain factory instance passed - * to the constructor. Additionally, class loading is managed using the current thread's context class loader which is - * required in and works well for OSGi environments. + * During de-serialization, resolves objects managed by a cache of type using a cache of that type passed to the + * constructor. Objects are identified as being managed by such a cache by means of the marker interface + * {@link IsManagedByCache} that their classes then have to implement, telling how resolving against the cache + * has to work for instances of that type. *

* - * Create an instance of this class using - * {@link DomainFactory#createObjectInputStreamResolvingAgainstThisFactory(InputStream)}. + * Additionally, class loading is managed using the current thread's context class loader which is required in and works + * well for OSGi environments. + *

* - * @param the cache type used for resolving objects + * Create an instance of this class by first creating a subclass in the bundle that has all the dependencies required to + * resolve all the classes whose instances are to be read from the stream and then instantiating this subclass. Otherwise, + * the stream won't be able to find the classes. To make this need clear, this class is declared abstract. + * + * @param + * the cache type used for resolving objects * * @author Axel Uhl (D043530) * diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java new file mode 100755 index 00000000000..c2a1aa855d3 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java @@ -0,0 +1,59 @@ +package com.sap.sse.replication.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; + +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.Replicable; + +public interface ReplicableWithObjectInputStream> extends Replicable { + /** + * Produces an object input stream that can choose to resolve objects against a cache so that duplicate instances + * are avoided. + */ + ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is) throws IOException; + + /** + * Implementation of {@link #initiallyFillFrom(InputStream)} which receives an {@link ObjectInputStream} instead of + * an {@link InputStream}. The {@link ObjectInputStream} is expected to have been produced by + * {@link #createObjectInputStreamResolvingAgainstCache(InputStream)}. + */ + void initiallyFillFromInternal(ObjectInputStream is) throws IOException, ClassNotFoundException, InterruptedException; + + /** + * Implementation of {@link #serializeForInitialReplication(OutputStream)}, using an {@link ObjectOutputStream}. + */ + void serializeForInitialReplicationInternal(ObjectOutputStream objectOutputStream) throws IOException; + + /** + * Implementation of {@link #readOperation(InputStream)}, using the {@link ObjectInputStream} created by + * {@link #createObjectInputStreamResolvingAgainstCache(InputStream)}. + */ + @SuppressWarnings("unchecked") + default O readOperationInternal(ObjectInputStream ois) throws ClassNotFoundException, IOException { + return (O) ois.readObject(); + } + + @Override + default void initiallyFillFrom(InputStream is) throws IOException, ClassNotFoundException, InterruptedException { + initiallyFillFromInternal(createObjectInputStreamResolvingAgainstCache(is)); + } + + /** + * Wraps os by an {@link ObjectOutputStream} and invokes + * {@link #serializeForInitialReplicationInternal(ObjectOutputStream)}. + */ + @Override + default void serializeForInitialReplication(OutputStream os) throws IOException { + serializeForInitialReplicationInternal(new ObjectOutputStream(os)); + } + + @Override + default O readOperation(InputStream inputStream) throws IOException, ClassNotFoundException { + return readOperationInternal(createObjectInputStreamResolvingAgainstCache(inputStream)); + } + +} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java index 390e68be032..f9b2517cc32 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java @@ -18,7 +18,7 @@ import com.sap.sse.replication.ReplicationMasterDescriptor; * * @param the state to which replication operations are applied */ -public class ReplicationInstancesManager { +public class ReplicationInstancesManager { /** * The set of descriptors of all registered slaves. All broadcast operations will send the messages to all @@ -26,7 +26,7 @@ public class ReplicationInstancesManager { */ private Set replicaDescriptors; - private Map>, Integer>> replicationCounts; + private Map>, Integer>> replicationCounts; /** * Used to calculate the average number of operations per message sent/received for each replica. @@ -54,7 +54,7 @@ public class ReplicationInstancesManager { public ReplicationInstancesManager() { replicaDescriptors = new HashSet(); - replicationCounts = new HashMap>,Integer>>(); + replicationCounts = new HashMap>,Integer>>(); totalMessageCount = new HashMap<>(); totalNumberOfOperations = new HashMap<>(); totalQueueMessagesRawSizeInBytes = new HashMap(); @@ -80,7 +80,7 @@ public class ReplicationInstancesManager { public void registerReplica(ReplicaDescriptor replica) { replicaDescriptors.add(replica); - replicationCounts.put(replica, new HashMap>, Integer>()); + replicationCounts.put(replica, new HashMap>, Integer>()); } public void unregisterReplica(ReplicaDescriptor replica) { @@ -96,15 +96,15 @@ public class ReplicationInstancesManager { */ public void log(List> classes, long sizeOfQueueMessageInBytes) { for (ReplicaDescriptor replica : getReplicaDescriptors()) { - Map>, Integer> counts = replicationCounts.get(replica); + Map>, Integer> counts = replicationCounts.get(replica); if (counts == null) { - counts = new HashMap>, Integer>(); + counts = new HashMap>, Integer>(); replicationCounts.put(replica, counts); } for (Class replicatedOperationClass : classes) { // safe because replicatedOperation is declared of type RacingEventserviceOperation @SuppressWarnings("unchecked") - Class> operationClass = (Class>) replicatedOperationClass; + Class> operationClass = (Class>) replicatedOperationClass; Integer count = counts.get(operationClass); if (count == null) { count = 0; @@ -130,7 +130,7 @@ public class ReplicationInstancesManager { } } - public Map>, Integer> getStatistics(ReplicaDescriptor replica) { + public Map>, Integer> getStatistics(ReplicaDescriptor replica) { return replicationCounts.get(replica); } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java index fe403ca9bf8..1d2b9745d9d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java @@ -13,6 +13,7 @@ import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sse.BuildVersion; +import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationMasterDescriptor; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { @@ -72,7 +73,7 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip } @Override - public URL getInitialLoadURL() throws MalformedURLException { + public URL getInitialLoadURL(Iterable> replicables) throws MalformedURLException { return new URL("http", getHostname(), servletPort, REPLICATION_SERVLET + "?" + ReplicationServlet.ACTION + "=" + ReplicationServlet.Action.INITIAL_LOAD.name()); } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceExecutionListener.java new file mode 100755 index 00000000000..3e17d3d1c4a --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceExecutionListener.java @@ -0,0 +1,47 @@ +package com.sap.sse.replication.impl; + +import com.sap.sse.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.replication.Replicable; + +/** + * Listens for operation execution notifications from a single {@link Replicable} object. It asks the + * {@link ReplicationServiceImpl} it was passed at construction to + * {@link ReplicationServiceImpl#broadcastOperation(OperationWithResult, Replicable) broadcast} the operation to any interested + * replica. + * + * @author Axel Uhl (D043530) + * + * @param + */ +public class ReplicationServiceExecutionListener implements OperationExecutionListener { + private final ReplicationServiceImpl replicationService; + private final Replicable replicable; + + /** + * {@link Replicable#addOperationExecutionListener(OperationExecutionListener) Adds} this new listener to the replicable + */ + protected ReplicationServiceExecutionListener(ReplicationServiceImpl replicationService, Replicable replicable) { + super(); + this.replicationService = replicationService; + this.replicable = replicable; + this.replicable.addOperationExecutionListener(this); + } + + /** + * {@link #broadcastOperation(OperationWithResult, Replicable) Broadcasts} the operation to all registered + * replicas by publishing it to the fan-out exchange. + */ + @Override + public void executed(OperationWithResult operation) { + try { + replicationService.broadcastOperation(operation, replicable); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public void unsubscribe() { + this.replicable.removeOperationExecutionListener(this); + } +} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index f6d41bd0185..b465364991b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -2,18 +2,20 @@ package com.sap.sse.replication.impl; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ConnectException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.UUID; @@ -30,37 +32,48 @@ import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.sap.sse.BuildVersion; +import com.sap.sse.common.Util; import com.sap.sse.replication.OperationExecutionListener; import com.sap.sse.replication.OperationWithResult; import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicablesProvider; +import com.sap.sse.replication.ReplicablesProvider.ReplicableLifeCycleListener; import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.ReplicationService; /** - * Can observe a {@link Replicable} for the operations it performs that require replication. Only observes as long as - * there are replicas registered. If the last replica is de-registered, the service stops observing the - * {@link Replicable}. Operations received that require replication are sent to the {@link Exchange} to which replica - * queues can bind, using a {@link Replicator}. The exchange name and connectivity information for the message queuing - * system is provided to this service during construction. + * Manages a set of observers of {@link Replicable}, receiving notifications for the operations they perform that + * require replication. This service provides the connectivity and central management including central keeping of + * replication statistics for this server instance. Triggering the broadcast of an operation notified by a + * {@link Replicable} is in the responsibility of each individual observer. *

* - * This service object {@link Replicable#addOperationExecutionListener(OperationExecutionListener) registers} as - * listener at the {@link Replicable} so it {@link #executed(OperationWithResult) receives} notifications about - * operations executed by the {@link Replicable} that require replication if and only if there is at least one - * replica registered. + * The observers are registered only when there are replicas registered. If the last replica is de-registered, the + * service stops observing the {@link Replicable}. Operations received that require replication are sent to the + * {@link Exchange} to which replica queues can bind, using a {@link Replicator}. By prefixing each message with the + * {@link Object#toString()} representation of the {@link Replicable}'s {@link Replicable#getId() ID} the receiver can + * determine to which {@link Replicable} to forward the operation. As such, this service multiplexes the replication + * channels for potentially many {@link Replicable}s living in this server instance. + *

+ * + * The exchange name and connectivity information for the message queuing system are provided to this service during + * construction. + *

+ * + * This service object {@link Replicable#addOperationExecutionListener(OperationExecutionListener) registers} individual + * listeners at the {@link Replicable}s so it {@link #executed(OperationWithResult) receives} notifications about + * operations executed by the {@link Replicable} that require replication if and only if there is at least one replica + * registered. * * @author Frank Mittag, Axel Uhl (d043530) * */ -public class ReplicationServiceImpl> implements ReplicationService, -OperationExecutionListener, HasReplicable { +public class ReplicationServiceImpl implements ReplicationService { private static final Logger logger = Logger.getLogger(ReplicationServiceImpl.class.getName()); - private final ReplicationInstancesManager replicationInstancesManager; + private final ReplicationInstancesManager replicationInstancesManager; - private final ServiceTracker, Replicable> replicableTracker; - - private final Replicable localService; + private final ReplicablesProvider replicablesProvider; /** * null, if this instance is not currently replicating from some master; the master's descriptor otherwise @@ -102,7 +115,9 @@ OperationExecutionListener, HasReplicable { * For this instance running as a replica, the replicator receives messages from the master's queue and applies them * to the local replica. */ - private Replicator replicator; + private Replicator replicator; + + private final Set> executionListeners; private Thread replicatorThread; @@ -120,6 +135,17 @@ OperationExecutionListener, HasReplicable { * are replaced or cleared when the timer scoops up the currently buffered operations to send them out. */ private ByteArrayOutputStream outboundBuffer; + + /** + * The {@link #outboundBuffer} contains a message with serialized operations originating from a single + * {@link Replicable} whose {@link Replicable#getId() ID} is written as its string value to the beginning + * of the stream using {@link DataOutputStream#writeUTF(String)}. When an operation of a {@link Replicable} + * with a different ID is to be {@link #broadcastOperation(OperationWithResult, Replicable) broadcast}, the + * existing {@link #outboundBuffer} needs to be transmitted and a new one is started for the {@link Replicable} + * now wanting to replicate an operation. Access is synchronized, as for {@link #outboundBuffer} using the + * {@link #outboundBufferMonitor}. + */ + private String outboundBufferReplicableIdAsString; /** * An object output stream that writes to {@link #outboundBuffer}. Operations are serialized into this stream until the timer @@ -173,51 +199,52 @@ OperationExecutionListener, HasReplicable { */ private long messageCount; - /** - * @param exchangeName name of the fan-out exchange to which replication operations will be sent - * @param exchangeHost name of the host under which the RabbitMQ server can be reached - * @param exchangePort port of the RabbitMQ server, or 0 for default port - */ - public ReplicationServiceImpl(String exchangeName, String exchangeHost, int exchangePort, final ReplicationInstancesManager replicationInstancesManager) throws IOException { - this(exchangeName, exchangeHost, exchangePort, replicationInstancesManager, /* localService */ null, /* create ReplicableServiceTracker */ true); + private class LifeCycleListener implements ReplicableLifeCycleListener { + @Override + public void replicableAdded(Replicable replicable) { + addNewOperationExecutionListener(replicable); + } + + @Override + public void replicableRemoved(Replicable replicable) { + // TODO + } } - private ReplicationServiceImpl(String exchangeName, String exchangeHost, - int exchangePort, final ReplicationInstancesManager replicationInstancesManager, - Replicable localService, boolean createReplicableServiceTracker) throws IOException { + /** + * @param exchangeName + * name of the fan-out exchange to which replication operations will be sent + * @param exchangeHost + * name of the host under which the RabbitMQ server can be reached + * @param exchangePort + * port of the RabbitMQ server, or 0 for default port + * @param replicablesProvider + * lets this service request the currently known {@link Replicable} objects to be observed for + * replication; it also offers this service the possibility to register for life cycle events of those + * {@link Replicable} objects so that this service can stop observing them for operations to be + * replicated when they have been removed, or start observing new {@link Recpliable} objects that were + * added. + */ + public ReplicationServiceImpl(String exchangeName, String exchangeHost, + int exchangePort, final ReplicationInstancesManager replicationInstancesManager, + ReplicablesProvider replicablesProvider) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); + executionListeners = new HashSet<>(); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); - if (createReplicableServiceTracker) { - replicableTracker = getReplicableTracker(); - replicableTracker.open(); - } else { - replicableTracker = null; - } - this.localService = localService; + this.replicablesProvider = replicablesProvider; this.exchangeName = exchangeName; this.exchangeHost = exchangeHost; this.exchangePort = exchangePort; + replicablesProvider.addReplicableLifeCycleListener(new LifeCycleListener()); replicator = null; serverUUID = UUID.randomUUID(); logger.info("Setting " + serverUUID.toString() + " as unique replication identifier."); } - /** - * Like {@link #ReplicationServiceImpl(String, ReplicationInstancesManager)}, only that instead of using an OSGi - * service tracker to discover the {@link Replicable}, the service to replicate is "injected" here. - * - * @param exchangeName - * the name of the exchange to which replicas can bind - */ - public ReplicationServiceImpl(String exchangeName, String exchangeHost, - final ReplicationInstancesManager replicationInstancesManager, Replicable localService) throws IOException { - this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create ReplicableServiceTracker */ false); - } - - protected ServiceTracker, Replicable> getReplicableTracker() { - return new ServiceTracker, Replicable>( + protected ServiceTracker, Replicable> getReplicableTracker() { + return new ServiceTracker, Replicable>( Activator.getDefaultContext(), Replicable.class.getName(), null); } @@ -247,15 +274,8 @@ OperationExecutionListener, HasReplicable { return result; } - @Override - public Replicable getReplicable() { - Replicable result; - if (localService != null) { - result = localService; - } else { - result = replicableTracker.getService(); - } - return result; + private Iterable> getReplicables() { + return replicablesProvider.getReplicables(); } @Override @@ -273,7 +293,14 @@ OperationExecutionListener, HasReplicable { } private void addAsListenerToReplicables() { - getReplicable().addOperationExecutionListener(this); + for (Replicable replicable : getReplicables()) { + addNewOperationExecutionListener(replicable); + } + } + + private void addNewOperationExecutionListener(Replicable replicable) { + final ReplicationServiceExecutionListener listener = new ReplicationServiceExecutionListener(this, replicable); + executionListeners.add(listener); } @Override @@ -292,29 +319,41 @@ OperationExecutionListener, HasReplicable { } private void removeAsListenerFromReplicables() { - getReplicable().removeOperationExecutionListener(this); + for (ReplicationServiceExecutionListener listener : executionListeners) { + listener.unsubscribe(); + } } /** - * Schedules a single operation for broadcast. The operation is added to {@link #outboundBuffer}, and if not already scheduled, - * a {@link #timer} is created and scheduled to send in {@link #TRANSMISSION_DELAY_MILLIS} milliseconds. + * Schedules a single operation for broadcast. The operation is added to {@link #outboundBuffer}, and if not already + * scheduled, a {@link #timer} is created and scheduled to send in {@link #TRANSMISSION_DELAY_MILLIS} milliseconds. + * + * @param replicable + * the replicable by which the operation was executed that now will be broadcast to all replicas; the {@link Replicable#getId() ID} + * of this replica in its string form will be used to prefix the operation */ - private void broadcastOperation(OperationWithResult operation) throws IOException { + > void broadcastOperation(OperationWithResult operation, Replicable replicable) throws IOException { // need to write the operations one by one, making sure the ObjectOutputStream always writes // identical objects again if required because they may have changed state in between ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(operation); oos.close(); - final byte[] bytes = bos.toByteArray(); + final byte[] serializedOperation = bos.toByteArray(); synchronized (outboundBufferMonitor) { + final String replicaIdAsString = replicable.getId().toString(); + if (outboundBuffer != null && !Util.equalsWithNull(outboundBufferReplicableIdAsString, replicaIdAsString)) { + flushBufferToRabbitMQ(); // operation from a replicable different from that for which operations are buffered so far --> flush + } // still holding the monitor, so no other broadcast request from a different replicable can step in between if (outboundBuffer == null) { outboundBuffer = new ByteArrayOutputStream(); + outboundBufferReplicableIdAsString = replicaIdAsString; GZIPOutputStream zipper = new GZIPOutputStream(outboundBuffer); + new DataOutputStream(zipper).writeUTF(replicaIdAsString); outboundObjectBuffer = new ObjectOutputStream(zipper); outboundBufferClasses = new ArrayList<>(); } - outboundObjectBuffer.writeObject(bytes); + outboundObjectBuffer.writeObject(serializedOperation); outboundBufferClasses.add(operation.getClass()); if (outboundBuffer.size() > TRIGGER_MESSAGE_SIZE_IN_BYTES) { logger.info("Triggering replication because buffer holds " + outboundBuffer.size() @@ -367,6 +406,7 @@ OperationExecutionListener, HasReplicable { classesOfOperationsToSend = outboundBufferClasses; doSend = true; outboundBuffer = null; + outboundBufferReplicableIdAsString = null; outboundObjectBuffer = null; outboundBufferClasses = null; } else { @@ -407,6 +447,11 @@ OperationExecutionListener, HasReplicable { return replicatingFromMaster; } + /** + * The peer for this method is + * {@link ReplicationServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)} + * which implements the initial load sending process. + */ @Override public void startToReplicateFrom(ReplicationMasterDescriptor master) throws IOException, ClassNotFoundException, InterruptedException { logger.info("Starting to replicate from "+master); @@ -430,30 +475,35 @@ OperationExecutionListener, HasReplicable { throw ex; } logger.info("Connection to exchange successful."); - URL initialLoadURL = master.getInitialLoadURL(); + final Iterable> replicables = replicablesProvider.getReplicables(); + URL initialLoadURL = master.getInitialLoadURL(replicables); logger.info("Initial load URL is "+initialLoadURL); - replicator = new Replicator(master, this, /* startSuspended */ true, consumer); // start receiving messages already now, but start in suspended mode - replicatorThread = new Thread(replicator, "Replicator receiving from "+master.getMessagingHostname()+"/"+master.getExchangeName()); - final Replicable replicable = getReplicable(); - // clear Replicable state here, before starting to receive and de-serialized operations which builds up new state, e.g., in competitor store - replicable.clearReplicaState(); // see also bug 2437 + replicator = new Replicator(master, replicablesProvider, /* startSuspended */true, consumer); + // clear Replicable state here, before starting to receive and de-serialized operations which builds up + // new state, e.g., in competitor store + for (Replicable r : getReplicables()) { + r.clearReplicaState(); + } + replicatorThread = new Thread(replicator, "Replicator receiving from " + master.getMessagingHostname() + "/" + + master.getExchangeName()); replicatorThread.start(); logger.info("Started replicator thread"); InputStream is = initialLoadURL.openStream(); final String queueName = new BufferedReader(new InputStreamReader(is)).readLine(); + RabbitInputStreamProvider rabbitInputStreamProvider = new RabbitInputStreamProvider(master.createChannel(), + queueName); try { - RabbitInputStreamProvider rabbitInputStreamProvider = new RabbitInputStreamProvider(master.createChannel(), queueName); - ObjectInputStream ois = replicable.createObjectInputStreamResolvingAgainstCache( - new GZIPInputStream(rabbitInputStreamProvider.getInputStream())); - logger.info("Starting to receive initial load"); - replicable.initiallyFillFrom(ois); - logger.info("Done receiving initial load"); - replicator.setSuspended(false); // apply queued operations + for (Replicable replicable : getReplicables()) { + logger.info("Starting to receive initial load"); + replicable.initiallyFillFrom(new GZIPInputStream(rabbitInputStreamProvider.getInputStream())); + logger.info("Done receiving initial load"); + replicator.setSuspended(false); // apply queued operations + } } finally { // delete initial load queue DeleteOk deleteOk = consumer.getChannel().queueDelete(queueName); - logger.info("Deleted queue "+queueName+" used for initial load: "+deleteOk.toString()); + logger.info("Deleted queue " + queueName + " used for initial load: " + deleteOk.toString()); } } @@ -498,25 +548,12 @@ OperationExecutionListener, HasReplicable { } } - /** - * {@link #broadcastOperation(OperationWithResult) Broadcasts} the operation to all registered - * replicas by publishing it to the fan-out exchange. - */ - @Override - public void executed(OperationWithResult operation) { - try { - broadcastOperation(operation); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - protected void registerReplicaUuidForMaster(String uuid, ReplicationMasterDescriptor master) { replicaUUIDs.put(master, uuid); } @Override - public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { + public Map>, Integer> getStatistics(ReplicaDescriptor replicaDescriptor) { return replicationInstancesManager.getStatistics(replicaDescriptor); } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index 6fa8e052ad7..fe65fc79478 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -52,19 +52,20 @@ public class ReplicationServlet extends AbstractHttpServlet { */ private static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; - private ServiceTracker, ReplicationService> replicationServiceTracker; + public static final String REPLICA_IDS_AS_STRINGS_COMMA_SEPARATED = "replicaIdsAsStringsCommaSeparated"; + + private final ServiceTracker replicationServiceTracker; - private ServiceTracker, Replicable> replicableServiceTracker; + private final OSGiReplicableTracker replicablesProvider; public ReplicationServlet() throws Exception { BundleContext context = Activator.getDefaultContext(); - replicationServiceTracker = new ServiceTracker, ReplicationService>(context, ReplicationService.class.getName(), null); + replicablesProvider = new OSGiReplicableTracker(context); + replicationServiceTracker = new ServiceTracker(context, ReplicationService.class.getName(), null); replicationServiceTracker.open(); - replicableServiceTracker = new ServiceTracker, Replicable>(context, Replicable.class.getName(), null); - replicableServiceTracker.open(); } - protected ReplicationService getReplicationService() { + protected ReplicationService getReplicationService() { return replicationServiceTracker.getService(); } @@ -87,6 +88,7 @@ public class ReplicationServlet extends AbstractHttpServlet { deregisterClientWithReplicationService(req, resp); break; case INITIAL_LOAD: + String[] replicableIdsAsStrings = req.getParameter(REPLICA_IDS_AS_STRINGS_COMMA_SEPARATED).split(","); Channel channel = getReplicationService().createMasterChannel(); RabbitOutputStream ros = new RabbitOutputStream(INITIAL_LOAD_PACKAGE_SIZE, channel, /* queueName */ "initialLoad-for-"+req.getRemoteHost()+"@"+new Date()+"-"+UUID.randomUUID(), @@ -98,15 +100,18 @@ public class ReplicationServlet extends AbstractHttpServlet { ros, /* log every megabyte */1024l * 1024l, Level.INFO, "HTTP output for initial load for " + req.getRemoteHost()); final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(countingOutputStream); - ObjectOutputStream oos = new ObjectOutputStream(gzipOutputStream); - try { - getReplicable().serializeForInitialReplication(oos); - gzipOutputStream.finish(); - } catch (Exception e) { - logger.info("Error trying to serialize initial load for replication: "+e.getMessage()); - logger.log(Level.SEVERE, "doGet", e); - resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - e.printStackTrace(resp.getWriter()); + for (String replicableIdAsString : replicableIdsAsStrings) { + Replicable replicable = replicablesProvider.getReplicable(replicableIdAsString); + ObjectOutputStream oos = new ObjectOutputStream(gzipOutputStream); + try { + replicable.serializeForInitialReplication(oos); + gzipOutputStream.finish(); + } catch (Exception e) { + logger.info("Error trying to serialize initial load for replication: " + e.getMessage()); + logger.log(Level.SEVERE, "doGet", e); + resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + e.printStackTrace(resp.getWriter()); + } } countingOutputStream.close(); break; @@ -116,10 +121,6 @@ public class ReplicationServlet extends AbstractHttpServlet { } } - private Replicable getReplicable() { - return replicableServiceTracker.getService(); - } - private void deregisterClientWithReplicationService(HttpServletRequest req, HttpServletResponse resp) throws IOException { ReplicaDescriptor replica = getReplicaDescriptor(req); getReplicationService().unregisterReplica(replica); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index 557e8fa8683..6d3411e064d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -1,13 +1,16 @@ package com.sap.sse.replication.impl; import java.io.ByteArrayInputStream; +import java.io.DataInputStream; import java.io.EOFException; import java.io.IOException; import java.io.ObjectInputStream; import java.lang.reflect.Field; -import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.LinkedBlockingQueue; @@ -15,22 +18,35 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; import java.util.zip.GZIPInputStream; import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownSignalException; +import com.sap.sse.common.Named; +import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; import com.sap.sse.replication.OperationWithResult; import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicablesProvider; import com.sap.sse.replication.ReplicationMasterDescriptor; /** * Receives {@link OperationWithResult} objects from a message queue and {@link Replicable#apply(OperationWithResult) - * applies} them to the {@link Replicable} passed to this replicator at construction. When started in suspended mode, - * messages received will be turned into {@link OperationWithResult} objects and then queued until - * {@link #setSuspended(boolean) setSuspended(false)} is invoked which applies all queued operations before applying the - * ones received later. + * applies} them to the {@link Replicable} objects that can be found through the {@link ReplicablesProvider} passed to + * this replicator at construction, based on the {@link Replicable#getId() replicable's ID} which is used in the stream + * to prefix the operations. + *

+ * + * The corresponding writer for this protocol is implemented by + * {@link ReplicationServiceImpl#broadcastOperation(OperationWithResult, Replicable)}.

+ * + * When started in suspended mode, messages received will be turned into {@link OperationWithResult} objects and then + * queued until {@link #setSuspended(boolean) setSuspended(false)} is invoked which applies all queued operations before + * applying the ones received later. *

* * The receiver takes care of synchronizing receiving, suspending/resuming and queuing. Waiters are notified whenever @@ -39,15 +55,20 @@ import com.sap.sse.replication.ReplicationMasterDescriptor; * @author Axel Uhl (d043530) * */ -public class Replicator> implements Runnable { +public class Replicator implements Runnable { private final static Logger logger = Logger.getLogger(Replicator.class.getName()); private static final long CHECK_INTERVAL_MILLIS = 2000; // how long (milliseconds) to pause before checking connection again private static final int CHECK_COUNT = 150; // how long to check, value is CHECK_INTERVAL second steps private final ReplicationMasterDescriptor master; - private final HasReplicable replicableProvider; - private final List> queue; + private final ReplicablesProvider replicableProvider; + + /** + * Keys are the {@link Replicable}s' IDs as string; values are the operation queues for the replicable identified by the + * key. + */ + private final Map>>> queueByReplicableIdAsString; private QueueingConsumer consumer; @@ -90,8 +111,8 @@ public class Replicator> implements Runna * @param consumer * the RabbitMQ consumer from which to load messages */ - public Replicator(ReplicationMasterDescriptor master, HasReplicable replicableProvider, boolean startSuspended, QueueingConsumer consumer) { - this.queue = new ArrayList>(); + public Replicator(ReplicationMasterDescriptor master, ReplicablesProvider replicableProvider, boolean startSuspended, QueueingConsumer consumer) { + this.queueByReplicableIdAsString = new HashMap<>(); this.master = master; this.replicableProvider = replicableProvider; this.suspended = startSuspended; @@ -136,31 +157,37 @@ public class Replicator> implements Runna } byte[] bytesFromMessage = delivery.getBody(); checksPerformed = 0; - // Set this object's class's class loader as context for de-serialization so that all exported classes + // Set the replicable's class's class loader as context for deserialization so that all exported classes // of all required bundles/packages can be deserialized at least - Replicable replicable = replicableProvider.getReplicable(); - Thread.currentThread().setContextClassLoader(replicable.getClass().getClassLoader()); - ObjectInputStream ois = replicable - .createObjectInputStreamResolvingAgainstCache( - new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage))); - int operationsInMessage = 0; - try { - while (true) { - byte[] serializedOperation = (byte[]) ois.readObject(); - ObjectInputStream operationOIS = replicable - .createObjectInputStreamResolvingAgainstCache(new ByteArrayInputStream(serializedOperation)); - @SuppressWarnings("unchecked") - OperationWithResult operation = (OperationWithResult) operationOIS.readObject(); - operationCount++; - operationsInMessage++; - if (operationCount % 10000l == 0) { - logger.info("Received " + operationCount + " operations so far"); + final GZIPInputStream uncompressedInputStream = new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage)); + String replicableIdAsString = new DataInputStream(uncompressedInputStream).readUTF(); + Replicable replicable = replicableProvider.getReplicable(replicableIdAsString); + if (replicable != null) { + Thread.currentThread().setContextClassLoader(replicable.getClass().getClassLoader()); + ObjectInputStream ois = new ObjectInputStream(uncompressedInputStream); // no special stream required; only reading a generic byte[] + int operationsInMessage = 0; + try { + while (true) { + byte[] serializedOperation = (byte[]) ois.readObject(); + readOperationAndApplyOrQueueIt(replicable, serializedOperation); + operationCount++; + operationsInMessage++; + if (operationCount % 10000l == 0) { + logger.info("Received " + operationCount + " operations so far"); + } } - applyOrQueue(operation); + } catch (EOFException eof) { + logger.fine("Reached EOF on replication message after having read " + operationsInMessage + + " operations"); + // reached EOF; expected } - } catch (EOFException eof) { - logger.fine("Reached EOF on replication message after having read "+operationsInMessage+" operations"); - // reached EOF; expected + } else { + // otherwise, we don't know the replicable and simply drop the message with all the operations for the unknown recipient + Stream sn = StreamSupport.stream(replicableProvider.getReplicables().spliterator(), /* parallel */ false) + .map(r->(() -> r.getId().toString())); + logger.warning("received replication message for replicable with ID "+replicableIdAsString+" which is unknnown by this replicator "+ + "which only knows "+ + Util.join(", ", sn::iterator)); } } catch (ConsumerCancelledException cce) { logger.info("Consumer has been shut down properly."); @@ -217,27 +244,38 @@ public class Replicator> implements Runna logger.info("Stopped replicator thread. This server will no longer receive events from a master."); } - public synchronized boolean isQueueEmpty() { - return queue.isEmpty(); + private > void readOperationAndApplyOrQueueIt(Replicable replicable, + byte[] serializedOperation) throws ClassNotFoundException, IOException { + OperationWithResult operation = replicable.readOperation(new ByteArrayInputStream(serializedOperation)); + applyOrQueue(operation, replicable); } /** - * If the replicator is currently {@link #suspended}, the operation is queued, otherwise immediately applied to - * the receiving replica. + * If the replicator is currently {@link #suspended}, the operation is queued, otherwise immediately + * applied to the receiving replica. + * + * @param replicable + * the replicable to which to apply or for which to queue the operation */ - private synchronized void applyOrQueue(OperationWithResult operation) { + private synchronized > void applyOrQueue(OperationWithResult operation, Replicable replicable) { if (suspended) { - queue(operation); + queue(operation, replicable); } else { - apply(operation); + apply(operation, replicable); } } - private synchronized void apply(final OperationWithResult operation) { + private synchronized > void apply(final OperationWithResult operation, String replicableIdAsString) { + @SuppressWarnings("unchecked") + Replicable replicable = (Replicable) replicableProvider.getReplicable(replicableIdAsString); + apply(operation, replicable); + } + + private synchronized > void apply(final OperationWithResult operation, Replicable replicable) { Runnable runnable = new Runnable() { @Override public void run() { - replicableProvider.getReplicable().apply(operation); + replicable.apply(operation); } }; if (operation.requiresSynchronousExecution()) { @@ -247,11 +285,12 @@ public class Replicator> implements Runna } } - private synchronized void queue(OperationWithResult operation) { + private synchronized void queue(OperationWithResult operation, Replicable replicable) { + List>> queue = queueByReplicableIdAsString.get(replicable.getId().toString()); if (queue.isEmpty()) { notifyAll(); } - queue.add(operation); + queue.add(new Pair>(replicable.getId().toString(), operation)); assert !queue.isEmpty(); } @@ -259,22 +298,26 @@ public class Replicator> implements Runna if (this.suspended != suspended) { this.suspended = suspended; if (!this.suspended) { - applyQueue(); + applyQueues(); } } } - private synchronized void applyQueue() { - for (Iterator> i=queue.iterator(); i.hasNext(); ) { - OperationWithResult operation = i.next(); - i.remove(); - try { - apply(operation); - } catch (Exception e) { - logger.log(Level.SEVERE, "Error applying queued, replicated operation "+operation+". Continuing with next queued operation.", e); + private synchronized void applyQueues() { + for (Entry>>> r : queueByReplicableIdAsString.entrySet()) { + final List>> queue = r.getValue(); + for (Iterator>> i = queue.iterator(); i.hasNext();) { + Pair> replicableIdAsStringAndOperation = i.next(); + i.remove(); + try { + apply(replicableIdAsStringAndOperation.getB(), replicableIdAsStringAndOperation.getA()); + } catch (Exception e) { + logger.log(Level.SEVERE, "Error applying queued, replicated operation " + + replicableIdAsStringAndOperation + ". Continuing with next queued operation.", e); + } } + assert queue.isEmpty(); } - assert queue.isEmpty(); notifyAll(); } @@ -285,7 +328,7 @@ public class Replicator> implements Runna public synchronized void stop() { if (isSuspended()) { /* make sure to apply everything in queue before stopping this thread */ - applyQueue(); + applyQueues(); } logger.info("Signaled Replicator thread to stop asap."); stopped = true; @@ -298,7 +341,8 @@ public class Replicator> implements Runna @Override public String toString() { - return "Replicator for master "+master+", queue size: "+queue.size(); + long queueSize = queueByReplicableIdAsString.values().stream().mapToLong(l->l.size()).sum(); + return "Replicator for master "+master+", queue size: "+queueSize; } } From e279a2d0afbecc4b45e8e4e38e86763139845029 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 13 Nov 2014 23:10:41 +0100 Subject: [PATCH 064/113] fixed URL production for replica IDs in replication master descriptor --- .../replication/impl/ReplicationMasterDescriptorImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java index 1d2b9745d9d..cb114cf4c5a 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java @@ -7,6 +7,8 @@ import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; @@ -74,8 +76,11 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip @Override public URL getInitialLoadURL(Iterable> replicables) throws MalformedURLException { + final String replicablesIdsAsStringSeparatedByCommas = StreamSupport.stream(replicables.spliterator(), /* parallel */ false). + map(r->r.getId().toString()).collect(Collectors.joining(",")); return new URL("http", getHostname(), servletPort, REPLICATION_SERVLET + "?" + ReplicationServlet.ACTION + "=" - + ReplicationServlet.Action.INITIAL_LOAD.name()); + + ReplicationServlet.Action.INITIAL_LOAD.name() + + "&"+ReplicationServlet.REPLICA_IDS_AS_STRINGS_COMMA_SEPARATED+"="+replicablesIdsAsStringSeparatedByCommas); } @Override From a808d78d14965b819b019870e7112cefab24c6a5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 13 Nov 2014 23:51:45 +0100 Subject: [PATCH 065/113] all compile errors removed in Eclipse workspace for bug2409; now it's time for testing... --- .../test/AbstractServerReplicationTest.java | 35 ++++++++----------- ...LeaderboardCorrectionsReplicationTest.java | 3 +- ...tialLoadReplicationObjectIdentityTest.java | 4 +-- .../test/PrematureOperationReceiptTest.java | 4 +-- ...nstancesManagerLoggingPerformanceTest.java | 5 ++- .../sse/replication/ReplicablesProvider.java | 6 ++-- .../impl/AbstractReplicablesProvider.java | 12 +++++++ .../impl/OSGiReplicableTracker.java | 3 ++ .../impl/ReplicationServiceImpl.java | 22 +++++++----- .../sap/sse/replication/impl/Replicator.java | 7 ++++ .../impl/SingletonReplicablesProvider.java | 20 +++++++++++ 11 files changed, 78 insertions(+), 43 deletions(-) create mode 100755 java/com.sap.sse.replication/src/com/sap/sse/replication/impl/SingletonReplicablesProvider.java diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index dfc4629532e..08bc462760e 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -35,7 +35,6 @@ import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sse.common.Util; import com.sap.sse.mongodb.MongoDBService; @@ -49,10 +48,10 @@ import com.sap.sse.replication.impl.ReplicationInstancesManager; import com.sap.sse.replication.impl.ReplicationMasterDescriptorImpl; import com.sap.sse.replication.impl.ReplicationServiceImpl; import com.sap.sse.replication.impl.Replicator; +import com.sap.sse.replication.impl.SingletonReplicablesProvider; public abstract class AbstractServerReplicationTest { protected static final int SERVLET_PORT = 9990; - private DomainFactory resolveAgainst; protected RacingEventServiceImpl replica; protected RacingEventServiceImpl master; protected ReplicationServiceTestImpl replicaReplicator; @@ -101,7 +100,6 @@ public abstract class AbstractServerReplicationTest { if (dropDB) { mongoDBService.getDB().dropDatabase(); } - resolveAgainst = DomainFactory.INSTANCE; final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getMongoObjectFactory(mongoDBService); mongoObjectFactory.getDatabase().requestStart(); if (master != null) { @@ -116,15 +114,15 @@ public abstract class AbstractServerReplicationTest { // replica gets its own base DomainFactory: new DomainFactoryImpl()), mongoObjectFactory, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE); } - ReplicationInstancesManager rim = new ReplicationInstancesManager<>(); - masterReplicator = new ReplicationServiceImpl>(exchangeName, exchangeHost, rim, this.master); + ReplicationInstancesManager rim = new ReplicationInstancesManager(); + masterReplicator = new ReplicationServiceImpl(exchangeName, exchangeHost, 0, rim, new SingletonReplicablesProvider(this.master)); replicaDescriptor = new ReplicaDescriptor(InetAddress.getLocalHost(), serverUuid, ""); masterReplicator.registerReplica(replicaDescriptor); // connect to exchange host and local server running as master // master server and exchange host can be two different hosts masterDescriptor = new ReplicationMasterDescriptorImpl(exchangeHost, exchangeName, 0, UUID.randomUUID().toString(), "localhost", SERVLET_PORT); - ReplicationServiceTestImpl replicaReplicator = new ReplicationServiceTestImpl(exchangeName, exchangeHost, resolveAgainst, rim, - replicaDescriptor, this.replica, this.master, masterReplicator, masterDescriptor); + ReplicationServiceTestImpl replicaReplicator = new ReplicationServiceTestImpl(exchangeName, exchangeHost, rim, replicaDescriptor, + this.replica, this.master, masterReplicator, masterDescriptor); Util.Pair result = new Util.Pair<>(replicaReplicator, masterDescriptor); initialLoadTestServerThread = replicaReplicator.startInitialLoadTransmissionServlet(); this.replicaReplicator = replicaReplicator; @@ -170,19 +168,16 @@ public abstract class AbstractServerReplicationTest { static class ReplicationServiceTestImpl extends ReplicationServiceImpl { protected static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; - private final DomainFactory resolveAgainst; private final RacingEventService master; private final ReplicaDescriptor replicaDescriptor; private final ReplicationService masterReplicationService; private final ReplicationMasterDescriptor masterDescriptor; - public ReplicationServiceTestImpl(String exchangeName, String exchangeHost, DomainFactory resolveAgainst, - ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, - RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, - ReplicationMasterDescriptor masterDescriptor) + public ReplicationServiceTestImpl(String exchangeName, String exchangeHost, ReplicationInstancesManager replicationInstancesManager, + ReplicaDescriptor replicaDescriptor, RacingEventService replica, + RacingEventService master, ReplicationService masterReplicationService, ReplicationMasterDescriptor masterDescriptor) throws IOException { - super(exchangeName, exchangeHost, replicationInstancesManager, replica); - this.resolveAgainst = resolveAgainst; + super(exchangeName, exchangeHost, 0, replicationInstancesManager, new SingletonReplicablesProvider(replica)); this.replicaDescriptor = replicaDescriptor; this.master = master; this.masterReplicationService = masterReplicationService; @@ -249,13 +244,12 @@ public abstract class AbstractServerReplicationTest { return initialLoadTestServerThread; } - protected Replicator> startToReplicateFromButDontYetFetchInitialLoad(ReplicationMasterDescriptor master, boolean startReplicatorSuspended) + protected Replicator startToReplicateFromButDontYetFetchInitialLoad(ReplicationMasterDescriptor master, boolean startReplicatorSuspended) throws IOException { masterReplicationService.registerReplica(replicaDescriptor); registerReplicaUuidForMaster(replicaDescriptor.getUuid().toString(), master); QueueingConsumer consumer = master.getConsumer(); - final Replicator> replicator = new Replicator>( - master, this, startReplicatorSuspended, consumer); + final Replicator replicator = new Replicator(master, getReplicablesProvider(), startReplicatorSuspended, consumer); new Thread(replicator).start(); return replicator; } @@ -269,19 +263,18 @@ public abstract class AbstractServerReplicationTest { protected void initialLoad() throws IOException, ClassNotFoundException, InterruptedException { PipedOutputStream pos = new PipedOutputStream(); PipedInputStream pis = new PipedInputStream(pos); - final ObjectOutputStream oos = new ObjectOutputStream(pos); new Thread("clone writer") { public void run() { try { - master.serializeForInitialReplication(oos); - oos.close(); + master.serializeForInitialReplication(pos); + pos.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } }.start(); - for (Replicable replicable : getReplicables()) { + for (Replicable replicable : getReplicablesProvider().getReplicables()) { replicable.clearReplicaState(); replicable.initiallyFillFrom(pis); } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java index 47ed07659d8..6c13b354561 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java @@ -34,7 +34,6 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; -import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn; @@ -50,7 +49,7 @@ public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServer private static final Logger logger = Logger.getLogger(DelayedLeaderboardCorrectionsReplicationTest.class.getName()); private static final String Q2 = "Q2"; - private ReplicationService replicaReplicator; + private ReplicationService replicaReplicator; private ReplicationMasterDescriptor masterDescriptor; @Before diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index e8284fd0bed..709c99ba2ca 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -42,8 +42,6 @@ import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore; import com.sap.sailing.domain.test.TrackBasedTest; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; -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.AddDefaultRegatta; import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; @@ -142,7 +140,7 @@ public class InitialLoadReplicationObjectIdentityTest extends AbstractServerRepl /* fire up replication */ performReplicationSetup(); ReplicationMasterDescriptor the_master = replicationDescriptorPair.getB(); /* master descriptor */ - Replicator> replicator = replicationDescriptorPair.getA().startToReplicateFromButDontYetFetchInitialLoad(the_master, /* startReplicatorSuspended */ true); + Replicator replicator = replicationDescriptorPair.getA().startToReplicateFromButDontYetFetchInitialLoad(the_master, /* startReplicatorSuspended */ true); replicationDescriptorPair.getA().initialLoad(); replicator.setSuspended(false); synchronized (replicator) { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index 9bd477c458b..d9fb9d6abe1 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -10,15 +10,13 @@ import org.junit.Test; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.impl.LowPoint; -import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard; import com.sap.sse.common.Util; import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.impl.Replicator; public class PrematureOperationReceiptTest extends AbstractServerReplicationTest { - private Replicator> replicator; + private Replicator replicator; private ReplicationServiceTestImpl replicationService; /** diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java index 2e1ddb2df9a..9a2e470c9d7 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ReplicationInstancesManagerLoggingPerformanceTest.java @@ -11,19 +11,18 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup; import com.sap.sse.replication.impl.ReplicaDescriptor; import com.sap.sse.replication.impl.ReplicationInstancesManager; public class ReplicationInstancesManagerLoggingPerformanceTest { - private ReplicationInstancesManager replicationInstanceManager; + private ReplicationInstancesManager replicationInstanceManager; private CreateLeaderboardGroup operation; private ReplicaDescriptor replica; @Before public void setUp() throws UnknownHostException { - replicationInstanceManager = new ReplicationInstancesManager(); + replicationInstanceManager = new ReplicationInstancesManager(); replica = new ReplicaDescriptor(InetAddress.getLocalHost(), UUID.randomUUID(), ""); replicationInstanceManager.registerReplica(replica); operation = new CreateLeaderboardGroup("Test Leaderboard Group", "Description of Test Leaderboard Group", /* displayName */ null, diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java index 4c3e765ceac..6b1f0e43b3b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java @@ -5,8 +5,8 @@ public interface ReplicablesProvider { /** * Listeners of this type can be registered and de-registered using * {@link ReplicablesProvider#addReplicableLifeCycleListener(ReplicableLifeCycleListener)} and - * {@link ReplicablesProvider#removeReplicableLifeCycleListener(ReplicableLifeCycleListener)}. They will be notified of - * {@link Replicable}s being added to or removed from this server instance. A replication service may use this to + * {@link ReplicablesProvider#removeReplicableLifeCycleListener(ReplicableLifeCycleListener)}. They will be notified + * of {@link Replicable}s being added to or removed from this server instance. A replication service may use this to * start listening to operations executed by a new {@link Replicable} or stop observing one that is being removed. * * @author Axel Uhl (D043530) @@ -14,7 +14,7 @@ public interface ReplicablesProvider { */ public static interface ReplicableLifeCycleListener { void replicableAdded(Replicable replicable); - void replicableRemoved(Replicable replicable); + void replicableRemoved(String replicableIdAsString); } Iterable> getReplicables(); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java index 5bb73bf9a98..ec9361531ee 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java @@ -24,6 +24,18 @@ public abstract class AbstractReplicablesProvider implements ReplicablesProvider public void removeReplicableLifeCycleListener(ReplicableLifeCycleListener listener) { listeners.remove(listener); } + + protected void notifyReplicableLifeCycleListenersAboutReplicableAdded(Replicable replicable) { + for (ReplicableLifeCycleListener listener : listeners) { + listener.replicableAdded(replicable); + } + } + + protected void notifyReplicableLifeCycleListenersAboutReplicableRemoved(String replicableIdAsString) { + for (ReplicableLifeCycleListener listener : listeners) { + listener.replicableRemoved(replicableIdAsString); + } + } /** * This default implementation loops over the result of {@link #getReplicables()} and returns the first object whose diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java index 0b12589c218..7aa85b65d01 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -36,6 +36,7 @@ public class OSGiReplicableTracker extends AbstractReplicablesProvider { final Replicable result = bundleContext.getService(reference); serviceReferenceByIdAsString.put(result.getId().toString(), reference); idAsStringByServiceReference.put(reference, result.getId().toString()); + notifyReplicableLifeCycleListenersAboutReplicableAdded(result); return result; } @@ -44,6 +45,8 @@ public class OSGiReplicableTracker extends AbstractReplicablesProvider { Replicable service) { serviceReferenceByIdAsString.remove(idAsStringByServiceReference.get(reference)); idAsStringByServiceReference.remove(reference); + notifyReplicableLifeCycleListenersAboutReplicableRemoved( + (String) reference.getProperty(Replicable.OSGi_Service_Registry_ID_Property_Name)); } @Override public void modifiedService(ServiceReference> reference, Replicable service) {} diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index b465364991b..c734646bf18 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -12,10 +12,8 @@ import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.UUID; @@ -117,7 +115,7 @@ public class ReplicationServiceImpl implements ReplicationService { */ private Replicator replicator; - private final Set> executionListeners; + private final Map> executionListenersByReplicableIdAsString; private Thread replicatorThread; @@ -206,8 +204,11 @@ public class ReplicationServiceImpl implements ReplicationService { } @Override - public void replicableRemoved(Replicable replicable) { - // TODO + public void replicableRemoved(String replicableIdAsString) { + ReplicationServiceExecutionListener listener = executionListenersByReplicableIdAsString.remove(replicableIdAsString); + if (listener != null) { + listener.unsubscribe(); + } } } @@ -229,7 +230,7 @@ public class ReplicationServiceImpl implements ReplicationService { int exchangePort, final ReplicationInstancesManager replicationInstancesManager, ReplicablesProvider replicablesProvider) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); - executionListeners = new HashSet<>(); + executionListenersByReplicableIdAsString = new HashMap<>(); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); this.replicablesProvider = replicablesProvider; @@ -248,6 +249,10 @@ public class ReplicationServiceImpl implements ReplicationService { Activator.getDefaultContext(), Replicable.class.getName(), null); } + protected ReplicablesProvider getReplicablesProvider() { + return replicablesProvider; + } + private Channel createMasterChannelAndDeclareFanoutExchange() throws IOException { Channel result = createMasterChannel(); result.exchangeDeclare(exchangeName, "fanout"); @@ -300,7 +305,7 @@ public class ReplicationServiceImpl implements ReplicationService { private void addNewOperationExecutionListener(Replicable replicable) { final ReplicationServiceExecutionListener listener = new ReplicationServiceExecutionListener(this, replicable); - executionListeners.add(listener); + executionListenersByReplicableIdAsString.put(replicable.getId().toString(), listener); } @Override @@ -319,9 +324,10 @@ public class ReplicationServiceImpl implements ReplicationService { } private void removeAsListenerFromReplicables() { - for (ReplicationServiceExecutionListener listener : executionListeners) { + for (ReplicationServiceExecutionListener listener : executionListenersByReplicableIdAsString.values()) { listener.unsubscribe(); } + executionListenersByReplicableIdAsString.clear(); } /** diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index 6d3411e064d..cf9fcf512b6 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -345,4 +345,11 @@ public class Replicator implements Runnable { return "Replicator for master "+master+", queue size: "+queueSize; } + /** + * @return true if all queues for all replicables are empty + */ + public boolean isQueueEmpty() { + return !queueByReplicableIdAsString.values().stream().anyMatch(q->!q.isEmpty()); + } + } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/SingletonReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/SingletonReplicablesProvider.java new file mode 100755 index 00000000000..f8226df2d30 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/SingletonReplicablesProvider.java @@ -0,0 +1,20 @@ +package com.sap.sse.replication.impl; + +import java.util.Collections; + +import com.sap.sse.replication.Replicable; + +public class SingletonReplicablesProvider extends AbstractReplicablesProvider { + private final Replicable replicable; + + public SingletonReplicablesProvider(Replicable replicable) { + super(); + this.replicable = replicable; + } + + @Override + public Iterable> getReplicables() { + return Collections.singleton(replicable); + } + +} From 29db1e085825936c8830ca510ccfffda7011261a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 00:21:16 +0100 Subject: [PATCH 066/113] fixed initial load serialization for replication tests --- .../replication/test/AbstractServerReplicationTest.java | 3 +-- .../sap/sse/replication/impl/ReplicationServiceImpl.java | 6 +++--- .../com/sap/sse/replication/impl/ReplicationServlet.java | 4 +--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index 08bc462760e..d157b0276da 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -219,8 +219,7 @@ public abstract class AbstractServerReplicationTest { /* queueName */ "initial-load-for-TestClient-"+UUID.randomUUID(), /* syncAfterTimeout */ false); pw.println(ros.getQueueName()); final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(ros); - final ObjectOutputStream oos = new ObjectOutputStream(gzipOutputStream); - master.serializeForInitialReplication(oos); + master.serializeForInitialReplication(gzipOutputStream); gzipOutputStream.finish(); ros.close(); } else if (request.contains("STOP")) { diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index c734646bf18..4b6d2b712a8 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -497,12 +497,12 @@ public class ReplicationServiceImpl implements ReplicationService { logger.info("Started replicator thread"); InputStream is = initialLoadURL.openStream(); final String queueName = new BufferedReader(new InputStreamReader(is)).readLine(); - RabbitInputStreamProvider rabbitInputStreamProvider = new RabbitInputStreamProvider(master.createChannel(), - queueName); + RabbitInputStreamProvider rabbitInputStreamProvider = new RabbitInputStreamProvider(master.createChannel(), queueName); try { + final GZIPInputStream gzipInputStream = new GZIPInputStream(rabbitInputStreamProvider.getInputStream()); for (Replicable replicable : getReplicables()) { logger.info("Starting to receive initial load"); - replicable.initiallyFillFrom(new GZIPInputStream(rabbitInputStreamProvider.getInputStream())); + replicable.initiallyFillFrom(gzipInputStream); logger.info("Done receiving initial load"); replicator.setSuspended(false); // apply queued operations } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index fe65fc79478..77d96b94e4d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -1,7 +1,6 @@ package com.sap.sse.replication.impl; import java.io.IOException; -import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; @@ -102,9 +101,8 @@ public class ReplicationServlet extends AbstractHttpServlet { final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(countingOutputStream); for (String replicableIdAsString : replicableIdsAsStrings) { Replicable replicable = replicablesProvider.getReplicable(replicableIdAsString); - ObjectOutputStream oos = new ObjectOutputStream(gzipOutputStream); try { - replicable.serializeForInitialReplication(oos); + replicable.serializeForInitialReplication(gzipOutputStream); gzipOutputStream.finish(); } catch (Exception e) { logger.info("Error trying to serialize initial load for replication: " + e.getMessage()); From 43f56e350c05d3917939739b310e23695dd7791c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 10:47:30 +0100 Subject: [PATCH 067/113] fixed byg 2470 by adding the gwt.version property setting to com.sap.sse.security.ui's pom.xml --- .../sailing/server/gateway/jaxrs/spi/MasterDataResource.java | 1 - java/com.sap.sse.security.ui/pom.xml | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java index 09f5d160bfc..856e910a9a9 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java @@ -81,7 +81,6 @@ public class MasterDataResource extends AbstractSailingServerResource { ResponseBuilder resp; if (compress) { StreamingOutput streamingOutput = new StreamingOutput() { - @Override public void write(OutputStream output) throws IOException, WebApplicationException { ObjectOutputStream objectOutputStream = null; diff --git a/java/com.sap.sse.security.ui/pom.xml b/java/com.sap.sse.security.ui/pom.xml index d492cf028c4..4f9011eb74a 100644 --- a/java/com.sap.sse.security.ui/pom.xml +++ b/java/com.sap.sse.security.ui/pom.xml @@ -10,6 +10,9 @@ com.sap.sse.security.ui eclipse-plugin + + 2.6.1 + javax.validation From 8b195d5fed68188e96b7cb8a4589ca873a44a1f6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 13:03:51 +0100 Subject: [PATCH 068/113] factoring StreamingOutput classes in MasterDataResource --- .../gateway/jaxrs/spi/MasterDataResource.java | 109 ++++++++++-------- .../com/sap/sse/replication/Replicable.java | 11 ++ .../impl/ReplicableWithObjectInputStream.java | 9 ++ 3 files changed, 84 insertions(+), 45 deletions(-) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java index 856e910a9a9..bb714e934ad 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java @@ -73,62 +73,81 @@ public class MasterDataResource extends AbstractSailingServerResource { } } } - final TopLevelMasterData masterData = new TopLevelMasterData(groupsToExport, getService().getAllEvents(), getService().getPersistentRegattasForRaceIDs(), getService() .getAllMediaTracks(), exportWind); - - ResponseBuilder resp; + final StreamingOutput streamingOutput; if (compress) { - StreamingOutput streamingOutput = new StreamingOutput() { - @Override - public void write(OutputStream output) throws IOException, WebApplicationException { - ObjectOutputStream objectOutputStream = null; - try { - GZIPOutputStream gzip = new GZIPOutputStream(output); - OutputStream outputStreamWithByteCounter = new ByteCountOutputStreamDecorator(gzip); - objectOutputStream = new ObjectOutputStream(outputStreamWithByteCounter); - - masterData.setMasterDataExportFlagOnRaceColumns(true); - // Actual start of streaming - writeObjects(competitorIds, masterData, objectOutputStream); - } finally { - objectOutputStream.close(); - masterData.setMasterDataExportFlagOnRaceColumns(false); - } - long timeToExport = System.currentTimeMillis() - startTime; - logger.info(String.format("Took %s ms to finish masterdataexport", timeToExport)); - } - }; - resp = Response.ok(streamingOutput).header("Content-Encoding", "gzip"); + streamingOutput= new CompressingStreamingOutput(masterData, competitorIds, startTime); } else { - StreamingOutput streamingOutput = new StreamingOutput() { - - @Override - public void write(OutputStream output) throws IOException, WebApplicationException { - ObjectOutputStream objectOutputStream = null; - try { - OutputStream outputStreamWithByteCounter = new ByteCountOutputStreamDecorator(output); - objectOutputStream = new ObjectOutputStream(outputStreamWithByteCounter); - masterData.setMasterDataExportFlagOnRaceColumns(true); - - writeObjects(competitorIds, masterData, objectOutputStream); - } finally { - objectOutputStream.close(); - masterData.setMasterDataExportFlagOnRaceColumns(false); - long timeToExport = System.currentTimeMillis() - startTime; - logger.info(String.format("Took %s ms to finish masterdataexport", timeToExport)); - } - } - }; - resp = Response.ok(streamingOutput); + streamingOutput = new NonCompressingStreamingOutput(masterData, competitorIds, startTime); + } + final ResponseBuilder resp = Response.ok(streamingOutput); + if (compress) { + resp.header("Content-Encoding", "gzip"); } - Response builtResponse = resp.build(); long timeToExport = System.currentTimeMillis() - startTime; logger.info(String.format("Took %s ms to start masterdataexport-streaming.", timeToExport)); return builtResponse; } + + private abstract class AbstractStreamingOutput implements StreamingOutput { + private final TopLevelMasterData masterData; + private final List competitorIds; + private final long startTime; + + protected AbstractStreamingOutput(TopLevelMasterData masterData, List competitorIds, long startTime) { + super(); + this.masterData = masterData; + this.competitorIds = competitorIds; + this.startTime = startTime; + } + + protected abstract OutputStream wrapOutputStream(OutputStream outputStream) throws IOException; + + @Override + public void write(OutputStream output) throws IOException, WebApplicationException { + ObjectOutputStream objectOutputStream = null; + try { + OutputStream gzipOrNot = wrapOutputStream(output); + OutputStream outputStreamWithByteCounter = new ByteCountOutputStreamDecorator(gzipOrNot); + objectOutputStream = new ObjectOutputStream(outputStreamWithByteCounter); + masterData.setMasterDataExportFlagOnRaceColumns(true); + // Actual start of streaming + writeObjects(competitorIds, masterData, objectOutputStream); + } finally { + objectOutputStream.close(); + masterData.setMasterDataExportFlagOnRaceColumns(false); + } + long timeToExport = System.currentTimeMillis() - startTime; + logger.info(String.format("Took %s ms to finish masterdataexport", timeToExport)); + } + } + + private class NonCompressingStreamingOutput extends AbstractStreamingOutput { + protected NonCompressingStreamingOutput(TopLevelMasterData masterData, List competitorIds, + long startTime) { + super(masterData, competitorIds, startTime); + } + + @Override + protected OutputStream wrapOutputStream(OutputStream outputStream) { + return outputStream; + } + } + + private class CompressingStreamingOutput extends AbstractStreamingOutput { + protected CompressingStreamingOutput(TopLevelMasterData masterData, List competitorIds, + long startTime) { + super(masterData, competitorIds, startTime); + } + + @Override + protected OutputStream wrapOutputStream(OutputStream outputStream) throws IOException { + return new GZIPOutputStream(outputStream); + } + } private void writeObjects(final List competitorIds, final TopLevelMasterData masterData, ObjectOutputStream objectOutputStream) throws IOException { diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java index 04dec321ac4..646edfdca00 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -1,5 +1,6 @@ package com.sap.sse.replication; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; @@ -121,4 +122,14 @@ public interface Replicable> extends With * @throws ClassNotFoundException */ O readOperation(InputStream inputStream) throws IOException, ClassNotFoundException; + + /** + * Writes an operation to an output stream such that it can be read by {@link #readOperation}. + * + * @param closeStream + * if true, the stream will be closed after having written the operation; in any case, the + * content written will be flushed to the outputStream so that the caller may continue to + * invoke this method for other operations and/or on other replicables without producing corrupt data. + */ + void writeOperation(OperationWithResult operation, OutputStream outputStream, boolean closeStream) throws IOException; } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java index c2a1aa855d3..0e9745f7c6f 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java @@ -56,4 +56,13 @@ public interface ReplicableWithObjectInputStream operation, OutputStream outputStream, boolean closeStream) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(outputStream); + oos.writeObject(operation); + oos.flush(); + if (closeStream) { + oos.close(); + } + } } From 59803c533c94afbe789346f1b5a3dff25a1cd2aa Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 13:06:08 +0100 Subject: [PATCH 069/113] use Replicable.writeOperation in ReplicationServiceImpl --- .../com/sap/sse/replication/impl/ReplicationServiceImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 4b6d2b712a8..76901a77c91 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -342,9 +342,7 @@ public class ReplicationServiceImpl implements ReplicationService { // need to write the operations one by one, making sure the ObjectOutputStream always writes // identical objects again if required because they may have changed state in between ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bos); - oos.writeObject(operation); - oos.close(); + replicable.writeOperation(operation, bos, /* close stream */ true); final byte[] serializedOperation = bos.toByteArray(); synchronized (outboundBufferMonitor) { final String replicaIdAsString = replicable.getId().toString(); From f1e23da6b1b43ee4c8a16c7a52195d106c302e13 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 13:06:54 +0100 Subject: [PATCH 070/113] consolidate imports on Replicable, avoiding warnings --- .../src/com/sap/sse/replication/Replicable.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java index 646edfdca00..e96ea3936f5 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -1,6 +1,5 @@ package com.sap.sse.replication; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; From 30ba132a8b9e0e4337822140f766b0cc5ec9aea0 Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 14 Nov 2014 13:56:23 +0100 Subject: [PATCH 071/113] implemented history management for RegattaAnalytics and SeriesAnalytics places --- .../regattaanalytics/RegattaAnalytics.java | 37 +++++++++++++-- .../regattaanalytics/RegattaAnalytics.ui.xml | 4 +- .../seriesanalytics/EventSeriesAnalytics.java | 45 ++++++++++++++++--- .../EventSeriesAnalytics.ui.xml | 6 +-- 4 files changed, 77 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java index 46b0a6d9bf2..aef2bcaba40 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java @@ -11,10 +11,13 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.FleetDTO; @@ -22,10 +25,13 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; +import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.event.header.CompactEventHeader; import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -43,6 +49,8 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList interface RegattaAnalyticsUiBinder extends UiBinder { } + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); + @UiField OldLeaderboard oldLeaderboardComposite; @UiField OldCompetitorCharts oldCompetitorChartsComposite; @UiField(provided=true) CompactEventHeader eventHeader; @@ -57,12 +65,15 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList @UiField Anchor leaderboardAnchor; @UiField Anchor competitorChartsAnchor; - + + private final PlaceNavigation leaderboardNavigation; + private final PlaceNavigation competitorChartsNavigation; + private RegattaAnalyticsDataManager regattaAnalyticsManager; private Timer autoRefreshTimer; - public RegattaAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - eventHeader = new CompactEventHeader(event, leaderboardName, placeNavigator); + public RegattaAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + eventHeader = new CompactEventHeader(event, leaderboardName, placesNavigator); EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); RegattaAnalyticsResources.INSTANCE.css().ensureInjected(); @@ -77,7 +88,14 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList competitorChartsTabPanel.setVisible(false); liveRaceDiv.getStyle().setVisibility(Visibility.HIDDEN); - + + leaderboardNavigation = placesNavigator.getRegattaAnalyticsNavigation(event.id.toString(), RegattaNavigationTabs.Leaderboard, leaderboardName, + event.getBaseURL(), event.isOnRemoteServer()); + competitorChartsNavigation = placesNavigator.getRegattaAnalyticsNavigation(event.id.toString(), RegattaNavigationTabs.CompetitorAnalytics, leaderboardName, + event.getBaseURL(), event.isOnRemoteServer()); + + leaderboardAnchor.setHref(leaderboardNavigation.getTargetUrl()); + competitorChartsAnchor.setHref(competitorChartsNavigation.getTargetUrl()); } public void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, @@ -144,6 +162,7 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList void leaderboardTabClicked(ClickEvent event) { setActiveTabPanel(leaderboardTabPanel, leaderboardAnchor); regattaAnalyticsManager.hideCompetitorChart(); + handleClickEvent(event, leaderboardNavigation); } @UiHandler("competitorChartsAnchor") @@ -151,6 +170,7 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList setActiveTabPanel(competitorChartsTabPanel, competitorChartsAnchor); DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType(); regattaAnalyticsManager.showCompetitorChart(selectedChartDetailType); + handleClickEvent(event, competitorChartsNavigation); } private void setActiveTabPanel(HTMLPanel newActivePanel, Anchor newActiveAnchor) { @@ -164,4 +184,13 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList activeTabPanel.setVisible(true); activeAnchor.addStyleName(SharedResources.INSTANCE.mainCss().navbar_buttonactive()); } + + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + // don't use the placecontroller for navigation here as we want to avoid a page reload + History.newItem(placeNavigation.getTargetUrl(), false); + e.preventDefault(); + } + } } + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml index 58b5ee5b1ca..5ac6f2a3d85 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.ui.xml @@ -20,8 +20,8 @@

- - + +
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java index e7404f52745..0135fcff68a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java @@ -11,10 +11,13 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.common.RaceIdentifier; @@ -23,11 +26,14 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; +import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.event.header.CompactEventHeader; import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboard; import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -45,6 +51,8 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate interface EventSeriesAnalyticsUiBinder extends UiBinder { } + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); + @UiField OldLeaderboard oldOverallLeaderboardComposite; @UiField OldCompetitorCharts oldCompetitorChartsComposite; @UiField OldMultiLeaderboard oldRegattaLeaderboardsComposite; @@ -56,19 +64,22 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate @UiField HTMLPanel overallLeaderboardTabPanel; @UiField HTMLPanel regattaLeaderboardsTabPanel; @UiField HTMLPanel competitorChartsTabPanel; - private HTMLPanel activeTabPanel; - private Widget activeContentWidget; - private Anchor activeAnchor; - @UiField Anchor overallLeaderboardAnchor; @UiField Anchor regattaLeaderboardsAnchor; @UiField Anchor competitorChartsAnchor; + private final PlaceNavigation overallLeaderboardNavigation; + private final PlaceNavigation regattaLeaderboardsNavigation; + private final PlaceNavigation competitorChartsNavigation; + + private HTMLPanel activeTabPanel; + private Widget activeContentWidget; + private Anchor activeAnchor; private EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager; private Timer autoRefreshTimer; - public EventSeriesAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - eventHeader = new CompactEventHeader(event, leaderboardName, placeNavigator); + public EventSeriesAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + eventHeader = new CompactEventHeader(event, leaderboardName, placesNavigator); EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); EventSeriesAnalyticsResources.INSTANCE.css().ensureInjected(); @@ -90,6 +101,17 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate regattaLeaderboardsTabPanel.setVisible(false); competitorChartsTabPanel.setVisible(false); liveRaceDiv.getStyle().setVisibility(Visibility.HIDDEN); + + overallLeaderboardNavigation = placesNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.OverallLeaderboard, leaderboardName, + event.getBaseURL(), event.isOnRemoteServer()); + regattaLeaderboardsNavigation = placesNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.RegattaLeaderboards, leaderboardName, + event.getBaseURL(), event.isOnRemoteServer()); + competitorChartsNavigation = placesNavigator.getSeriesAnalyticsNavigation(event.id.toString(), SeriesNavigationTabs.CompetitorAnalytics, leaderboardName, + event.getBaseURL(), event.isOnRemoteServer()); + + overallLeaderboardAnchor.setHref(overallLeaderboardNavigation.getTargetUrl()); + regattaLeaderboardsAnchor.setHref(regattaLeaderboardsNavigation.getTargetUrl()); + competitorChartsAnchor.setHref(competitorChartsNavigation.getTargetUrl()); } public void createSeriesAnalyticsViewer(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, @@ -163,11 +185,13 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate @UiHandler("overallLeaderboardAnchor") void overallLeaderboardTabClicked(ClickEvent event) { setActiveTabPanel(overallLeaderboardTabPanel, eventSeriesAnalyticsManager.getLeaderboardPanel(), overallLeaderboardAnchor); + handleClickEvent(event, overallLeaderboardNavigation); } @UiHandler("regattaLeaderboardsAnchor") void regattaLeaderboardsTabClicked(ClickEvent event) { setActiveTabPanel(regattaLeaderboardsTabPanel, eventSeriesAnalyticsManager.getMultiLeaderboardPanel(), regattaLeaderboardsAnchor); + handleClickEvent(event, regattaLeaderboardsNavigation); } @UiHandler("competitorChartsAnchor") @@ -175,6 +199,7 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate setActiveTabPanel(competitorChartsTabPanel, eventSeriesAnalyticsManager.getMultiCompetitorChart(), competitorChartsAnchor); DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType(); eventSeriesAnalyticsManager.showCompetitorChart(selectedChartDetailType); + handleClickEvent(event, competitorChartsNavigation); } private void setActiveTabPanel(HTMLPanel newActivePanel, Widget newActiveContentWidget, Anchor newActiveAnchor) { @@ -193,4 +218,12 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate activeContentWidget.setVisible(true); activeAnchor.addStyleName(SharedResources.INSTANCE.mainCss().navbar_buttonactive()); } + + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + // don't use the placecontroller for navigation here as we want to avoid a page reload + History.newItem(placeNavigation.getTargetUrl(), false); + e.preventDefault(); + } + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml index 0e6756cf96e..81a4b52324e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.ui.xml @@ -20,9 +20,9 @@
- - - + + +
From 15ff17798aaf07145e300c88545834c4bc5fe918 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 15:48:37 +0100 Subject: [PATCH 072/113] set thread context class loader for master data import to ensure ObjectInputStream can resolve all classes as needed --- .../sap/sailing/domain/base/DomainFactory.java | 17 +++++++++++++++-- .../server/masterdata/MasterDataImporter.java | 3 +++ .../src/com/sap/sse/replication/Replicable.java | 1 - 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java index d24eacc32eb..f4c05d32c97 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/DomainFactory.java @@ -21,6 +21,7 @@ import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.TimePoint; import com.sap.sse.replication.impl.ObjectInputStreamResolvingAgainstCache; @@ -36,8 +37,20 @@ public interface DomainFactory extends SharedDomainFactory { /** * When de-serializing objects of types whose instances that are managed and cached by this domain factory, - * de-serialized instances need to be replaced by / resolved to the counterparts already known by this factory. - * The stream returned by this method can be used + * de-serialized instances need to be replaced by / resolved to the counterparts already known by this factory. The + * stream returned by this method can be used to have objects implementing the {@link IsManagedByCache} interface + * {@link IsManagedByCache#resolve(Object) resolve} against this domain factory as their cache. + *

+ * + * Note: In order to allow the deserialization process to find all the classes required, it is a good idea to + * {@link Thread#setContextClassLoader(ClassLoader) set the context class loader} on the + * {@link Thread#currentThread() current thread} to one that can see and resolve all the classes that have instances + * in the stream. Example:

+     *          ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
+     *          Thread.currentThread().setContextClassLoader(TopLevelMasterData.class.getClassLoader());
+     *          Object o = domainFactory.createObjectInputStreamResolvingAgainstThisFactory(inputStream).readObject();
+     *          Thread.currentThread().setContextClassLoader(oldContextClassLoader);
+     * 
*/ ObjectInputStreamResolvingAgainstCache createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java index ae0912fd725..abb75a64b6d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java @@ -41,6 +41,8 @@ public class MasterDataImporter { RaceLogStore raceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore( racingEventService.getMongoObjectFactory(), racingEventService.getDomainObjectFactory()); RegattaImpl.setOngoingMasterDataImport(new MasterDataImportInformation(raceLogStore)); + ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(TopLevelMasterData.class.getClassLoader()); @SuppressWarnings("unchecked") final List competitorIds = (List) objectInputStream.readObject(); @@ -53,6 +55,7 @@ public class MasterDataImporter { TopLevelMasterData topLevelMasterData = (TopLevelMasterData) objectInputStream.readObject(); RegattaImpl.setOngoingMasterDataImport(null); + Thread.currentThread().setContextClassLoader(oldContextClassLoader); // in order to restore all listeners we need to initialize the regatta // after the whole object graph has been restored diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java index e96ea3936f5..6edf84ab50b 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -118,7 +118,6 @@ public interface Replicable> extends With * From an input stream, reads an operation that can be {@link #apply(OperationWithResult) applied} to this object. * Separating reading and applying gives clients an opportunity to queue operations, e.g., in order to wait until * receiving and {@link #initiallyFillFrom(InputStream) filling} the initial load has completed. - * @throws ClassNotFoundException */ O readOperation(InputStream inputStream) throws IOException, ClassNotFoundException; From 6b0b4a0b3fa50fe97c7b64df95ea73af40a9c5ce Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 14 Nov 2014 16:31:02 +0100 Subject: [PATCH 073/113] enabled direct bookmarking of tabs for RegattaPlace --- .../SmartphoneApplicationClientFactory.java | 5 +++-- ...letAndDesktopApplicationClientFactory.java | 5 +++-- .../regattaanalytics/RegattaAnalytics.java | 21 ++++++++++++++----- .../client/place/regatta/RegattaActivity.java | 2 +- .../place/regatta/RegattaClientFactory.java | 3 ++- .../regatta/TabletAndDesktopRegattaView.java | 5 +++-- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 6942c68bfa2..186f1a4b5aa 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -16,6 +16,7 @@ import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; @@ -82,8 +83,8 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien } @Override - public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopRegattaView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index a84444b8195..b29800ac0ac 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -16,6 +16,7 @@ import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; @@ -82,8 +83,8 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio } @Override - public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopRegattaView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java index aef2bcaba40..4539a3f897c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java @@ -71,8 +71,11 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList private RegattaAnalyticsDataManager regattaAnalyticsManager; private Timer autoRefreshTimer; + private RegattaNavigationTabs navigationTab; - public RegattaAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + public RegattaAnalytics(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + this.navigationTab = navigationTab; + eventHeader = new CompactEventHeader(event, leaderboardName, placesNavigator); EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); @@ -82,11 +85,8 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList title.setInnerText(leaderboardName); - activeAnchor = leaderboardAnchor; - activeTabPanel = leaderboardTabPanel; - activeAnchor.addStyleName(SharedResources.INSTANCE.mainCss().navbar_buttonactive()); - competitorChartsTabPanel.setVisible(false); + leaderboardTabPanel.setVisible(false); liveRaceDiv.getStyle().setVisibility(Visibility.HIDDEN); leaderboardNavigation = placesNavigator.getRegattaAnalyticsNavigation(event.id.toString(), RegattaNavigationTabs.Leaderboard, leaderboardName, @@ -119,6 +119,17 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList oldCompetitorChartsComposite.setChart(regattaAnalyticsManager.getMultiCompetitorChart(), availableDetailsTypes, initialDetailType); regattaAnalyticsManager.hideCompetitorChart(); + + switch(navigationTab) { + case Leaderboard: + setActiveTabPanel(leaderboardTabPanel, leaderboardAnchor); + break; + case CompetitorAnalytics: + setActiveTabPanel(competitorChartsTabPanel, competitorChartsAnchor); + DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType(); + regattaAnalyticsManager.showCompetitorChart(selectedChartDetailType); + break; + } } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java index 6794f5ace10..38214f7091d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaActivity.java @@ -108,7 +108,7 @@ public class RegattaActivity extends AbstractActivity implements ErrorReporter { boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); boolean showOverallLeaderboard = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_OVERALL_LEADERBOARD, false); - RegattaAnalyticsView analyticsView = clientFactory.createRegattaAnalyticsView(event, leaderboardName, timerForClientServerOffset); + RegattaAnalyticsView analyticsView = clientFactory.createRegattaAnalyticsView(event, leaderboardName, regattaPlace.getNavigationTab(), timerForClientServerOffset); Window.setTitle(regattaPlace.getTitle(event.getName(), leaderboardDisplayName)); analyticsView.createRegattaAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java index 276f51f3f4a..9b064121dc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaClientFactory.java @@ -1,9 +1,10 @@ package com.sap.sailing.gwt.home.client.place.regatta; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingClientFactory; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sse.gwt.client.player.Timer; public interface RegattaClientFactory extends SailingClientFactory { - RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset); + RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java index 9b747ba0f42..9c20efd1237 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java @@ -8,6 +8,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalytics; +import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -24,8 +25,8 @@ public class TabletAndDesktopRegattaView extends Composite implements RegattaAna @UiField(provided=true) RegattaAnalytics regattaAnalytics; - public TabletAndDesktopRegattaView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - regattaAnalytics = new RegattaAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); + public TabletAndDesktopRegattaView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + regattaAnalytics = new RegattaAnalytics(event, leaderboardName, navigationTab, timerForClientServerOffset, placeNavigator); initWidget(uiBinder.createAndBindUi(this)); From b2c5c8496ecc6bcb1d5781e61cd9cf1684b68833 Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 14 Nov 2014 17:03:03 +0100 Subject: [PATCH 074/113] enabled direct bookmarking of tabs for SeriesPlace --- .../SmartphoneApplicationClientFactory.java | 5 ++-- ...letAndDesktopApplicationClientFactory.java | 5 ++-- .../seriesanalytics/EventSeriesAnalytics.java | 27 ++++++++++++++----- .../client/place/series/SeriesActivity.java | 3 ++- .../place/series/SeriesClientFactory.java | 3 ++- .../series/TabletAndDesktopSeriesView.java | 5 ++-- 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 186f1a4b5aa..990d8c4a794 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -21,6 +21,7 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; @@ -88,8 +89,8 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien } @Override - public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopSeriesView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopSeriesView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index b29800ac0ac..89d44cf78ae 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -21,6 +21,7 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; @@ -88,8 +89,8 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio } @Override - public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopSeriesView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopSeriesView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java index 0135fcff68a..7a4d06179f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java @@ -77,8 +77,11 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate private Anchor activeAnchor; private EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager; private Timer autoRefreshTimer; + private SeriesNavigationTabs navigationTab; + + public EventSeriesAnalytics(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + this.navigationTab = navigationTab; - public EventSeriesAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { eventHeader = new CompactEventHeader(event, leaderboardName, placesNavigator); EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); @@ -93,11 +96,7 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate } title.setInnerText(seriesTitle); - activeAnchor = overallLeaderboardAnchor; - activeTabPanel = overallLeaderboardTabPanel; - activeContentWidget = null; - activeAnchor.addStyleName(SharedResources.INSTANCE.mainCss().navbar_buttonactive()); - + overallLeaderboardTabPanel.setVisible(false); regattaLeaderboardsTabPanel.setVisible(false); competitorChartsTabPanel.setVisible(false); liveRaceDiv.getStyle().setVisibility(Visibility.HIDDEN); @@ -139,7 +138,21 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate eventSeriesAnalyticsManager.getLeaderboardPanel().addLeaderboardUpdateListener(this); eventSeriesAnalyticsManager.getMultiLeaderboardPanel().addLeaderboardUpdateListener(this); - + + switch(navigationTab) { + case OverallLeaderboard: + setActiveTabPanel(overallLeaderboardTabPanel, eventSeriesAnalyticsManager.getLeaderboardPanel(), overallLeaderboardAnchor); + break; + case RegattaLeaderboards: + setActiveTabPanel(regattaLeaderboardsTabPanel, eventSeriesAnalyticsManager.getMultiLeaderboardPanel(), regattaLeaderboardsAnchor); + break; + case CompetitorAnalytics: + setActiveTabPanel(competitorChartsTabPanel, eventSeriesAnalyticsManager.getMultiCompetitorChart(), competitorChartsAnchor); + DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType(); + eventSeriesAnalyticsManager.showCompetitorChart(selectedChartDetailType); + break; + } + activeContentWidget = eventSeriesAnalyticsManager.getLeaderboardPanel(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java index 0fcd150df28..4870dd84657 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesActivity.java @@ -108,7 +108,8 @@ public class SeriesActivity extends AbstractActivity implements ErrorReporter { boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); boolean showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); - SeriesAnalyticsView analyticsView = clientFactory.createSeriesAnalyticsView(event, leaderboardName, timerForClientServerOffset); + SeriesAnalyticsView analyticsView = clientFactory.createSeriesAnalyticsView(event, leaderboardName, + seriesPlace.getNavigationTab(), timerForClientServerOffset); Window.setTitle(seriesPlace.getTitle(event.getName(), leaderboardDisplayName)); analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java index 7a45b276a0b..0ede6be3e5f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesClientFactory.java @@ -1,9 +1,10 @@ package com.sap.sailing.gwt.home.client.place.series; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingClientFactory; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sse.gwt.client.player.Timer; public interface SeriesClientFactory extends SailingClientFactory { - SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset); + SeriesAnalyticsView createSeriesAnalyticsView(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java index 6e57586812e..e3b529584fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java @@ -8,6 +8,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalytics; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -24,8 +25,8 @@ public class TabletAndDesktopSeriesView extends Composite implements SeriesAnaly @UiField(provided=true) EventSeriesAnalytics seriesAnalytics; - public TabletAndDesktopSeriesView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, timerForClientServerOffset, placeNavigator); + public TabletAndDesktopSeriesView(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, navigationTab, timerForClientServerOffset, placeNavigator); initWidget(uiBinder.createAndBindUi(this)); From 835a7e56a3c7d57eaaefb81c5c09fa0c00b2d493 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 14 Nov 2014 21:10:59 +0000 Subject: [PATCH 075/113] added check to start httpd server when REPLICATION_ON_START=True, adding "Use Event" line to 001-events.conf --- configuration/sailing | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/configuration/sailing b/configuration/sailing index 9a4da0b50dc..8ffcf316a34 100755 --- a/configuration/sailing +++ b/configuration/sailing @@ -19,6 +19,30 @@ start_tmux() { } start_servers() { + launch_httpd=false + VARS=`/opt/amazon/bin/ec2-metadata -d | sed "s/user-data\: //g" | grep -v "^not available$"` + for var in $VARS; do + echo "$var" | grep -q "^SERVER_NAME=" + if [ "$?" != "0" ]; then + eval "export $var" + fi + echo "$var" | grep -q "^SERVER_PORT=" + if [ "$?" != "0" ]; then + eval "export $var" + fi + echo "$var" | grep -q "^EVENT_ID=" + if [ "$?" != "0" ]; then + eval "export $var" + fi + echo "$var" | grep -iq "^REPLICATE_ON_START=True" + if [ "$?" != "0" ]; then + launch_httpd=true + fi + done + if [ "$launch_httpd" = "true" ]; then + launch_httpd $SERVER_NAME $SERVER_PORT $EVENT_ID + fi + for conf in $JAVA_START_INSTANCES; do echo "Checking for amazon update..." su - sailing -c "cd /home/sailing/servers/$conf && $GIT_REPOSITORY/java/target/refreshInstance.sh auto-install" 2>/var/log/sailing.err >/var/log/sailing.out @@ -36,7 +60,21 @@ stop_servers() { RETVAL=$? [ $RETVAL -eq 0 ] && success || failure done +} +# launch_httpd(server_name, port, event_id) +launch_httpd() { + echo "launch_httpd($1, $2, $2)" + if [ -x /etc/init.d/httpd ]; then + server_name="`echo $1 | tr [A-Z] [a-z]`" + port="$2" + event_id="$3" + echo "Use Event $server_name.sapsailing.com \"$event_id\" 127.0.0.1 $port" >>/etc/httpd/conf.d/001-events.conf + echo "Launching httpd to map ${server_name}.sapsailing.com to event with ID $event_id with server running on local port $port..." + service httpd start + else + echo Can't launch httpd; start script doesn't seem to be installed at /etc/init.d/httpd + fi } # See how we were called. From b06030845ba0858f3cfa3885a0a244fb2ca88b09 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 15 Nov 2014 19:59:33 +0100 Subject: [PATCH 076/113] set thread context class loader before deserialization --- .../com/sap/sailing/domain/test/AbstractSerializationTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractSerializationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractSerializationTest.java index 1cb7ca465fe..841271be979 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractSerializationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/AbstractSerializationTest.java @@ -25,6 +25,7 @@ public abstract class AbstractSerializationTest { } } }.start(); + Thread.currentThread().setContextClassLoader(AbstractSerializationTest.class.getClassLoader()); ObjectInputStream dis = resolveAgainst.createObjectInputStreamResolvingAgainstThisFactory(pis); @SuppressWarnings("unchecked") T result = (T) dis.readObject(); From 771067ebd0e4e8017889587089a9afd947124f82 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 16 Nov 2014 10:52:49 +0100 Subject: [PATCH 077/113] evaluate the combined env.sh in /etc/init.d/sailing before deciding and launching the httpd server --- configuration/sailing | 44 +++++++++++----------------------- java/target/refreshInstance.sh | 2 +- 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/configuration/sailing b/configuration/sailing index 8ffcf316a34..f2a0fa1a8c1 100755 --- a/configuration/sailing +++ b/configuration/sailing @@ -19,26 +19,6 @@ start_tmux() { } start_servers() { - launch_httpd=false - VARS=`/opt/amazon/bin/ec2-metadata -d | sed "s/user-data\: //g" | grep -v "^not available$"` - for var in $VARS; do - echo "$var" | grep -q "^SERVER_NAME=" - if [ "$?" != "0" ]; then - eval "export $var" - fi - echo "$var" | grep -q "^SERVER_PORT=" - if [ "$?" != "0" ]; then - eval "export $var" - fi - echo "$var" | grep -q "^EVENT_ID=" - if [ "$?" != "0" ]; then - eval "export $var" - fi - echo "$var" | grep -iq "^REPLICATE_ON_START=True" - if [ "$?" != "0" ]; then - launch_httpd=true - fi - done if [ "$launch_httpd" = "true" ]; then launch_httpd $SERVER_NAME $SERVER_PORT $EVENT_ID fi @@ -46,6 +26,9 @@ start_servers() { for conf in $JAVA_START_INSTANCES; do echo "Checking for amazon update..." su - sailing -c "cd /home/sailing/servers/$conf && $GIT_REPOSITORY/java/target/refreshInstance.sh auto-install" 2>/var/log/sailing.err >/var/log/sailing.out + # execute env.sh which now has the same set of variables that the server will see + source /home/sailing/servers/$conf/env.sh + launch_httpd echo "Starting Java server $conf" su - sailing -c "cd /home/sailing/servers/$conf && ./start" 2>/var/log/sailing.err >/var/log/sailing.out RETVAL=$? @@ -64,16 +47,17 @@ stop_servers() { # launch_httpd(server_name, port, event_id) launch_httpd() { - echo "launch_httpd($1, $2, $2)" - if [ -x /etc/init.d/httpd ]; then - server_name="`echo $1 | tr [A-Z] [a-z]`" - port="$2" - event_id="$3" - echo "Use Event $server_name.sapsailing.com \"$event_id\" 127.0.0.1 $port" >>/etc/httpd/conf.d/001-events.conf - echo "Launching httpd to map ${server_name}.sapsailing.com to event with ID $event_id with server running on local port $port..." - service httpd start - else - echo Can't launch httpd; start script doesn't seem to be installed at /etc/init.d/httpd + echo $REPLICATE_ON_START | grep -iq "True" + if [ "$?" = "0" ]; then + echo "REPLICATE_ON_START is True" + if [ -x /etc/init.d/httpd ]; then + server_name="`echo $SERVER_NAME | tr [A-Z] [a-z]`" + echo "Use Event $server_name.sapsailing.com \"$EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>/etc/httpd/conf.d/001-events.conf + echo "Launching httpd to map ${server_name}.sapsailing.com to event with ID $EVENT_ID with server running on local port $SERVER_PORT..." + service httpd start + else + echo Can't launch httpd; start script doesn't seem to be installed at /etc/init.d/httpd + fi fi } diff --git a/java/target/refreshInstance.sh b/java/target/refreshInstance.sh index f22c9e5ab94..1deb950464f 100755 --- a/java/target/refreshInstance.sh +++ b/java/target/refreshInstance.sh @@ -227,7 +227,7 @@ checks if [[ $OPERATION == "auto-install" ]]; then if [[ ! -z "$ON_AMAZON" ]]; then # first check and activate everything found in user data - copy_user_data_to_tmp_file + copy_user_data_to_tmp_file activate_user_data # then download and install environment and append to env.sh install_environment From 417dbd001511a9ee2743ac024a5fd70177f0531a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 16 Nov 2014 19:05:45 +0100 Subject: [PATCH 078/113] slight improvements for replication master descriptor toString(); handle missing replicables a bit better --- .../com/sap/sse/replication/impl/OSGiReplicableTracker.java | 3 ++- .../replication/impl/ReplicationMasterDescriptorImpl.java | 2 +- .../src/com/sap/sse/replication/impl/ReplicationServlet.java | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java index 7aa85b65d01..b0a1eae266d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -61,6 +61,7 @@ public class OSGiReplicableTracker extends AbstractReplicablesProvider { @Override public Replicable getReplicable(String replicableIdAsString) { - return bundleContext.getService(serviceReferenceByIdAsString.get(replicableIdAsString)); + final ServiceReference> serviceReference = serviceReferenceByIdAsString.get(replicableIdAsString); + return serviceReference == null ? null : bundleContext.getService(serviceReference); } } \ No newline at end of file diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java index cb114cf4c5a..974d2c03b08 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java @@ -189,7 +189,7 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip } public String toString() { - return getHostname() + ":" + getServletPort() + " / " + getMessagingHostname() + ":" + getMessagingPort(); + return getHostname() + ":" + getServletPort() + " / " + getMessagingHostname() + ":" + getMessagingPort()+":"+getExchangeName(); } } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index 77d96b94e4d..19b4a9d377c 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -101,9 +101,11 @@ public class ReplicationServlet extends AbstractHttpServlet { final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(countingOutputStream); for (String replicableIdAsString : replicableIdsAsStrings) { Replicable replicable = replicablesProvider.getReplicable(replicableIdAsString); + if (replicable == null) { + break; // causing an error on the replica which is expecting the replica's initial load + } try { replicable.serializeForInitialReplication(gzipOutputStream); - gzipOutputStream.finish(); } catch (Exception e) { logger.info("Error trying to serialize initial load for replication: " + e.getMessage()); logger.log(Level.SEVERE, "doGet", e); @@ -111,6 +113,7 @@ public class ReplicationServlet extends AbstractHttpServlet { e.printStackTrace(resp.getWriter()); } } + gzipOutputStream.finish(); countingOutputStream.close(); break; default: From 6bd64b7e7dd87a2176e38f0a3e5220addd8fedb5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 16 Nov 2014 23:04:35 +0100 Subject: [PATCH 079/113] use a (currently fixed) list of Replicable IDs to wait for before auto-launching replication --- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 2 +- .../sse/replication/ReplicablesProvider.java | 17 +++++- .../impl/AbstractReplicablesProvider.java | 2 +- .../sap/sse/replication/impl/Activator.java | 57 ++++++++++++------- .../impl/OSGiReplicableTracker.java | 35 +++++++++++- .../replication/impl/ReplicationServlet.java | 2 +- .../sap/sse/replication/impl/Replicator.java | 4 +- 7 files changed, 87 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 7e6a534ba62..21574da8de5 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -51,7 +51,7 @@ - + diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java index 6b1f0e43b3b..0546020a081 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java @@ -17,15 +17,26 @@ public interface ReplicablesProvider { void replicableRemoved(String replicableIdAsString); } + @FunctionalInterface + public static interface AddOnlyReplicableLifeCycleListener extends ReplicableLifeCycleListener { + @Override + default void replicableRemoved(String replicableIdAsString) {} + } + Iterable> getReplicables(); /** - * Tries to obtain a {@link Replicable> by its {@link Replicable#getId() ID}, converted to a string using {@link Object#toString()} - * on the ID. + * Tries to obtain a {@link Replicable> by its {@link Replicable#getId() ID}, converted to a string using + * {@link Object#toString()} on the ID. + * + * @param wait + * if true and the replicable with the ID specified is not currently available, wait for it + * to become available; otherwise, return null immediately in case a replicable with the ID + * specified is not currently available * * @return null if no such replicable can be found; the replicable otherwise */ - Replicable getReplicable(String replicableIdAsString); + Replicable getReplicable(String replicableIdAsString, boolean wait); void addReplicableLifeCycleListener(ReplicableLifeCycleListener listener); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java index ec9361531ee..8a828696e89 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java @@ -44,7 +44,7 @@ public abstract class AbstractReplicablesProvider implements ReplicablesProvider * @throws NoSuchElementException if no replicable by that name is found */ @Override - public Replicable getReplicable(String replicableIdAsString) { + public Replicable getReplicable(String replicableIdAsString, boolean wait) { return StreamSupport.stream(getReplicables().spliterator(), /* parallel */false) .filter(r -> r.getId().toString().equals(replicableIdAsString)).findAny().orElse(null); } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java index a4e83b02162..6a1b3498f37 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java @@ -1,11 +1,13 @@ package com.sap.sse.replication.impl; import java.io.IOException; +import java.util.Arrays; import java.util.logging.Logger; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import com.sap.sse.replication.ReplicablesProvider; import com.sap.sse.replication.ReplicationService; /** @@ -111,34 +113,47 @@ public class Activator implements BundleActivator { logger.severe("Couldn't parse the replication port specification \""+exchangePortAsString+"\". Using default."); } replicationInstancesManager = new ReplicationInstancesManager(); + final OSGiReplicableTracker replicablesProvider = new OSGiReplicableTracker(bundleContext); ReplicationService serverReplicationMasterService = new ReplicationServiceImpl( - exchangeName, exchangeHost, exchangePort, replicationInstancesManager, new OSGiReplicableTracker(bundleContext)); + exchangeName, exchangeHost, exchangePort, replicationInstancesManager, replicablesProvider); bundleContext.registerService(ReplicationService.class, serverReplicationMasterService, null); logger.info("Registered replication service "+serverReplicationMasterService+" using exchange name "+exchangeName+" on host "+exchangeHost); - checkIfAutomaticReplicationShouldStart(serverReplicationMasterService, exchangeName); + checkIfAutomaticReplicationShouldStart(serverReplicationMasterService, exchangeName, replicablesProvider); } - private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName) { + private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName, final ReplicablesProvider replicablesProvider) { String replicateOnStart = System.getProperty(PROPERTY_NAME_REPLICATE_ON_START); if (Boolean.valueOf(replicateOnStart)) { - logger.info("Configuration requested automatic replication. Starting it up..."); - String replicateFromExchangeName = System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_EXCHANGE_NAME); - if (replicateFromExchangeName == null) { - replicateFromExchangeName = masterExchangeName; - } - ReplicationMasterDescriptorImpl master = new ReplicationMasterDescriptorImpl( - System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_QUEUE_HOST), - replicateFromExchangeName, - Integer.valueOf(System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_QUEUE_PORT).trim()), - serverReplicationMasterService.getServerIdentifier().toString(), - System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_HOST), - Integer.valueOf(System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_PORT).trim())); - try { - serverReplicationMasterService.startToReplicateFrom(master); - logger.info("Automatic replication has been started."); - } catch (ClassNotFoundException | IOException | InterruptedException e) { - e.printStackTrace(); - } + // TODO obtain list of Replicable objects to wait for from system property + final String[] replicableIdsAsStrings = { "com.sap.sailing.server.impl.RacingEventServiceImpl" }; + new Thread("ServiceTracker waiting for Replicables "+Arrays.toString(replicableIdsAsStrings)) { + @Override + public void run() { + logger.info("Waiting for Replicables " + replicableIdsAsStrings + " before firing up replication automatically..."); + for (String replicableIdAsString : replicableIdsAsStrings) { + replicablesProvider.getReplicable(replicableIdAsString, /* wait */true); + logger.info("Obtained Replicable " + replicableIdAsString); + } + logger.info("Configuration requested automatic replication. Starting it up..."); + String replicateFromExchangeName = System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_EXCHANGE_NAME); + if (replicateFromExchangeName == null) { + replicateFromExchangeName = masterExchangeName; + } + ReplicationMasterDescriptorImpl master = new ReplicationMasterDescriptorImpl( + System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_QUEUE_HOST), + replicateFromExchangeName, + Integer.valueOf(System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_QUEUE_PORT).trim()), + serverReplicationMasterService.getServerIdentifier().toString(), + System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_HOST), + Integer.valueOf(System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_PORT).trim())); + try { + serverReplicationMasterService.startToReplicateFrom(master); + logger.info("Automatic replication has been started."); + } catch (ClassNotFoundException | IOException | InterruptedException e) { + e.printStackTrace(); + } + } + }.start(); } } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java index b0a1eae266d..f41472a96cf 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -3,6 +3,8 @@ package com.sap.sse.replication.impl; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @@ -14,12 +16,14 @@ import com.sap.sse.replication.Replicable; /** * Uses an OSGi {@link ServiceTracker} to track and follow the set of {@link Replicable} objects registered with * the OSGi service registry under that interface and uses the information and the events from the tracker to - * prepare the responses to the {@link #getReplicable(String)} and {@link #getReplicables()} method calls. + * prepare the responses to the {@link #getReplicable(String, boolean)} and {@link #getReplicables()} method calls. * * @author Axel Uhl (D043530) * */ public class OSGiReplicableTracker extends AbstractReplicablesProvider { + private static final Logger logger = Logger.getLogger(OSGiReplicableTracker.class.getName()); + private final ServiceTracker, Replicable> serviceTracker; private final Map>> serviceReferenceByIdAsString; private final Map>, String> idAsStringByServiceReference; @@ -60,8 +64,33 @@ public class OSGiReplicableTracker extends AbstractReplicablesProvider { } @Override - public Replicable getReplicable(String replicableIdAsString) { + public Replicable getReplicable(final String replicableIdAsString, boolean wait) { final ServiceReference> serviceReference = serviceReferenceByIdAsString.get(replicableIdAsString); - return serviceReference == null ? null : bundleContext.getService(serviceReference); + final Replicable preResult = serviceReference == null ? null : bundleContext.getService(serviceReference); + final Replicable result; + if (preResult == null && wait) { + final Replicable foundReplicable[] = new Replicable[1]; + Object monitor = new Object(); + // FIXME synchronize so that we won't miss a relevant service registration + addReplicableLifeCycleListener((AddOnlyReplicableLifeCycleListener) replicable -> { + if (replicable.getId().equals(replicableIdAsString)) { + foundReplicable[0] = replicable; + } + }); + synchronized (monitor) { + while (foundReplicable[0] == null) { + try { + monitor.wait(); + } catch (InterruptedException e) { + logger.log(Level.WARNING, "Exception while waiting for replicable "+replicableIdAsString+ + ". Continuing to wait...", e); + } + } + } + result = foundReplicable[0]; + } else { + result = preResult; + } + return result; } } \ No newline at end of file diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index 19b4a9d377c..003a4e57ee3 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -100,7 +100,7 @@ public class ReplicationServlet extends AbstractHttpServlet { "HTTP output for initial load for " + req.getRemoteHost()); final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(countingOutputStream); for (String replicableIdAsString : replicableIdsAsStrings) { - Replicable replicable = replicablesProvider.getReplicable(replicableIdAsString); + Replicable replicable = replicablesProvider.getReplicable(replicableIdAsString, /* wait */ false); if (replicable == null) { break; // causing an error on the replica which is expecting the replica's initial load } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index cf9fcf512b6..907cb94fc85 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -161,7 +161,7 @@ public class Replicator implements Runnable { // of all required bundles/packages can be deserialized at least final GZIPInputStream uncompressedInputStream = new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage)); String replicableIdAsString = new DataInputStream(uncompressedInputStream).readUTF(); - Replicable replicable = replicableProvider.getReplicable(replicableIdAsString); + Replicable replicable = replicableProvider.getReplicable(replicableIdAsString, /* wait */ false); if (replicable != null) { Thread.currentThread().setContextClassLoader(replicable.getClass().getClassLoader()); ObjectInputStream ois = new ObjectInputStream(uncompressedInputStream); // no special stream required; only reading a generic byte[] @@ -267,7 +267,7 @@ public class Replicator implements Runnable { private synchronized > void apply(final OperationWithResult operation, String replicableIdAsString) { @SuppressWarnings("unchecked") - Replicable replicable = (Replicable) replicableProvider.getReplicable(replicableIdAsString); + Replicable replicable = (Replicable) replicableProvider.getReplicable(replicableIdAsString, /* wait */ false); apply(operation, replicable); } From 9df49648f5b5878091afbc0fa067df7fe5225da5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 16 Nov 2014 23:21:34 +0100 Subject: [PATCH 080/113] addressing bug2409 comment #9 by changing semantics of -Dreplicate.on.start from boolean to list of fully-qualified Replicable class names --- .../src/com/sap/sse/replication/impl/Activator.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java index 6a1b3498f37..dec574bbdc7 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java @@ -35,8 +35,9 @@ import com.sap.sse.replication.ReplicationService; * Properties to control replication when replication shall automatically be started, replicating from a specific master * server: *
    - *
  • replicate.on.start: use true to start replication from a specific master when this - * instance is started; the following parameters are only evaluated if this property is true.
  • + *
  • replicate.on.start: use a comma-separated list of fully-qualified class names of the + * {@link Replicable} objects you want to replicate from a master server to start replication from a specific master when this + * instance is started; the following parameters are only evaluated if this property is present and not empty.
  • *
  • replicate.master.servlet.host: the host name to use for the HTTP connection through which the * request to register this replica with the master is sent to the master and the queue name for receiving the initial * load is requested
  • @@ -123,9 +124,8 @@ public class Activator implements BundleActivator { private void checkIfAutomaticReplicationShouldStart(ReplicationService serverReplicationMasterService, String masterExchangeName, final ReplicablesProvider replicablesProvider) { String replicateOnStart = System.getProperty(PROPERTY_NAME_REPLICATE_ON_START); - if (Boolean.valueOf(replicateOnStart)) { - // TODO obtain list of Replicable objects to wait for from system property - final String[] replicableIdsAsStrings = { "com.sap.sailing.server.impl.RacingEventServiceImpl" }; + if (replicateOnStart != null && !replicateOnStart.isEmpty()) { + final String[] replicableIdsAsStrings = replicateOnStart.split(","); new Thread("ServiceTracker waiting for Replicables "+Arrays.toString(replicableIdsAsStrings)) { @Override public void run() { From 28e572a94cab0e5dfb71e8d00e52ac609690f3c5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 17 Nov 2014 00:12:36 +0100 Subject: [PATCH 081/113] fixed synchronization with waiting for Replicable instances --- .../src/com/sap/sse/replication/impl/Activator.java | 1 + .../com/sap/sse/replication/impl/OSGiReplicableTracker.java | 3 +++ .../src/com/sap/sse/security/SessionCacheManager.java | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java index dec574bbdc7..bf4d2ba4674 100644 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java @@ -147,6 +147,7 @@ public class Activator implements BundleActivator { System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_HOST), Integer.valueOf(System.getProperty(PROPERTY_NAME_REPLICATE_MASTER_SERVLET_PORT).trim())); try { + // TODO pass on the replicables to wait for serverReplicationMasterService.startToReplicateFrom(master); logger.info("Automatic replication has been started."); } catch (ClassNotFoundException | IOException | InterruptedException e) { diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java index f41472a96cf..2177266506d 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -75,6 +75,9 @@ public class OSGiReplicableTracker extends AbstractReplicablesProvider { addReplicableLifeCycleListener((AddOnlyReplicableLifeCycleListener) replicable -> { if (replicable.getId().equals(replicableIdAsString)) { foundReplicable[0] = replicable; + synchronized (monitor) { + monitor.notifyAll(); + } } }); synchronized (monitor) { diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/SessionCacheManager.java b/java/com.sap.sse.security/src/com/sap/sse/security/SessionCacheManager.java index 3463017b110..824965d51f1 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/SessionCacheManager.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/SessionCacheManager.java @@ -29,7 +29,7 @@ public class SessionCacheManager implements CacheManager { @Override public Cache getCache(String name) throws CacheException { final SecurityService securityService = Activator.getSecurityService(); - if (securityService == null){ + if (securityService == null) { return null; } return securityService.getCacheManager().getCache(name); From 310090916d2a046f4759ae91054983c786c837bf Mon Sep 17 00:00:00 2001 From: EC2 Server Date: Mon, 17 Nov 2014 09:57:01 +0000 Subject: [PATCH 082/113] adjusted sailing script to changed semantics of the REPLICATE_ON_START environment variable --- configuration/sailing | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/configuration/sailing b/configuration/sailing index f2a0fa1a8c1..b2b605821d1 100755 --- a/configuration/sailing +++ b/configuration/sailing @@ -47,9 +47,8 @@ stop_servers() { # launch_httpd(server_name, port, event_id) launch_httpd() { - echo $REPLICATE_ON_START | grep -iq "True" - if [ "$?" = "0" ]; then - echo "REPLICATE_ON_START is True" + if [ "$REPLICATE_ON_START" != "" ]; then + echo "REPLICATE_ON_START is $REPLICATE_ON_START. Will try to launch httpd so this replica can work with an ELB easily." if [ -x /etc/init.d/httpd ]; then server_name="`echo $SERVER_NAME | tr [A-Z] [a-z]`" echo "Use Event $server_name.sapsailing.com \"$EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>/etc/httpd/conf.d/001-events.conf From a8a214558b7f0e6a92cb0ac9dc7be9fb3a9f1111 Mon Sep 17 00:00:00 2001 From: fmittag Date: Mon, 17 Nov 2014 13:31:32 +0100 Subject: [PATCH 083/113] fixed url issue with adding a history entry for tab navigation --- .../sap/sailing/gwt/home/client/app/PlaceNavigation.java | 8 ++++++++ .../place/event/regattaanalytics/RegattaAnalytics.java | 2 +- .../place/event/seriesanalytics/EventSeriesAnalytics.java | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java index 507720859b8..c8c6e0f6731 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/PlaceNavigation.java @@ -33,6 +33,14 @@ public class PlaceNavigation { return buildPlaceUrl(); } + public String getHistoryUrl() { + String placeUrl = buildPlaceUrl(); + if(placeUrl.startsWith("#")) { + placeUrl = placeUrl.substring(1, placeUrl.length()); + } + return placeUrl; + } + public Place getPlace() { return destinationPlace; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java index 4539a3f897c..f80497147bf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalytics.java @@ -199,7 +199,7 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { // don't use the placecontroller for navigation here as we want to avoid a page reload - History.newItem(placeNavigation.getTargetUrl(), false); + History.newItem(placeNavigation.getHistoryUrl(), false); e.preventDefault(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java index 7a4d06179f4..3d48af5335a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalytics.java @@ -235,7 +235,7 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { // don't use the placecontroller for navigation here as we want to avoid a page reload - History.newItem(placeNavigation.getTargetUrl(), false); + History.newItem(placeNavigation.getHistoryUrl(), false); e.preventDefault(); } } From ffea760069e8a78ec42893397503df40e37bb693 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 17 Nov 2014 14:58:17 +0100 Subject: [PATCH 084/113] avoid premature replication listener registration when no replica is currently registered --- .../impl/ReplicationServiceImpl.java | 37 ++++++++++++------- java/target/env.sh | 6 ++- wiki/amazon-ec2-create-new-app-instance.md | 2 +- wiki/amazon-ec2.md | 29 ++++++--------- 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 76901a77c91..878031f1603 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -200,7 +200,12 @@ public class ReplicationServiceImpl implements ReplicationService { private class LifeCycleListener implements ReplicableLifeCycleListener { @Override public void replicableAdded(Replicable replicable) { - addNewOperationExecutionListener(replicable); + // add a replication listener to the new replicable only if there are replicas currently registered + synchronized (replicationInstancesManager) { + if (replicationInstancesManager.hasReplicas()) { + addNewOperationExecutionListener(replicable); + } + } } @Override @@ -285,15 +290,17 @@ public class ReplicationServiceImpl implements ReplicationService { @Override public void registerReplica(ReplicaDescriptor replica) throws IOException { - if (!replicationInstancesManager.hasReplicas()) { - addAsListenerToReplicables(); - synchronized (this) { - if (masterChannel == null) { - masterChannel = createMasterChannelAndDeclareFanoutExchange(); + synchronized (replicationInstancesManager) { + if (!replicationInstancesManager.hasReplicas()) { + addAsListenerToReplicables(); + synchronized (this) { + if (masterChannel == null) { + masterChannel = createMasterChannelAndDeclareFanoutExchange(); + } } } + replicationInstancesManager.registerReplica(replica); } - replicationInstancesManager.registerReplica(replica); logger.info("Registered replica " + replica); } @@ -311,13 +318,15 @@ public class ReplicationServiceImpl implements ReplicationService { @Override public void unregisterReplica(ReplicaDescriptor replica) throws IOException { logger.info("Unregistering replica " + replica); - replicationInstancesManager.unregisterReplica(replica); - if (!replicationInstancesManager.hasReplicas()) { - removeAsListenerFromReplicables(); - synchronized (this) { - if (masterChannel != null) { - masterChannel.close(); - masterChannel = null; + synchronized (replicationInstancesManager) { + replicationInstancesManager.unregisterReplica(replica); + if (!replicationInstancesManager.hasReplicas()) { + removeAsListenerFromReplicables(); + synchronized (this) { + if (masterChannel != null) { + masterChannel.close(); + masterChannel = null; + } } } } diff --git a/java/target/env.sh b/java/target/env.sh index ab715aff099..f82a6eb3fe0 100644 --- a/java/target/env.sh +++ b/java/target/env.sh @@ -27,10 +27,12 @@ MONGODB_PORT=27017 MONGODB_NAME=winddb EXPEDITION_PORT=2010 -# Start replication upon startup? If you activate this make sure to +# To start replication upon startup provide the fully-qualified names of the Replicable service classes +# for which to trigger replication. If you activate this make sure to # set the REPLICATE_MASTER_EXCHANGE_NAME variable to the # same channel the master is using in its REPLICATION_CHANNEL variable -REPLICATE_ON_START=False + +# REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl # Host where the master Java instance is running # Make sure firewall configurations allow access diff --git a/wiki/amazon-ec2-create-new-app-instance.md b/wiki/amazon-ec2-create-new-app-instance.md index 079b39e0d04..856b152806e 100644 --- a/wiki/amazon-ec2-create-new-app-instance.md +++ b/wiki/amazon-ec2-create-new-app-instance.md @@ -22,7 +22,7 @@ Leave Kernel and RAM disk to Default. Then put the configuration for this server
     INSTALL_FROM_RELEASE=name-of-release
     USE_ENVIRONMENT=live-server
    -MONGODB_PORT=10201
    +MONGODB_PORT=10202
     MONGODB_NAME=myspecificevent
     REPLICATION_CHANNEL=myspecificevent
     SERVER_NAME=MYSPECIFICEVENT
    diff --git a/wiki/amazon-ec2.md b/wiki/amazon-ec2.md
    index 79419097317..bf58e9890cf 100644
    --- a/wiki/amazon-ec2.md
    +++ b/wiki/amazon-ec2.md
    @@ -31,31 +31,21 @@ SERVER_STARTUP_NOTIFY=simon.marcel.pamies@sap.com
     
     Note that when you select to install an environment using the `USE_ENVIRONMENT` variable, any other variable that you specify in the user data, such as the `MONGODB_NAME` or `REPLICATION_CHANNEL` properties in the example above, these additional user data properties will override whatever comes from the environment specified by the `USE_ENVIRONMENT` parameter.
     
    -- To build from git, install and start, set the following in the instance's user data, adjusting the MONGODB_PORT and memory settings according to your needs:
    +- To build from git, install and start, set the following in the instance's user data, adjusting the branch name (`BUILD_FROM`), the `myspecificevent` naming and memory settings according to your needs:
     
     BUILD_BEFORE_START=True
     BUILD_FROM=master
     RUN_TESTS=False
     COMPILE_GWT=True
    -BUILD_COMPLETE_NOTIFY=simon.marcel.pamies@sap.com
    +BUILD_COMPLETE_NOTIFY=you@email.com
     SERVER_STARTUP_NOTIFY=
     SERVER_NAME=MYSPECIFICEVENT
     MEMORY=2048m
     REPLICATION_HOST=172.31.25.253
     REPLICATION_CHANNEL=myspecificevent
    -TELNET_PORT=14888
    -SERVER_PORT=8888
     MONGODB_HOST=172.31.25.253
     MONGODB_PORT=10202
     MONGODB_NAME=myspecificevent
    -EXPEDITION_PORT=2010
    -REPLICATE_ON_START=False
    -REPLICATE_MASTER_SERVLET_HOST=
    -REPLICATE_MASTER_SERVLET_PORT=
    -REPLICATE_MASTER_QUEUE_HOST=
    -REPLICATE_MASTER_QUEUE_PORT=
    -INSTALL_FROM_RELEASE=
    -USE_ENVIRONMENT=
     
    #### Receiving wind from Expedition @@ -69,18 +59,23 @@ USE_ENVIRONMENT=
     INSTALL_FROM_RELEASE=(name-of-release)
     USE_ENVIRONMENT=live-master-server
    -BUILD_COMPLETE_NOTIFY=simon.marcel.pamies@sap.com
    -SERVER_STARTUP_NOTIFY=simon.marcel.pamies@sap.com
    +SERVER_NAME=MYSPECIFICEVENT
    +REPLICATION_CHANNEL=myspecificevent
    +MONGODB_NAME=myspecificevent
    +SERVER_STARTUP_NOTIFY=you@email.com
     
    -- After your master server is ready, note the internal IP and configure your replica instances. Make sure to use the preconfigured environment from http://releases.sapsailing.com/environments/live-replica-server. Then absolutely make sure to add the line "REPLICATE_MASTER_SERVLET_HOST" to the user-data! +- After your master server is ready, note the internal IP and configure your replica instances. Make sure to use the preconfigured environment from http://releases.sapsailing.com/environments/live-replica-server. Then absolutely make sure to add the line "REPLICATE_MASTER_SERVLET_HOST" to the user-data and adjust the `myspecificevent` master exchange name to the `REPLICATION_CHANNEL` setting you used for the master configuration.
     INSTALL_FROM_RELEASE=(name-of-release)
     USE_ENVIRONMENT=live-replica-server
     REPLICATE_MASTER_SERVLET_HOST=(IP of your master server)
    -SERVER_STARTUP_NOTIFY=simon.marcel.pamies@sap.com
    -BUILD_COMPLETE_NOTIFY=
    +REPLICATE_MASTER_EXCHANGE_NAME=myspecificevent
    +SERVER_NAME=MYSPECIFICEVENT
    +MONGODB_NAME=myspecificevent-replica
    +EVENT_ID=<some-uuid-of-an-event-you-want-to-feature>
    +SERVER_STARTUP_NOTIFY=you@email.com
     
    ## Costs per month From b062a2cb1a55e18663f46a1293deed98f7d99cdb Mon Sep 17 00:00:00 2001 From: fmittag Date: Mon, 17 Nov 2014 16:46:17 +0100 Subject: [PATCH 085/113] implemented tab navigation and history management for solutions page --- .../home/client/app/HomePlacesNavigator.java | 5 +- .../SmartphoneApplicationClientFactory.java | 16 ++-- ...letAndDesktopApplicationClientFactory.java | 16 ++-- .../client/place/events/EventsActivity.java | 2 +- .../place/events/EventsClientFactory.java | 2 +- .../place/solutions/SolutionsActivity.java | 9 +- .../solutions/SolutionsClientFactory.java | 3 +- .../place/solutions/SolutionsPlace.java | 31 ++++++- .../TabletAndDesktopSolutionsView.java | 8 +- .../sponsoring/SponsoringClientFactory.java | 2 +- .../gwt/home/client/shared/header/Header.java | 3 +- .../shared/mainsponsors/MainSponsors.java | 3 +- .../client/shared/solutions/Solutions.java | 92 +++++++++++++++++-- .../client/shared/solutions/Solutions.ui.xml | 10 +- 14 files changed, 152 insertions(+), 50 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index 2ca15d7bd6d..ef039f086d2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java @@ -12,6 +12,7 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.series.SeriesPlace; import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; @@ -29,8 +30,8 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { return createGlobalPlaceNavigation(new EventsPlace(), new EventsPlace.Tokenizer()); } - public PlaceNavigation getSolutionsNavigation() { - return createGlobalPlaceNavigation(new SolutionsPlace(), new SolutionsPlace.Tokenizer()); + public PlaceNavigation getSolutionsNavigation(SolutionsNavigationTabs navigationTab) { + return createGlobalPlaceNavigation(new SolutionsPlace(navigationTab), new SolutionsPlace.Tokenizer()); } public PlaceNavigation getSponsoringNavigation() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 990d8c4a794..19a909cc1c2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -11,21 +11,19 @@ import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; -import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; -import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; +import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; -import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; +import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivity; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; @@ -59,7 +57,7 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien } @Override - public EventsView createEventsView(EventsActivity activity) { + public EventsView createEventsView() { return new TabletAndDesktopEventsView(getHomePlacesNavigator()); } @@ -74,13 +72,13 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien } @Override - public SponsoringView createSponsoringView(SponsoringActivity activity) { + public SponsoringView createSponsoringView() { return new TabletAndDesktopSponsoringView(); } @Override - public SolutionsView createSolutionsView(SolutionsActivity activity) { - return new TabletAndDesktopSolutionsView(); + public SolutionsView createSolutionsView(SolutionsNavigationTabs navigationTab) { + return new TabletAndDesktopSolutionsView(navigationTab, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index 89d44cf78ae..fe558f5f35f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -11,21 +11,19 @@ import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; -import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaAnalyticsView; -import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace.RegattaNavigationTabs; +import com.sap.sailing.gwt.home.client.place.regatta.TabletAndDesktopRegattaView; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; -import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivity; +import com.sap.sailing.gwt.home.client.place.series.TabletAndDesktopSeriesView; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivity; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; @@ -64,7 +62,7 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio } @Override - public EventsView createEventsView(EventsActivity activity) { + public EventsView createEventsView() { return new TabletAndDesktopEventsView(getHomePlacesNavigator()); } @@ -74,13 +72,13 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio } @Override - public SponsoringView createSponsoringView(SponsoringActivity activity) { + public SponsoringView createSponsoringView() { return new TabletAndDesktopSponsoringView(); } @Override - public SolutionsView createSolutionsView(SolutionsActivity activity) { - return new TabletAndDesktopSolutionsView(); + public SolutionsView createSolutionsView(SolutionsNavigationTabs navigationTab) { + return new TabletAndDesktopSolutionsView(navigationTab, getHomePlacesNavigator()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java index 32cafbc36e7..158283d5195 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java @@ -28,7 +28,7 @@ public class EventsActivity extends AbstractActivity { clientFactory.getSailingService().getPublicEventsOfAllSailingServers(new AsyncCallback>() { @Override public void onSuccess(List events) { - final EventsView eventsView = clientFactory.createEventsView(EventsActivity.this); + final EventsView eventsView = clientFactory.createEventsView(); panel.setWidget(eventsView.asWidget()); Window.setTitle(place.getTitle()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java index 83bb3827b25..5689cbfa8db 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java @@ -3,5 +3,5 @@ package com.sap.sailing.gwt.home.client.place.events; import com.sap.sailing.gwt.ui.client.SailingClientFactory; public interface EventsClientFactory extends SailingClientFactory { - EventsView createEventsView(EventsActivity activity); + EventsView createEventsView(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java index bb67de103d1..6368e67391d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java @@ -7,13 +7,18 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.common.client.i18n.TextMessages; public class SolutionsActivity extends AbstractActivity { - + private final SolutionsPlace solutionsPlace; + private final SolutionsClientFactory clientFactory; + public SolutionsActivity(SolutionsPlace place, SolutionsClientFactory clientFactory) { + this.solutionsPlace = place; + this.clientFactory = clientFactory; } @Override public void start(AcceptsOneWidget panel, EventBus eventBus) { - panel.setWidget(new TabletAndDesktopSolutionsView()); + SolutionsView solutionsView = clientFactory.createSolutionsView(solutionsPlace.getNavigationTab()); + panel.setWidget(solutionsView.asWidget()); Window.setTitle(TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.solutions()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java index f1d6ba516e7..58ca73efb52 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java @@ -1,7 +1,8 @@ package com.sap.sailing.gwt.home.client.place.solutions; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingClientFactory; public interface SolutionsClientFactory extends SailingClientFactory { - SolutionsView createSolutionsView(SolutionsActivity activity); + SolutionsView createSolutionsView(SolutionsNavigationTabs navigationTab); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java index 692655003dc..5fdf93d9361 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java @@ -1,18 +1,39 @@ package com.sap.sailing.gwt.home.client.place.solutions; -import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; +import com.sap.sailing.gwt.common.client.AbstractBasePlace; + +public class SolutionsPlace extends AbstractBasePlace { + + public enum SolutionsNavigationTabs { SailingAnalytics, RaceCommiteeApp, PostRaceAnalytics, TrainingDiary, SailingSimulator }; + private final SolutionsNavigationTabs navigationTab; + private final static String PARAM_NAVIGATION_TAB = "navigationTab"; + + public SolutionsPlace(String url) { + super(url); + String paramNavTab = getParameter(PARAM_NAVIGATION_TAB); + navigationTab = paramNavTab != null ? SolutionsNavigationTabs.valueOf(paramNavTab) : null; + } + + public SolutionsPlace(SolutionsNavigationTabs navigationTab) { + super(PARAM_NAVIGATION_TAB, navigationTab.name()); + this.navigationTab = navigationTab; + } + + public SolutionsNavigationTabs getNavigationTab() { + return navigationTab; + } -public class SolutionsPlace extends Place { public static class Tokenizer implements PlaceTokenizer { @Override public String getToken(SolutionsPlace place) { - return null; + return place.getParametersAsToken(); } @Override - public SolutionsPlace getPlace(String token) { - return new SolutionsPlace(); + public SolutionsPlace getPlace(String url) { + return new SolutionsPlace(url); } } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java index e43ca8d3d9a..2e5261d25a8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java @@ -5,18 +5,22 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.shared.solutions.Solutions; public class TabletAndDesktopSolutionsView extends Composite implements SolutionsView { private static SolutionsPageViewUiBinder uiBinder = GWT.create(SolutionsPageViewUiBinder.class); - @UiField Solutions solutions; + @UiField(provided=true) Solutions solutions; interface SolutionsPageViewUiBinder extends UiBinder { } - public TabletAndDesktopSolutionsView() { + public TabletAndDesktopSolutionsView(SolutionsNavigationTabs navigationTab, HomePlacesNavigator placesNavigator) { super(); + + solutions = new Solutions(navigationTab, placesNavigator); initWidget(uiBinder.createAndBindUi(this)); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java index 3e203734260..304e89dd044 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java @@ -3,5 +3,5 @@ package com.sap.sailing.gwt.home.client.place.sponsoring; import com.sap.sailing.gwt.ui.client.SailingClientFactory; public interface SponsoringClientFactory extends SailingClientFactory { - SponsoringView createSponsoringView(SponsoringActivity activity); + SponsoringView createSponsoringView(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java index bf0b3f2f6bb..0469a5122b0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java @@ -27,6 +27,7 @@ import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.start.StartPlace; public class Header extends Composite { @@ -64,7 +65,7 @@ public class Header extends Composite { homeNavigation = navigator.getHomeNavigation(); eventsNavigation = navigator.getEventsNavigation(); - solutionsNavigation = navigator.getSolutionsNavigation(); + solutionsNavigation = navigator.getSolutionsNavigation(SolutionsNavigationTabs.SailingAnalytics); startPageLink.setHref(homeNavigation.getTargetUrl()); eventsPageLink.setHref(eventsNavigation.getTargetUrl()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java index e6762814700..c34a29f5fdc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java @@ -11,6 +11,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; import com.sap.sailing.gwt.home.client.app.PlaceNavigation; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; public class MainSponsors extends Composite { @@ -34,7 +35,7 @@ public class MainSponsors extends Composite { MainSponsorsResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); - solutionsNavigation = navigator.getSolutionsNavigation(); + solutionsNavigation = navigator.getSolutionsNavigation(SolutionsNavigationTabs.SailingAnalytics); sponsoringNavigation = navigator.getSponsoringNavigation(); solutionsPageLink.setHref(solutionsNavigation.getTargetUrl()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java index f032f05bf97..038a4ab4282 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java @@ -4,14 +4,28 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.impl.HyperlinkImpl; +import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator; +import com.sap.sailing.gwt.home.client.app.PlaceNavigation; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; public class Solutions extends Composite { + interface SolutionsUiBinder extends UiBinder { + } + + private static SolutionsUiBinder uiBinder = GWT.create(SolutionsUiBinder.class); + + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); @UiField Anchor sailingAnalyticsAnchor; @UiField Anchor raceAnchor; @@ -25,41 +39,99 @@ public class Solutions extends Composite { @UiField DivElement trainingDiaryDiv; @UiField DivElement simulatorDiv; - interface SolutionsUiBinder extends UiBinder { - } + private final PlaceNavigation sailingAnalyticsNavigation; + private final PlaceNavigation raceCommitteeAppNavigation; + private final PlaceNavigation postRaceAnalyticsNavigation; + private final PlaceNavigation trainingDiaryNavigation; + private final PlaceNavigation sailingSimulatorNavigation; - private static SolutionsUiBinder uiBinder = GWT.create(SolutionsUiBinder.class); - - public Solutions() { + private final SolutionsNavigationTabs navigationTab; + public Solutions(SolutionsNavigationTabs navigationTab, HomePlacesNavigator placesNavigator) { + this.navigationTab = navigationTab; + SolutionsResources.INSTANCE.css().ensureInjected(); StyleInjector.injectAtEnd("@media (min-width: 25em) { "+SolutionsResources.INSTANCE.mediumCss().getText()+"}"); StyleInjector.injectAtEnd("@media (min-width: 50em) { "+SolutionsResources.INSTANCE.largeCss().getText()+"}"); initWidget(uiBinder.createAndBindUi(this)); + + sailingAnalyticsNavigation = placesNavigator.getSolutionsNavigation(SolutionsNavigationTabs.SailingAnalytics); + raceCommitteeAppNavigation = placesNavigator.getSolutionsNavigation(SolutionsNavigationTabs.RaceCommiteeApp); + postRaceAnalyticsNavigation = placesNavigator.getSolutionsNavigation(SolutionsNavigationTabs.PostRaceAnalytics); + trainingDiaryNavigation = placesNavigator.getSolutionsNavigation(SolutionsNavigationTabs.TrainingDiary); + sailingSimulatorNavigation = placesNavigator.getSolutionsNavigation(SolutionsNavigationTabs.SailingSimulator); + + sailingAnalyticsAnchor.setHref(sailingAnalyticsNavigation.getTargetUrl()); + raceAnchor.setHref(raceCommitteeAppNavigation.getTargetUrl()); + postRaceAnchor.setHref(postRaceAnalyticsNavigation.getTargetUrl()); + trainingDiaryAnchor.setHref(trainingDiaryNavigation.getTargetUrl()); + simulatorAnchor.setHref(sailingSimulatorNavigation.getTargetUrl()); + } + + @Override + protected void onAttach() { + super.onAttach(); + if(navigationTab != SolutionsNavigationTabs.SailingAnalytics) { + scrollToView(navigationTab); + } } @UiHandler("sailingAnalyticsAnchor") public void scrollToSailingAnalytics(ClickEvent e) { - sailingAnalyticsDiv.scrollIntoView(); + scrollToView(SolutionsNavigationTabs.SailingAnalytics); + handleClickEvent(e, sailingAnalyticsNavigation); } @UiHandler("raceAnchor") public void scrollToRace(ClickEvent e) { - raceDiv.scrollIntoView(); + scrollToView(SolutionsNavigationTabs.RaceCommiteeApp); + handleClickEvent(e, raceCommitteeAppNavigation); } + @UiHandler("postRaceAnchor") public void scrollToPostRace(ClickEvent e) { - postRaceDiv.scrollIntoView(); + scrollToView(SolutionsNavigationTabs.PostRaceAnalytics); + handleClickEvent(e, postRaceAnalyticsNavigation); } + @UiHandler("trainingDiaryAnchor") public void scrollToTrainingDiary(ClickEvent e) { - trainingDiaryDiv.scrollIntoView(); + scrollToView(SolutionsNavigationTabs.TrainingDiary); + handleClickEvent(e, trainingDiaryNavigation); } @UiHandler("simulatorAnchor") public void scrollToSimulator(ClickEvent e) { - simulatorDiv.scrollIntoView(); + scrollToView(SolutionsNavigationTabs.SailingSimulator); + handleClickEvent(e, sailingSimulatorNavigation); } + private void scrollToView(SolutionsNavigationTabs navigationTab) { + switch (navigationTab) { + case SailingAnalytics: + sailingAnalyticsDiv.scrollIntoView(); + break; + case RaceCommiteeApp: + raceDiv.scrollIntoView(); + break; + case PostRaceAnalytics: + postRaceDiv.scrollIntoView(); + break; + case TrainingDiary: + trainingDiaryDiv.scrollIntoView(); + break; + case SailingSimulator: + simulatorDiv.scrollIntoView(); + break; + } + } + + private void handleClickEvent(ClickEvent e, PlaceNavigation placeNavigation) { + if (HYPERLINK_IMPL.handleAsClick((Event) e.getNativeEvent())) { + // don't use the placecontroller for navigation here as we want to avoid a page reload + History.newItem(placeNavigation.getHistoryUrl(), false); + e.preventDefault(); + } + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.ui.xml index bafa0d2012d..c9a9c43eef0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.ui.xml @@ -12,11 +12,11 @@
    - - - - - + + + + +
    From 90764106a21aa083c6b5985ca584babb83cde920 Mon Sep 17 00:00:00 2001 From: fmittag Date: Mon, 17 Nov 2014 17:09:11 +0100 Subject: [PATCH 086/113] fixed initial page positioning for solutions page --- .../home/client/shared/solutions/Solutions.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java index 038a4ab4282..8dd73bc6900 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java @@ -1,13 +1,14 @@ package com.sap.sailing.gwt.home.client.shared.solutions; import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Anchor; @@ -70,11 +71,14 @@ public class Solutions extends Composite { } @Override - protected void onAttach() { - super.onAttach(); - if(navigationTab != SolutionsNavigationTabs.SailingAnalytics) { - scrollToView(navigationTab); - } + protected void onLoad() { + Scheduler.get().scheduleDeferred(new Command() { + public void execute() { + if (navigationTab != SolutionsNavigationTabs.SailingAnalytics) { + scrollToView(navigationTab); + } + } + }); } @UiHandler("sailingAnalyticsAnchor") From 5e715a6bfd24827fe6a76f3fa1ddcf8aef2bb2bc Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 17 Nov 2014 18:08:52 +0100 Subject: [PATCH 087/113] described the replication / ELB case including Route53 DNS configuration in wiki --- wiki/amazon-ec2.md | 30 +++++++++++++++++++++++++++++- wiki/images/amazon/Route53_1.png | Bin 0 -> 41136 bytes wiki/images/amazon/Route53_2.png | Bin 0 -> 13300 bytes wiki/images/amazon/Route53_3.png | Bin 0 -> 47423 bytes wiki/images/amazon/Route53_4.png | Bin 0 -> 55381 bytes wiki/images/amazon/Route53_5.png | Bin 0 -> 34243 bytes 6 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 wiki/images/amazon/Route53_1.png create mode 100755 wiki/images/amazon/Route53_2.png create mode 100755 wiki/images/amazon/Route53_3.png create mode 100755 wiki/images/amazon/Route53_4.png create mode 100755 wiki/images/amazon/Route53_5.png diff --git a/wiki/amazon-ec2.md b/wiki/amazon-ec2.md index bf58e9890cf..af24b368665 100644 --- a/wiki/amazon-ec2.md +++ b/wiki/amazon-ec2.md @@ -235,7 +235,7 @@ ssh -i .ssh/SailingUser.pem sailing@ec2-54-246-247-194.eu-west-1.compute.amazona If you want to connect your instance to a subdomain then log onto the main webserver with the Administrator key as root, open the file `/etc/httpd/conf.d/001-events.conf` and put something like this there. As you can see you have to specify the IP address and the port the java server is running on. Make sure to always use the internal IP.
    -Use Spectator idm.sapsailing.com "505 IDM 2013" 172.31.22.12 8888
    +Use Event idm.sapsailing.com "<uuid-of-event-object>" 172.31.22.12 8888
     
    ### Testing code on a server @@ -258,6 +258,10 @@ The main concept behind ELB is that there is one instance that you configure in A closer look reveals that an ELB instance consists itself of many other invisible instances. These are behind a DNS round robin configuration that redirects each incoming request to one of these instances. These invisible instances then decide upon the rules you've created how and where to distribute this request to one of the associated instances. +In a live event scenario, the SAP Sailing Analytics are largely bandwidth bound. Adding more users that watch races live doesn't add much CPU load, but it adds traffic linearly. Therefore, as the number of concurrent users grows, a single instance can quickly max out its bandwidth which for usual instances peaks at around 100Mbit/s. It is then essential that an ELB can offload the traffic to multiple instances which are replicas of a common master in our case. + +To still get the usual logging and URL re-writing features, replicas need to run their local Apache server with a bit of configuration. Luckily, most of the grunt work is done for you automatically. You simply need to tell the replicas in their instance details to start replicating automatically, provide an `EVENT_ID` and set the `SERVER_NAME` variable properly. The Apache configuration on the replica will then automatically be adjusted such that the lower-case version of $SERVER_NAME.sapsailing.com will re-direct users to the event page for the event with ID $EVENT_ID. + Here are the steps to create a load balanced setup: - Create a master instance holding all data (see http://wiki.sapsailing.com/wiki/amazon-ec2#Setting-up-Master-and-Replica) @@ -269,8 +273,32 @@ Here are the steps to create a load balanced setup: - Associate all your instances - Connect your domain with the IP of the load balancer. It could be a good idea to use an Elastic IP that always stays the same for the domain and associate it with your load balancer. That way you can also easily switch between a load balancer and a single instance setup. Again, remember not to let the RCApp devices point to the ELB domain as their updates could hit a replica which wouldn't know how to handle! +It is important to understand that it wouldn't help to let all traffic run through our central Apache httpd server which usually acts as a reverse proxy with comprehensive URL rewriting rules and macros. This would make the Apache server the bandwidth bottleneck. Instead, the event traffic needs to go straight to the ELB which requires the event DNS domain name to be mapped to the ELB's host name. You need to set this up in the "Route 53" DNS server which you find in the Amazon Services drop-down. + + + +Go to the "Hosted Zones" entry + + + +and select the `sapsailing.com.` row, + + + +then click on "Go to Record Sets." You will then see the record sets for the `sapsailing.com.` domain: + + + +Click on "Create Record Set" and fill in the subdomain name (`myspecificevent` in the example shown below) and as the value use the host name (A-record) of the ELB that you find in the ELB configuration. + + + Amazon ELB is designed to handle unlimited concurrent requests per second with “gradually increasing” load pattern (although it's initial capacity is described to reach 20k requests/secs). It is not designed to handle heavy sudden spike of load or flash traffic because of its internal structure where it needs to fire up more instances when load increases. ELB's can be pre-warmed though by writing to the AWS Support Team. +With this set-up, please keep in mind that administration of the sailing server instance always needs to happen through the master instance. A fat, red warning is displayed in the administration console of the replica instances that shall keep you from making administrative changes there. Change them on the master, and the changes will be replicated to the replicas. + +You can monitor the central RabbitMQ message queueing system at [http://54.246.250.138:15672/#/exchanges](http://54.246.250.138:15672/#/exchanges). Use `guest/guest` for username and password. You should find the exchange name you configured for you master there and will be able to see the queues bound to the exchange as well as the traffic running through the exchange. + ### Access MongoDB database To launch a local MongoDB instance on the default port, enter a command such as `mkdir /home/sailing/mongodb; /opt/mongodb-linux-x86_64-1.8.1/bin/mongod --dbpath /home/sailing/mongodb`. To make sure the process survives log-off, you may want to launch it in a tmux session. See above for how to create a tmux session. In an existing tmux session, a new window can be created using `Ctrl-a c`. diff --git a/wiki/images/amazon/Route53_1.png b/wiki/images/amazon/Route53_1.png new file mode 100755 index 0000000000000000000000000000000000000000..f973486d775aaab258b91a0f060604422c805443 GIT binary patch literal 41136 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 literal 0 HcmV?d00001 diff --git a/wiki/images/amazon/Route53_3.png b/wiki/images/amazon/Route53_3.png new file mode 100755 index 0000000000000000000000000000000000000000..801467bd8ecd61466f63aebd28c5da5e596ccf74 GIT binary patch literal 47423 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 Bw+8?K literal 0 HcmV?d00001 diff --git a/wiki/images/amazon/Route53_4.png b/wiki/images/amazon/Route53_4.png new file mode 100755 index 0000000000000000000000000000000000000000..283c83c455c9abd96f92ace8848e45ad489e9e0f GIT binary patch literal 55381 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 literal 0 HcmV?d00001 diff --git a/wiki/images/amazon/Route53_5.png b/wiki/images/amazon/Route53_5.png new file mode 100755 index 0000000000000000000000000000000000000000..b89b9d9295a0629d972b75737db62c84861caae1 GIT binary patch literal 34243 zcmZU)19T-p+cg^7wr!h}i9NBCiEVRY+s4GUZQHgzvF^$HegA*oyY4!x52{ahS65fn zv!A_pg(=91!^7af009BPOG^Cw1q1|~3)se?AOI!N;4(dc4~XB=;y;1DzF)bW#R-5C zXgdiFM<5_r)b9-#C_NJkPzdQHDJu%O1&fTt3G~#kr~oL!H&<4760x%_ge0@fS#k&ff5s zFmsRt)6fAC6f1MLph*uf@U7QtmtM6yv!l+F^XpdsLu>c;dE50%(5x9736wt(R5P}y zs3tZ)&oy;-TAULOwCRXev6D1|>1KR{;DcrfUa^tdzly_8#k>3OIpN)8=y!0-#>6hZfwvi4+Q0q91F&G1?yWlvD&AQ` zeKb~+jvhnTw^ja>;V%lZSQT}#C;|n6@Py%d86VE@VxCQ@c4&Vh?Tq7lz_st@q!~9Y z5KGc+6Lbw-91yaG$Z9yO5w$qTS=@#Aiy1d6i#+05%{^D*o1)SJb}v#0Z?=XKT%T4y zP92jwxI-eZz1`2Nzjucus?=j|l|~XWjHT!y1-6TORVDk}^X1O*S8RWv@(HAkcDwt_ z0jbhtzkWdSEnb}Q`YFaqA$T|B6dzshx@NiD%+5XFy?&B-ByyDuGkt6>+g&>)#(dpy ztTUcW5{wn_adV}Q&dS>vnG`%ZM8=Tl?U2TpsdfmWtSebBIyX+O@A7j2eLl$3FsO1C z>RJ_dMHD~Q*nfC9unXovCN_0-v{^8BVbYC#x6+Pf2fI62CvT&5!1e-Voz*FV+=5Wd z@a5X|*^~Hl48h4&c)(nu(c)&t?zM+r;Wnd#hw!<}ImH*JKhXwQ)#7}sIf25*lQ=i* z&clGp4|Q%U`K@UUeuW2aT2l(Ul4)ht;!A^ZPsZG3D`SIS91nb>^1NSg$^Oy+Gd&kKfAOmu%C=qPnWwK3hcZ2q*@H?|GC$zF_jz=QT5lRgmaBk#U|g zts@pb1C#YDQj}q*}9J! z;nR_tR4!B4>MrArlseZngSxz&`Gd-mmPEUz@#~Lb1*t?Z9h~ zgqnmCJUcK~`?fyc5g+^H`&%$vt&eOs9oxOWvCvFJD?|l_{2mPoSeMBbE_a?C`uT

    Lx~ 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

    @>sN4INIl}%u!nPdOX3RY{ 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 J%7yd;{vTz{LbU(@ literal 0 HcmV?d00001 From 904feb7504324603f2a599c3b5cec73cd4d36f77 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 18 Nov 2014 13:44:11 +0100 Subject: [PATCH 088/113] removed UserManagement.html entry point file from gwt.ui project, also from build.properties --- .../UserManagement.html | 49 ------------------- java/com.sap.sailing.gwt.ui/build.properties | 1 - 2 files changed, 50 deletions(-) delete mode 100755 java/com.sap.sailing.gwt.ui/UserManagement.html diff --git a/java/com.sap.sailing.gwt.ui/UserManagement.html b/java/com.sap.sailing.gwt.ui/UserManagement.html deleted file mode 100755 index fdb5be94726..00000000000 --- a/java/com.sap.sailing.gwt.ui/UserManagement.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - SAP Sailing Analytics User Management - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/java/com.sap.sailing.gwt.ui/build.properties b/java/com.sap.sailing.gwt.ui/build.properties index 6c095726f5f..959a79f4698 100755 --- a/java/com.sap.sailing.gwt.ui/build.properties +++ b/java/com.sap.sailing.gwt.ui/build.properties @@ -10,7 +10,6 @@ bin.includes = META-INF/,\ LeaderboardNewHome.css,\ Leaderboard.html,\ LeaderboardEditing.html,\ - UserManagement.html,\ com.sap.sailing.gwt.ui.AdminConsole/,\ com.sap.sailing.gwt.ui.Leaderboard/,\ com.sap.sailing.gwt.ui.LeaderboardEditing/,\ From cd19c560dae92564b46d463266bfaa7e3dfec564 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 18 Nov 2014 13:55:28 +0100 Subject: [PATCH 089/113] fixed solutions navigation (this is always a local link) --- .../sailing/gwt/home/client/app/AbstractPlaceNavigator.java | 4 ++++ .../sap/sailing/gwt/home/client/app/HomePlacesNavigator.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index 355ee2a1d76..8370895d0cc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java @@ -25,6 +25,10 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { } } + protected PlaceNavigation createLocalPlaceNavigation(T destinationPlace, PlaceTokenizer tokenizer) { + return new PlaceNavigation(null, destinationPlace, tokenizer, false); + } + protected PlaceNavigation createGlobalPlaceNavigation(T destinationPlace, PlaceTokenizer tokenizer) { return new PlaceNavigation(destinationPlace, tokenizer); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index ef039f086d2..19d7972b9c8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java @@ -31,7 +31,7 @@ public class HomePlacesNavigator extends AbstractPlaceNavigator { } public PlaceNavigation getSolutionsNavigation(SolutionsNavigationTabs navigationTab) { - return createGlobalPlaceNavigation(new SolutionsPlace(navigationTab), new SolutionsPlace.Tokenizer()); + return createLocalPlaceNavigation(new SolutionsPlace(navigationTab), new SolutionsPlace.Tokenizer()); } public PlaceNavigation getSponsoringNavigation() { From 3fdc88e081fbf9f34da97c4e7e7f1c91c94d4750 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 18 Nov 2014 14:49:24 +0100 Subject: [PATCH 090/113] fixed scroll to top problem on solutions page --- .../gwt/home/client/shared/solutions/Solutions.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java index 8dd73bc6900..4c82561a919 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/solutions/Solutions.java @@ -11,6 +11,7 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.History; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; @@ -74,9 +75,7 @@ public class Solutions extends Composite { protected void onLoad() { Scheduler.get().scheduleDeferred(new Command() { public void execute() { - if (navigationTab != SolutionsNavigationTabs.SailingAnalytics) { - scrollToView(navigationTab); - } + scrollToView(navigationTab); } }); } @@ -114,7 +113,7 @@ public class Solutions extends Composite { private void scrollToView(SolutionsNavigationTabs navigationTab) { switch (navigationTab) { case SailingAnalytics: - sailingAnalyticsDiv.scrollIntoView(); + Window.scrollTo(0, 0); break; case RaceCommiteeApp: raceDiv.scrollIntoView(); From aaf49f9302411fc15540034096c945f54439173d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 18 Nov 2014 16:48:59 +0100 Subject: [PATCH 091/113] solving the issue with UI tests sporadically failing due to authorization issues; the problem was that a request for Login.html also creates a session asynchronously, causing a race condition --- .../sap/sailing/selenium/test/AbstractSeleniumTest.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java index 41eae059486..fe366cdea4a 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java @@ -31,7 +31,12 @@ import com.sap.sailing.selenium.core.Managed; import com.sap.sailing.selenium.core.SeleniumRunner; import com.sap.sailing.selenium.core.TestEnvironment; import com.sap.sailing.selenium.core.WindowManager; +<<<<<<< Updated upstream import com.sap.sailing.selenium.pages.HostPage; +======= +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsTimePoint; +>>>>>>> Stashed changes /** *

    Abstract base class for unit tests with Selenium. This class is already annotated as required to get executed @@ -86,10 +91,10 @@ public abstract class AbstractSeleniumTest { } @Before - public void setUpAuthenticatedSession() { + public void setUpAuthenticatedSession() throws InterruptedException { logger.info("Authenticating session..."); Cookie sessionCookie = authenticate(getContextRoot()); - getWebDriver().get(getContextRoot() + "security/ui/Login.html?" + HostPage.getGWTCodeServer()); // initialize web driver so setting a cookie for the local domain is possible + getWebDriver().get(getContextRoot() + "index.html"); // initialize web driver so setting a cookie for the local domain is possible getWebDriver().manage().addCookie(sessionCookie); logger.info("...obtained session cookie "+sessionCookie); } From 4d31181c8b55274571e0b188b103e4747275775e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 18 Nov 2014 16:54:40 +0100 Subject: [PATCH 092/113] fixed merge conflicts --- .../com/sap/sailing/selenium/test/AbstractSeleniumTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java index fe366cdea4a..c62d62b606c 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java @@ -31,12 +31,6 @@ import com.sap.sailing.selenium.core.Managed; import com.sap.sailing.selenium.core.SeleniumRunner; import com.sap.sailing.selenium.core.TestEnvironment; import com.sap.sailing.selenium.core.WindowManager; -<<<<<<< Updated upstream -import com.sap.sailing.selenium.pages.HostPage; -======= -import com.sap.sse.common.Duration; -import com.sap.sse.common.impl.MillisecondsTimePoint; ->>>>>>> Stashed changes /** *

    Abstract base class for unit tests with Selenium. This class is already annotated as required to get executed From 3d11c2ea11ec2dd3b2c1654cde215a45a388ab17 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 18 Nov 2014 16:55:18 +0100 Subject: [PATCH 093/113] removed InterruptedException again from signature of authorize session in AbstractSeleniumTest --- .../src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java index c62d62b606c..f18d5764cf2 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java @@ -85,7 +85,7 @@ public abstract class AbstractSeleniumTest { } @Before - public void setUpAuthenticatedSession() throws InterruptedException { + public void setUpAuthenticatedSession() { logger.info("Authenticating session..."); Cookie sessionCookie = authenticate(getContextRoot()); getWebDriver().get(getContextRoot() + "index.html"); // initialize web driver so setting a cookie for the local domain is possible From e8d6308b0befc807496bb90e0f9f642abff0d6d8 Mon Sep 17 00:00:00 2001 From: fmittag Date: Tue, 18 Nov 2014 17:32:49 +0100 Subject: [PATCH 094/113] changed link for SAP logo to point to http://sapsponsorships.com --- .../com/sap/sailing/gwt/home/client/shared/header/Header.java | 2 -- .../com/sap/sailing/gwt/home/client/shared/header/Header.ui.xml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java index 0469a5122b0..82d1104a946 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.java @@ -4,7 +4,6 @@ import java.util.Arrays; import java.util.List; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.KeyCodes; @@ -34,7 +33,6 @@ public class Header extends Composite { @UiField Anchor startPageLink; @UiField Anchor eventsPageLink; @UiField Anchor solutionsPageLink; - @UiField AnchorElement homeLink; // @UiField Anchor sponsoringPageLink; @UiField TextBox searchText; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.ui.xml index 030157924d5..79ae5b25ed6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/header/Header.ui.xml @@ -9,7 +9,7 @@

    - +

    Sailing Analytics

    From 068f397f3fbf1f4cff6a37d13043b2514bcb01f5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 19 Nov 2014 10:03:51 +0100 Subject: [PATCH 095/113] fixing bug 2472 by moving gwt.version specification from com.sap.sailing.gwt.ui/pom.xml to parent pom.xml in java/ --- java/com.sap.sailing.gwt.ui/pom.xml | 3 --- java/pom.xml | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/pom.xml b/java/com.sap.sailing.gwt.ui/pom.xml index f4a1bd2c1a3..5e1e99c92ae 100644 --- a/java/com.sap.sailing.gwt.ui/pom.xml +++ b/java/com.sap.sailing.gwt.ui/pom.xml @@ -9,9 +9,6 @@ com.sap.sailing.gwt.ui eclipse-plugin - - 2.6.1 - diff --git a/java/pom.xml b/java/pom.xml index 9005be604c2..a416f318bc4 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -10,6 +10,10 @@ 1.0.0-SNAPSHOT + + 2.6.1 + + root pom From 1d59df02190cf34756ecf34c7c780c76ed65e0c4 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Wed, 19 Nov 2014 10:09:38 +0100 Subject: [PATCH 096/113] Updated generated amazon launch configs --- configuration/buildAndUpdateProduct.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index c254ca0bb0f..66fb4292a8c 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -268,11 +268,22 @@ if [[ "$@" == "release" ]]; then mkdir $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO echo "MONGODB_NAME=myspecificevent REPLICATION_CHANNEL=myspecificevent -SERVER_STARTUP_NOTIFY=simon.marcel.pamies@sap.com SERVER_NAME=MYSPECIFICEVENT USE_ENVIRONMENT=live-server +MEMORY=4096m INSTALL_FROM_RELEASE=$SIMPLE_VERSION_INFO " >> $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO/amazon-launch-config.txt + + echo "MONGODB_NAME=myspecificevent +REPLICATION_CHANNEL=name_of_replication_channel_matching_master_config +REPLICATION_MASTER_SERVLET_HOST=ip_of_master_host +SERVER_NAME=subdomain_name_in_elb +EVENT_ID=event_uid_this_replica_is_serving +USE_ENVIRONMENT=replica +MEMORY=4096m +REPLICATE_ON_START=True +INSTALL_FROM_RELEASE=$SIMPLE_VERSION_INFO + " >> $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO/amazon-launch-config_replica.txt `which tar` cvzf $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO/$SIMPLE_VERSION_INFO.tar.gz * cp $ACDIR/env.sh $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO From 96eb5d58f5810eb239b95e223568df8462aa245d Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Wed, 19 Nov 2014 10:17:15 +0100 Subject: [PATCH 097/113] Fixed replicate on start --- configuration/buildAndUpdateProduct.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index 66fb4292a8c..4e75a4ca70c 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -281,7 +281,7 @@ SERVER_NAME=subdomain_name_in_elb EVENT_ID=event_uid_this_replica_is_serving USE_ENVIRONMENT=replica MEMORY=4096m -REPLICATE_ON_START=True +REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl INSTALL_FROM_RELEASE=$SIMPLE_VERSION_INFO " >> $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO/amazon-launch-config_replica.txt From e1ef0132654fb823c6c033aa87683947adea9c35 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Wed, 19 Nov 2014 10:52:52 +0100 Subject: [PATCH 098/113] Fixed generated file once more - typo --- configuration/buildAndUpdateProduct.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index 4e75a4ca70c..2153c4602ad 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -276,7 +276,8 @@ INSTALL_FROM_RELEASE=$SIMPLE_VERSION_INFO echo "MONGODB_NAME=myspecificevent REPLICATION_CHANNEL=name_of_replication_channel_matching_master_config -REPLICATION_MASTER_SERVLET_HOST=ip_of_master_host +REPLICATE_MASTER_EXCHANGE_NAME=myspecificevent_name_used_as_channel +REPLICATE_MASTER_SERVLET_HOST=ip_of_master_host SERVER_NAME=subdomain_name_in_elb EVENT_ID=event_uid_this_replica_is_serving USE_ENVIRONMENT=replica From 3b8b942865b8e3d7728f00f445e78cd91afd5676 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 19 Nov 2014 11:17:26 +0100 Subject: [PATCH 099/113] fixed top-level pom.xml in java/ directory (moving the gwt.version property duplicated the properties tag) --- .../SailingGWT Remote Profiling (Run-Mode only).launch | 2 +- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 2 +- java/pom.xml | 5 +---- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 2267d6630df..d61bedc6b8b 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -49,7 +49,7 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index bde3686911f..239713263bc 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -51,7 +51,7 @@ - + diff --git a/java/pom.xml b/java/pom.xml index d1b641d6db5..89eac371c00 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -10,10 +10,6 @@ 1.0.0-SNAPSHOT - - 2.6.1 - - root pom @@ -124,6 +120,7 @@ + 2.6.1 0.21.0 - + + From 8099bbe380dcafa2127dd46ce7dcc23b11bb8636 Mon Sep 17 00:00:00 2001 From: EC2 Server Date: Wed, 19 Nov 2014 12:28:22 +0000 Subject: [PATCH 103/113] in the sailing boot script, append a default MEMORY value to env.sh --- configuration/sailing | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/configuration/sailing b/configuration/sailing index b2b605821d1..3bdd32730a2 100755 --- a/configuration/sailing +++ b/configuration/sailing @@ -19,18 +19,21 @@ start_tmux() { } start_servers() { - if [ "$launch_httpd" = "true" ]; then - launch_httpd $SERVER_NAME $SERVER_PORT $EVENT_ID - fi - + NUMBER_OF_INSTANCES=`echo "$JAVA_START_INSTANCES" | wc -w` + MEMORY_PER_INSTANCE_IN_MB=`cat /proc/meminfo | grep MemTotal | awk '{printf("%i\n", ($2 / 1024 - 1500) / '$NUMBER_OF_INSTANCES' );}'` + echo "Using ${MEMORY_PER_INSTANCE_IN_MB}MB as default heap size per instance." for conf in $JAVA_START_INSTANCES; do echo "Checking for amazon update..." + echo "MEMORY=\"${MEMORY_PER_INSTANCE_IN_MB}m\"" >>/home/sailing/servers/$conf/env.sh su - sailing -c "cd /home/sailing/servers/$conf && $GIT_REPOSITORY/java/target/refreshInstance.sh auto-install" 2>/var/log/sailing.err >/var/log/sailing.out - # execute env.sh which now has the same set of variables that the server will see - source /home/sailing/servers/$conf/env.sh - launch_httpd - echo "Starting Java server $conf" - su - sailing -c "cd /home/sailing/servers/$conf && ./start" 2>/var/log/sailing.err >/var/log/sailing.out + ( + # execute env.sh in a subshell which now has the same set of variables that the server will see + source /home/sailing/servers/$conf/env.sh + launch_httpd + echo "Starting Java server $conf" + su - sailing -c "cd /home/sailing/servers/$conf && ./start" 2>/var/log/sailing.err >/var/log/sailing.out + # terminating the subshell will forget all the variable assignments brought in by env.sh, clearing for the next server instance + ) RETVAL=$? [ $RETVAL -eq 0 ] && success || failure done From 30dc9451170ab9fc079b63952422e214b0261431 Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 19 Nov 2014 15:53:58 +0100 Subject: [PATCH 104/113] made a UI-Cleanup for the user registration dialog --- java/com.sap.sse.security.ui/Register.html | 2 +- .../ui/client/AbstractSecurityEntryPoint.java | 15 +++ .../security/ui/login/LoginEntryPoint.java | 11 +- .../sap/sse/security/ui/login/LoginView.java | 35 ++++-- .../sse/security/ui/login/LoginView.ui.xml | 4 +- .../security/ui/login/LoginViewResources.css | 2 + .../ui/registration/RegisterEntryPoint.java | 105 +---------------- .../ui/registration/RegisterView.java | 109 ++++++++++++++++++ .../ui/registration/RegisterView.ui.xml | 39 +++++++ .../ui/registration/RegisterViewResources.css | 94 +++++++++++++++ .../registration/RegisterViewResources.java | 25 ++++ .../com/sap/sse/security/ui/Register.gwt.xml | 16 +-- 12 files changed, 326 insertions(+), 131 deletions(-) create mode 100644 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.java create mode 100644 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.ui.xml create mode 100644 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.css create mode 100644 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.java diff --git a/java/com.sap.sse.security.ui/Register.html b/java/com.sap.sse.security.ui/Register.html index bba651c302a..3ee8f3ae902 100644 --- a/java/com.sap.sse.security.ui/Register.html +++ b/java/com.sap.sse.security.ui/Register.html @@ -18,7 +18,7 @@ - SAP Sailing Analytics Login + SAP Sailing Analytics - Registration diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/AbstractSecurityEntryPoint.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/AbstractSecurityEntryPoint.java index 1548ba1a2b0..6aad0332122 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/AbstractSecurityEntryPoint.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/AbstractSecurityEntryPoint.java @@ -1,6 +1,7 @@ package com.sap.sse.security.ui.client; import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; import com.sap.sse.security.ui.client.i18n.StringMessages; /** @@ -11,8 +12,22 @@ import com.sap.sse.security.ui.client.i18n.StringMessages; * */ public abstract class AbstractSecurityEntryPoint extends AbstractSecureEntryPoint { + /** + * The URL parameter name used to pass an application name to this entry point. This name will be put into the login + * view's header. + */ + protected static final String PARAM_APP = "app"; + @Override protected StringMessages createStringMessages() { return GWT.create(StringMessages.class); } + + protected String getApplicationName(String defaultName) { + String appName = Window.Location.getParameter(PARAM_APP); + if(appName == null) { + appName = defaultName; + } + return appName; + } } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginEntryPoint.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginEntryPoint.java index f1ac6c2376b..af4c8192b50 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginEntryPoint.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginEntryPoint.java @@ -1,22 +1,15 @@ package com.sap.sse.security.ui.login; -import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.RootPanel; import com.sap.sse.security.ui.client.AbstractSecurityEntryPoint; import com.sap.sse.security.ui.client.i18n.StringMessages; public class LoginEntryPoint extends AbstractSecurityEntryPoint { - /** - * The URL parameter name used to pass an application name to this entry point. This name - * will be put into the login view's header. - */ - private static final String PARAM_APP = "app"; - @Override public void doOnModuleLoad() { super.doOnModuleLoad(); - final String appName = Window.Location.getParameter(PARAM_APP); RootPanel rootPanel = RootPanel.get(); - rootPanel.add(new LoginView(getUserManagementService(), getUserService(), appName==null?StringMessages.INSTANCE.signIn():appName)); + rootPanel.add(new LoginView(getUserManagementService(), getUserService(), StringMessages.INSTANCE, + getApplicationName(StringMessages.INSTANCE.signIn()))); } } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java index 0437fe347e9..16a96744a34 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java @@ -36,29 +36,40 @@ public class LoginView extends Composite { private final UserManagementServiceAsync userManagementService; private final UserService userService; + private final StringMessages stringMessages; @UiField TextBoxWithWatermark userNameTextBox; - @UiField Label appName; + @UiField Label appNameLabel; @UiField Anchor forgotPasswordAnchor; @UiField PasswordTextBoxWithWatermark passwordTextBox; @UiField Button loginButton; @UiField Anchor signUpAnchor; @UiField HTMLPanel oAuthPanel; - public LoginView(UserManagementServiceAsync userManagementService, UserService userService, String appName) { + public LoginView(UserManagementServiceAsync userManagementService, UserService userService, StringMessages stringMessages, String appName) { this.userManagementService = userManagementService; this.userService = userService; + this.stringMessages = stringMessages; + LoginViewResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); - this.appName.setText(appName); - userNameTextBox.setWatermark(StringMessages.INSTANCE.username()); + + appNameLabel.setText(appName); + userNameTextBox.setWatermark(stringMessages.username()); userNameTextBox.setWatermarkStyleName(LoginViewResources.INSTANCE.css().textInput_watermark()); - passwordTextBox.setWatermark(StringMessages.INSTANCE.password()); + passwordTextBox.setWatermark(stringMessages.password()); passwordTextBox.setWatermarkStyleName(LoginViewResources.INSTANCE.css().passwordTextInput_watermark()); String registrationLink = EntryPointLinkFactory.createRegistrationLink(Collections. emptyMap()); - signUpAnchor.setHref(registrationLink); + + +// signUpAnchor.setHref(registrationLink); +// +// String x = "javascript:window.open('" + registrationLink + "','_blank');"; +// signUpAnchor.setHref(x); + oAuthPanel.add(new OAuthLogin(userManagementService)); userNameTextBox.setFocus(true); + DialogUtils.linkEnterToButton(loginButton, userNameTextBox, passwordTextBox); userNameTextBox.addAttachHandler(new Handler() { @Override @@ -82,11 +93,11 @@ public class LoginView extends Composite { if (!result.getRedirectURL().equals("")) { Window.Location.replace(result.getRedirectURL()); } else { - Window.alert(StringMessages.INSTANCE.loggedIn(result.getUserDTO().getName())); + Window.alert(stringMessages.loggedIn(result.getUserDTO().getName())); } } else { if (SuccessInfo.FAILED_TO_LOGIN.equals(result.getMessage())) { - Window.alert(StringMessages.INSTANCE.failedToSignIn()); + Window.alert(stringMessages.failedToSignIn()); } else { Window.alert(result.getMessage()); } @@ -94,9 +105,15 @@ public class LoginView extends Composite { } }); } + + @UiHandler("signUpAnchor") + void signUpClicked(ClickEvent e) { + String registrationLink = EntryPointLinkFactory.createRegistrationLink(Collections. emptyMap()); + Window.open(registrationLink, "_blank", ""); + } @UiHandler("forgotPasswordAnchor") void forgotPasswordClicked(ClickEvent e) { - new ForgotPasswordDialog(StringMessages.INSTANCE, userManagementService, userService.getCurrentUser()).show(); + new ForgotPasswordDialog(stringMessages, userManagementService, userService.getCurrentUser()).show(); } } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.ui.xml b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.ui.xml index d067b8f70c4..b27deacf394 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.ui.xml +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.ui.xml @@ -8,7 +8,7 @@
    - +
    @@ -24,7 +24,7 @@
    - +
    diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginViewResources.css b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginViewResources.css index eb056d9d2fe..a48e557dfdc 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginViewResources.css +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginViewResources.css @@ -2,6 +2,7 @@ body, html { width: 100%; height: 100%; display: table; + background-color: lightgray; } body { @@ -14,6 +15,7 @@ body { margin: auto; border: 1px solid gray; line-height: 2.0; + background-color: white; } .loginform_header { diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterEntryPoint.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterEntryPoint.java index 2cf9abee44f..7759f9f16a9 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterEntryPoint.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterEntryPoint.java @@ -1,109 +1,16 @@ package com.sap.sse.security.ui.registration; -import java.util.HashMap; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.event.dom.client.KeyUpEvent; -import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.DockLayoutPanel; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.FormPanel; -import com.google.gwt.user.client.ui.FormPanel.SubmitEvent; -import com.google.gwt.user.client.ui.FormPanel.SubmitHandler; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.PasswordTextBox; -import com.google.gwt.user.client.ui.RootLayoutPanel; -import com.google.gwt.user.client.ui.SubmitButton; -import com.google.gwt.user.client.ui.TextBox; -import com.sap.sse.security.shared.UserManagementException; +import com.google.gwt.user.client.ui.RootPanel; import com.sap.sse.security.ui.client.AbstractSecurityEntryPoint; -import com.sap.sse.security.ui.client.EntryPointLinkFactory; -import com.sap.sse.security.ui.client.component.NewAccountValidator; -import com.sap.sse.security.ui.shared.UserDTO; +import com.sap.sse.security.ui.client.i18n.StringMessages; public class RegisterEntryPoint extends AbstractSecurityEntryPoint { + @Override public void doOnModuleLoad() { super.doOnModuleLoad(); - final NewAccountValidator validator = new NewAccountValidator(getStringMessages()); - RootLayoutPanel rootPanel = RootLayoutPanel.get(); - DockLayoutPanel dockPanel = new DockLayoutPanel(Unit.PX); - rootPanel.add(dockPanel); - FlowPanel fp = new FlowPanel(); - final Label errorLabel = new Label(); - fp.add(errorLabel); - Label nameLabel = new Label(getStringMessages().username()); - fp.add(nameLabel); - final TextBox nameText = new TextBox(); - fp.add(nameText); - Label emailLabel = new Label(getStringMessages().email()); - fp.add(emailLabel); - final TextBox emailText = new TextBox(); - fp.add(emailText); - Label pwLabel = new Label(getStringMessages().password()); - fp.add(pwLabel); - final PasswordTextBox pwText = new PasswordTextBox(); - fp.add(pwText); - Label pw2Label = new Label(getStringMessages().passwordRepeat()); - fp.add(pw2Label); - final PasswordTextBox pw2Text = new PasswordTextBox(); - fp.add(pw2Text); - final SubmitButton submit = new SubmitButton(getStringMessages().signUp()); - fp.add(submit); - KeyUpHandler keyUpHandler = new KeyUpHandler() { - @Override - public void onKeyUp(KeyUpEvent event) { - String errorMessage = validator.validateUsernameAndPassword(nameText.getText(), pwText.getText(), pw2Text.getText()); - if (errorMessage == null) { - errorLabel.setText(""); - submit.setEnabled(true); - } else { - errorLabel.setText(errorMessage); - submit.setEnabled(false); - } - } - }; - keyUpHandler.onKeyUp(null); // enable/disable submit button and fill error label - nameText.addKeyUpHandler(keyUpHandler); - pwText.addKeyUpHandler(keyUpHandler); - pw2Text.addKeyUpHandler(keyUpHandler); - FormPanel formPanel = new FormPanel(); - formPanel.addSubmitHandler(new SubmitHandler() { - @Override - public void onSubmit(SubmitEvent event) { - getUserManagementService().createSimpleUser(nameText.getText(), emailText.getText(), pwText.getText(), - EntryPointLinkFactory.createEmailValidationLink(new HashMap()), - new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - GWT.log(caught.getMessage()); - if (caught instanceof UserManagementException) { - String message = ((UserManagementException) caught).getMessage(); - if (UserManagementException.USER_ALREADY_EXISTS.equals(message)) { - Window.alert(getStringMessages().userAlreadyExists(nameText.getText())); - } - } else { - Window.alert(getStringMessages().errorCreatingUser(nameText.getText(), caught.getMessage())); - } - } - - @Override - public void onSuccess(UserDTO result) { - if (result != null) { - Window.alert(getStringMessages().signedUpSuccessfully(result.getName())); - } - else { - Window.alert(getStringMessages().unknownErrorCreatingUser(nameText.getText())); - } - - } - }); - } - }); - formPanel.add(fp); - dockPanel.add(formPanel); + RootPanel rootPanel = RootPanel.get(); + rootPanel.add(new RegisterView(getUserManagementService(), StringMessages.INSTANCE, + getApplicationName(StringMessages.INSTANCE.signUp()))); } } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.java new file mode 100644 index 00000000000..ca861ec16a7 --- /dev/null +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.java @@ -0,0 +1,109 @@ +package com.sap.sse.security.ui.registration; + +import java.util.HashMap; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.gwt.client.controls.PasswordTextBoxWithWatermark; +import com.sap.sse.gwt.client.controls.TextBoxWithWatermark; +import com.sap.sse.gwt.client.dialog.DialogUtils; +import com.sap.sse.security.shared.UserManagementException; +import com.sap.sse.security.ui.client.EntryPointLinkFactory; +import com.sap.sse.security.ui.client.component.NewAccountValidator; +import com.sap.sse.security.ui.client.i18n.StringMessages; +import com.sap.sse.security.ui.shared.UserDTO; +import com.sap.sse.security.ui.shared.UserManagementServiceAsync; + +public class RegisterView extends Composite { + private static RegisterViewUiBinder uiBinder = GWT.create(RegisterViewUiBinder.class); + + interface RegisterViewUiBinder extends UiBinder { + } + + private final UserManagementServiceAsync userManagementService; + private final StringMessages stringMessages; + + @UiField Label appNameLabel; + @UiField Label errorMessageLabel; + @UiField Button signUpButton; + @UiField TextBoxWithWatermark usernameTextBox; + @UiField TextBoxWithWatermark emailTextBox; + @UiField PasswordTextBoxWithWatermark passwordTextBox; + @UiField PasswordTextBoxWithWatermark password2TextBox; + + public RegisterView(UserManagementServiceAsync userManagementService, StringMessages stringMessages, String appName) { + this.userManagementService = userManagementService; + this.stringMessages = stringMessages; + + RegisterViewResources.INSTANCE.css().ensureInjected(); + initWidget(uiBinder.createAndBindUi(this)); + + appNameLabel.setText(appName); + final NewAccountValidator validator = new NewAccountValidator(stringMessages); + KeyUpHandler keyUpHandler = new KeyUpHandler() { + @Override + public void onKeyUp(KeyUpEvent event) { + String errorMessage = validator.validateUsernameAndPassword(usernameTextBox.getText(), passwordTextBox.getText(), password2TextBox.getText()); + if (errorMessage == null) { + errorMessageLabel.setText(""); + signUpButton.setEnabled(true); + signUpButton.removeStyleName(RegisterViewResources.INSTANCE.css().buttoninactive()); + } else { + errorMessageLabel.setText(errorMessage); + signUpButton.setEnabled(false); + signUpButton.addStyleName(RegisterViewResources.INSTANCE.css().buttoninactive()); + } + } + }; + keyUpHandler.onKeyUp(null); // enable/disable submit button and fill error label + usernameTextBox.addKeyUpHandler(keyUpHandler); + passwordTextBox.addKeyUpHandler(keyUpHandler); + password2TextBox.addKeyUpHandler(keyUpHandler); + + DialogUtils.linkEnterToButton(signUpButton, usernameTextBox, emailTextBox, passwordTextBox, password2TextBox); + } + + @UiHandler("signUpButton") + void signUpButtonClicked(ClickEvent e) { + userManagementService.createSimpleUser(usernameTextBox.getText(), emailTextBox.getText(), passwordTextBox.getText(), + EntryPointLinkFactory.createEmailValidationLink(new HashMap()), new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + if (caught instanceof UserManagementException) { + String message = ((UserManagementException) caught).getMessage(); + if (UserManagementException.USER_ALREADY_EXISTS.equals(message)) { + Window.alert(stringMessages.userAlreadyExists(usernameTextBox.getText())); + } + } else { + Window.alert(stringMessages.errorCreatingUser(usernameTextBox.getText(), caught.getMessage())); + } + } + + @Override + public void onSuccess(UserDTO result) { + if (result != null) { + Window.alert(stringMessages.signedUpSuccessfully(result.getName())); + closeWindow(); + } else { + Window.alert(stringMessages.unknownErrorCreatingUser(usernameTextBox.getText())); + } + } + }); + } + + public native void closeWindow() + /*-{ + $wnd.close(); + }-*/; +} diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.ui.xml b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.ui.xml new file mode 100644 index 00000000000..680b85a2e17 --- /dev/null +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterView.ui.xml @@ -0,0 +1,39 @@ + + + + + + +
    + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.css b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.css new file mode 100644 index 00000000000..6c9fd0e7ed6 --- /dev/null +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.css @@ -0,0 +1,94 @@ +body, html { + width: 100%; + height: 100%; + display: table; + background-color: lightgray; +} + +body { + display: table-cell; + vertical-align: middle; +} + +.registrationform { + display: table; /* shrinks to fit conntent */ + margin: auto; + border: 1px solid gray; + line-height: 2.0; + background-color: white; +} + +.registrationform_header { + height: 40px; + background-color: #333333; + border-bottom: 4px solid #f0ab00; + color: white; + position: relative +} + +.registrationform_header_appname { + display: inline; + font-size: 20px; + margin: 0; + position: absolute; + top: 50%; + transform: translate(0, -50%) +} + +.registrationform_content { + padding: 10px; +} + +.textInput_watermark { + color: gray; +} + +.passwordTextInput_watermark { + color:; +} + +.errormessage { + font-weight: bold; + color:red; +} + +.glowing_border { + border: 2px solid #dadada; +} + +.glowing_border:focus { + outline: none; + border-color: #9ecaed; + box-shadow: 0 0 10px #9ecaed; +} + +.button { + font-size: 15px; + font-size: 1rem; + font-weight: 400; + line-height: 1.7em; + color: #fff; + border: none; + background-color: #f0ab00; + padding-left: 20px; + padding-right: 20px; + -webkit-transition: background-color 0.2s; + -moz-transition: background-color 0.2s; + -o-transition: background-color 0.2s; + -ms-transition: background-color 0.2s; + transition: background-color 0.2s; + text-decoration: none; +} + +.button:hover, .button:focus { + background-color: #d89a00; + outline: none; + text-decoration: none; +} + +.buttoninactive { + background-color: #ccc; +} +.buttoninactive:hover { + background-color: #b8b8b8; +} diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.java new file mode 100644 index 00000000000..51f3c3f562a --- /dev/null +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/registration/RegisterViewResources.java @@ -0,0 +1,25 @@ +package com.sap.sse.security.ui.registration; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface RegisterViewResources extends ClientBundle { + public static final RegisterViewResources INSTANCE = GWT.create(RegisterViewResources.class); + + @Source("com/sap/sse/security/ui/registration/RegisterViewResources.css") + LocalCss css(); + + public interface LocalCss extends CssResource { + String registrationform(); + String registrationform_header(); + String registrationform_header_appname(); + String registrationform_content(); + String textInput_watermark(); + String passwordTextInput_watermark(); + String glowing_border(); + String button(); + String buttoninactive(); + String errormessage(); + } +} diff --git a/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Register.gwt.xml b/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Register.gwt.xml index 495d22b0b14..b577d825cdc 100644 --- a/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Register.gwt.xml +++ b/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Register.gwt.xml @@ -2,21 +2,15 @@ + - - - - - - + + - - - - + - + From 9ead811ef5d0fde25aaac1b63eb95428ac48926c Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Wed, 19 Nov 2014 18:36:59 +0100 Subject: [PATCH 105/113] removed unnecessary serial version identifier --- .../gwt/ui/shared/TrackFileImportDeviceIdentifierDTO.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/TrackFileImportDeviceIdentifierDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/TrackFileImportDeviceIdentifierDTO.java index 288d2a96b2a..9cd61dc6298 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/TrackFileImportDeviceIdentifierDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/TrackFileImportDeviceIdentifierDTO.java @@ -5,7 +5,6 @@ import java.util.Date; import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifier; public class TrackFileImportDeviceIdentifierDTO extends DeviceIdentifierDTO { - private static final long serialVersionUID = 5409142940941055516L; public String uuidAsString; public String fileName; public String trackName; From 69565675743ff04f4f0b0040be42c444a832f8e0 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 09:58:11 +0100 Subject: [PATCH 106/113] refactored AbstractRaceChangeListener so that subclasses can provide a defaultAction() implementation; in preparation of solving bug 2473. --- .../impl/DomainFactoryImpl.java | 1 - .../leaderboard/LeaderboardCacheManager.java | 82 +------------ .../impl/AbstractSimpleLeaderboardImpl.java | 84 ++----------- .../impl/AbstractRaceChangeListener.java | 32 +++++ .../domain/tracking/impl/TrackedLegImpl.java | 112 ++++++------------ .../gwt/ui/server/QuickRanksLiveCache.java | 85 +------------ .../test/AbstractServerReplicationTest.java | 8 ++ .../test/PrematureOperationReceiptTest.java | 2 +- .../test/TrackRaceReplicationTest.java | 6 +- .../UpdateRaceTimes.java | 6 + .../impl/ReplicationServiceImpl.java | 4 + .../sap/sse/replication/impl/Replicator.java | 49 ++++++-- .../configuration/logging_debug.properties | 1 + java/target/env.sh | 11 +- 14 files changed, 155 insertions(+), 328 deletions(-) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index e4458aebd1b..5f306db3c5d 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -232,7 +232,6 @@ public class DomainFactoryImpl implements DomainFactory { @Override public Competitor getOrCreateCompetitor(ICompetitor competitor) { - // TODO see bug 596; consider allowing for a new competitor (check for use of == throughout the code) or update existing one final UUID competitorId = competitor.getId(); final String competitorClassName = competitor.getCompetitorClass()==null?null:competitor.getCompetitorClass().getName(); final String nationalityAsString = competitor.getNationality(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java index f21a7be3a32..ab38a4698bc 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java @@ -10,29 +10,21 @@ import java.util.concurrent.ConcurrentHashMap; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorChangeListener; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; -import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.WithNationality; import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.MaxPointsReason; -import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.leaderboard.caching.LeaderboardCache; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; -import com.sap.sailing.domain.tracking.GPSFix; -import com.sap.sailing.domain.tracking.GPSFixMoving; -import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.TrackedRaceStatus; -import com.sap.sailing.domain.tracking.Wind; +import com.sap.sailing.domain.tracking.impl.AbstractRaceChangeListener; import com.sap.sailing.util.impl.ConcurrentWeakHashMap; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; -import com.sap.sse.common.TimePoint; /** * Manages a {@link LeaderboardCache}. When a {@link Leaderboard} is {@link LeaderboardCache#add added} to the cache, it @@ -50,7 +42,7 @@ public class LeaderboardCacheManager { private final ConcurrentWeakHashMap>> invalidationListenersPerLeaderboard; private final WeakHashMap raceColumnListeners; - private class CacheInvalidationListener implements RaceChangeListener { + private class CacheInvalidationListener extends AbstractRaceChangeListener { private final Leaderboard leaderboard; private final TrackedRace trackedRace; @@ -60,76 +52,10 @@ public class LeaderboardCacheManager { } @Override - public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { + protected void defaultAction() { removeFromCache(leaderboard); } - - @Override - public void statusChanged(TrackedRaceStatus newStatus) { - removeFromCache(leaderboard); - } - - @Override - public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { - removeFromCache(leaderboard); - } - - @Override - public void markPassingReceived(Competitor competitor, Map oldMarkPassings, - Iterable markPassings) { - removeFromCache(leaderboard); - } - - @Override - public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - removeFromCache(leaderboard); - } - - @Override - public void windDataReceived(Wind wind, WindSource windSource) { - removeFromCache(leaderboard); - } - - @Override - public void windDataRemoved(Wind wind, WindSource windSource) { - removeFromCache(leaderboard); - } - - @Override - public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - removeFromCache(leaderboard); - } - - @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - removeFromCache(leaderboard); - } - - @Override - public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - removeFromCache(leaderboard); - } - - @Override - public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - removeFromCache(leaderboard); - } - - @Override - public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - removeFromCache(leaderboard); - } - - @Override - public void delayToLiveChanged(long delayToLiveInMillis) { - removeFromCache(leaderboard); - } - - @Override - public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { - removeFromCache(leaderboard); - } - + private void removeFromTrackedRace() { trackedRace.removeListener(this); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index d4a588f4886..740f8540816 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -34,7 +34,6 @@ import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnInSeries; import com.sap.sailing.domain.base.RaceColumnListener; @@ -49,7 +48,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; -import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; @@ -69,7 +67,6 @@ import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater; import com.sap.sailing.domain.racelog.InvalidatesLeaderboardCache; import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; -import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.Maneuver; @@ -79,11 +76,10 @@ import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; -import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache; import com.sap.sailing.domain.tracking.WindPositionMode; +import com.sap.sailing.domain.tracking.impl.AbstractRaceChangeListener; import com.sap.sailing.util.impl.LockUtil; import com.sap.sailing.util.impl.NamedReentrantReadWriteLock; import com.sap.sailing.util.impl.RaceColumnListeners; @@ -262,13 +258,14 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race } /** - * Handles the invalidation of the {@link SailingServiceImpl#raceDetailsAtEndOfTrackingCache} entries if the tracked race - * changes in any way. + * Handles the invalidation of the {@link SailingServiceImpl#raceDetailsAtEndOfTrackingCache} entries if the tracked + * race changes in any way. In particular, for {@link #statusChanged}, when the status changes away from LOADING, + * calculations may start or resume, making it necessary to clear the cache. * * @author Axel Uhl (D043530) * */ - private class CacheInvalidationListener implements RaceChangeListener { + private class CacheInvalidationListener extends AbstractRaceChangeListener { private final TrackedRace trackedRace; private final Competitor competitor; @@ -291,76 +288,9 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race removeFromTrackedRace(); } } - + @Override - public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void statusChanged(TrackedRaceStatus newStatus) { - // when the status changes away from LOADING, calculations may start or resume, making it necessary to clear the cache - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void markPassingReceived(Competitor competitor, Map oldMarkPassings, - Iterable markPassings) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void windDataReceived(Wind wind, WindSource windSource) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void windDataRemoved(Wind wind, WindSource windSource) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void delayToLiveChanged(long delayToLiveInMillis) { - invalidateCacheAndRemoveThisListenerFromTrackedRace(); - } - - @Override - public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { + protected void defaultAction() { invalidateCacheAndRemoveThisListenerFromTrackedRace(); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java index e1acf1a7ced..254b95bf500 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java @@ -14,62 +14,94 @@ import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.Wind; import com.sap.sse.common.TimePoint; +/** + * Delegates all listener operations to a default action which is implemented here to do nothing. This way, subclasses + * can easily provide a default action to be executed for all callback methods except for maybe a few which then need to + * be explicitly overridden. If not most methods need to perform the same action then instead of implementing a default + * action subclasses should rather override the {@link RaceChangeListener} operations individually. + * + * @author Axel Uhl (D043530) + * + */ public abstract class AbstractRaceChangeListener implements RaceChangeListener { + /** + * This implementation of the default action to which all other operations delegate does nothing. Subclasses can + * choose to override this method to provide this as the default behavior for all other methods and then still + * override individual {@link RaceChangeListener} methods, or they can leave the default action empty and just + * override {@link RaceChangeListener} methods. + */ + protected void defaultAction() { + // Does nothing + } @Override public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { + defaultAction(); } @Override public void statusChanged(TrackedRaceStatus newStatus) { + defaultAction(); } @Override public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { + defaultAction(); } @Override public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { + defaultAction(); } @Override public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { + defaultAction(); } @Override public void windDataReceived(Wind wind, WindSource windSource) { + defaultAction(); } @Override public void windDataRemoved(Wind wind, WindSource windSource) { + defaultAction(); } @Override public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { + defaultAction(); } @Override public void competitorPositionChanged(GPSFixMoving fix, Competitor item) { + defaultAction(); } @Override public void markPassingReceived(Competitor competitor, Map oldMarkPassings, Iterable markPassings) { + defaultAction(); } @Override public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { + defaultAction(); } @Override public void delayToLiveChanged(long delayToLiveInMillis) { + defaultAction(); } @Override public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { + defaultAction(); } @Override public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { + defaultAction(); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index acf470926e1..c3a5bc71090 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -14,8 +14,6 @@ import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; @@ -24,10 +22,6 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.MeterDistance; -import com.sap.sailing.domain.tracking.GPSFix; -import com.sap.sailing.domain.tracking.GPSFixMoving; -import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; @@ -38,7 +32,7 @@ import com.sap.sailing.domain.tracking.WindPositionMode; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; -public class TrackedLegImpl implements TrackedLeg, RaceChangeListener { +public class TrackedLegImpl implements TrackedLeg { private static final long serialVersionUID = -1944668527284130545L; private final static Logger logger = Logger.getLogger(TrackedLegImpl.class.getName()); @@ -58,7 +52,7 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener { for (Competitor competitor : competitors) { trackedLegsOfCompetitors.put(competitor, new TrackedLegOfCompetitorImpl(this, competitor)); } - trackedRace.addListener(this); + trackedRace.addListener(new CacheClearingRaceChangeListener()); competitorTracksOrderedByRank = new HashMap<>(); } @@ -250,76 +244,37 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener { return getTrackedRace().getWind(p, at, windSourcesToExclude); } - @Override - public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { - clearCaches(); - } + /** + * The default action of this listener is to {@link #clearCaches clear the tracked leg's caches} when anything on + * the race changes. There are a few exceptions that don't necessitate a cache clearing, so these methods are + * overridden here to not call the {@link #defaultAction} which here delegates to {@link #clearCaches}. For + * {@link #waypointAdded} clearing the caches is necessary because the competitor tracks ordered by rank may change + * for legs adjacent to the waypoint added } // and because the leg's from/to waypoints may have changed. For + * {@link #waypointRemoved} it is necessary because the competitor tracks ordered by rank may change for legs + * adjacent to the waypoint removed. + * + * @author Axel Uhl (D043530) + * + */ + private class CacheClearingRaceChangeListener extends AbstractRaceChangeListener { + @Override + protected void defaultAction() { + clearCaches(); + } - @Override - public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - clearCaches(); // necessary because the competitor tracks ordered by rank may change for legs adjacent to the waypoint added - } // and because the leg's from/to waypoints may have changed + /** + * no-op; the leg doesn't mind the tracked race's status being updated + */ + @Override + public void statusChanged(TrackedRaceStatus newStatus) { + } - @Override - public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - clearCaches(); // necessary because the competitor tracks ordered by rank may change for legs adjacent to the waypoint removed - } - - @Override - public void statusChanged(TrackedRaceStatus newStatus) { - // no-op; the leg doesn't mind the tracked race's status being updated - } - - @Override - public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { - clearCaches(); - } - - @Override - public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - clearCaches(); - } - - @Override - public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - clearCaches(); - } - - @Override - public void markPassingReceived(Competitor competitor, Map oldMarkPassing, Iterable markPassing) { - clearCaches(); - } - - @Override - public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { - clearCaches(); - } - - @Override - public void windDataReceived(Wind wind, WindSource windSource) { - clearCaches(); - } - - @Override - public void windDataRemoved(Wind wind, WindSource windSource) { - clearCaches(); - } - - @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - } - - @Override - public void delayToLiveChanged(long delayToLiveInMillis) { - } - - @Override - public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - } - - @Override - public void waypointsMayHaveChanges() { - clearCaches(); + /** + * no-op; no change of competitorTracksOrderedByRank necessary + */ + @Override + public void delayToLiveChanged(long delayToLiveInMillis) { + } } private void clearCaches() { @@ -328,6 +283,11 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener { } } + @Override + public void waypointsMayHaveChanges() { + clearCaches(); + } + @Override public Distance getAbsoluteCrossTrackError(Position p, TimePoint timePoint) { final Position approximatePosition = getTrackedRace().getApproximatePosition(getLeg().getFrom(), timePoint); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java index 2181ef7269e..7a5a8d78516 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/QuickRanksLiveCache.java @@ -9,25 +9,14 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.domain.common.WindSource; -import com.sap.sailing.domain.tracking.GPSFix; -import com.sap.sailing.domain.tracking.GPSFixMoving; -import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.TrackedRaceStatus; -import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.impl.AbstractRaceChangeListener; import com.sap.sailing.gwt.ui.shared.QuickRankDTO; import com.sap.sailing.server.masterdata.DummyTrackedRace; import com.sap.sailing.util.SmartFutureCache; import com.sap.sailing.util.SmartFutureCache.AbstractCacheUpdater; import com.sap.sailing.util.SmartFutureCache.UpdateInterval; -import com.sap.sse.common.TimePoint; /** * Calculating the quick ranks for many clients for a live race is expensive and therefore benefits from consolidation @@ -41,7 +30,7 @@ import com.sap.sse.common.TimePoint; * @author Axel Uhl (D043530) * */ -public class QuickRanksLiveCache extends AbstractRaceChangeListener { +public class QuickRanksLiveCache { private static final Logger logger = Logger.getLogger(QuickRanksLiveCache.class.getName()); /** * For each weak reference to a tracked race, remembers the race's {@link RegattaAndRaceIdentifier} which is then the key @@ -142,81 +131,15 @@ public class QuickRanksLiveCache extends AbstractRaceChangeListener { return result; } - private class Listener implements RaceChangeListener { + private class Listener extends AbstractRaceChangeListener { private final RegattaAndRaceIdentifier raceIdentifier; public Listener(RegattaAndRaceIdentifier raceIdentifier) { this.raceIdentifier = raceIdentifier; } - + @Override - public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void markPassingReceived(Competitor competitor, Map oldMarkPassings, - Iterable markPassings) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void windDataReceived(Wind wind, WindSource windSource) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void windDataRemoved(Wind wind, WindSource windSource) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void delayToLiveChanged(long delayToLiveInMillis) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { - cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); - } - - @Override - public void statusChanged(TrackedRaceStatus newStatus) { + protected void defaultAction() { cache.triggerUpdate(raceIdentifier, CalculateOrPurge.CALCULATE); } } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index d157b0276da..039f36a0ca4 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -279,5 +279,13 @@ public abstract class AbstractServerReplicationTest { } pis.close(); } + + public void waitUntilQueueIsEmpty() throws InterruptedException, IllegalAccessException { + synchronized (getReplicator()) { + while (!getReplicator().isQueueEmpty()) { + getReplicator().wait(); + } + } + } } } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index d9fb9d6abe1..dc7afd24ef3 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -40,7 +40,7 @@ public class PrematureOperationReceiptTest extends AbstractServerReplicationTest * started in suspended mode and resumed only after the initial load was successfully installed. */ @Test - public void testRaceColumnInLeaderboardReplicationAfterInitialLoad() throws InterruptedException, ClassNotFoundException, IOException { + public void testRaceColumnInLeaderboardReplicationAfterInitialLoad() throws InterruptedException, ClassNotFoundException, IOException, IllegalAccessException { final String leaderboardName = "My new leaderboard"; final int[] discardThresholds = new int[] { 17, 23 }; CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, null, discardThresholds, new LowPoint(), null); 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 43f52bf301d..c46acf17977 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 @@ -12,6 +12,7 @@ import java.net.URL; import java.util.Collections; import java.util.GregorianCalendar; import java.util.TimeZone; +import java.util.logging.Logger; import org.junit.After; import org.junit.Before; @@ -43,6 +44,7 @@ import com.sap.sse.replication.OperationExecutionListener; import com.sap.sse.replication.OperationWithResult; public class TrackRaceReplicationTest extends AbstractServerReplicationTest { + private static final Logger logger = Logger.getLogger(TrackRaceReplicationTest.class.getName()); private TrackedRace masterTrackedRace; private RegattaAndRaceIdentifier raceIdentifier; private RaceHandle racesHandle; @@ -98,12 +100,13 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { racesHandle = master.addRace(/* regattaToAddTo */ null, trackingParams, /* timeoutInMilliseconds */ 60000); } - private void waitForTrackRaceReplicationTrigger() throws InterruptedException { + private void waitForTrackRaceReplicationTrigger() throws InterruptedException, IllegalAccessException { while (!notifier[0]) { synchronized (notifier) { notifier.wait(); } } + replicaReplicator.waitUntilQueueIsEmpty(); } @Test @@ -161,6 +164,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { master.getTrackedRace(raceIdentifier).getEndOfTracking() != null; } Thread.sleep(3000); // kept failing several times for a 1000ms timeout + logger.info("verifying replica's state"); TrackedRace replicaTrackedRace = replica.getTrackedRace(raceIdentifier); assertEquals(masterTrackedRace.getStartOfTracking(), replicaTrackedRace.getStartOfTracking()); assertEquals(masterTrackedRace.getEndOfTracking(), replicaTrackedRace.getEndOfTracking()); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java index ac011175e00..8cc1c3f2f9e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java @@ -1,5 +1,7 @@ package com.sap.sailing.server.operationaltransformation; +import java.util.logging.Logger; + import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.server.RacingEventService; @@ -8,6 +10,7 @@ import com.sap.sse.common.TimePoint; public class UpdateRaceTimes extends AbstractRaceOperation { private static final long serialVersionUID = 7054690983295760375L; + private static final Logger logger = Logger.getLogger(UpdateRaceTimes.class.getName()); private final TimePoint startOfTracking; private final TimePoint endOfTracking; private final TimePoint startTimeReceived; @@ -23,8 +26,11 @@ public class UpdateRaceTimes extends AbstractRaceOperation { @Override public Void internalApplyTo(RacingEventService toState) throws Exception { DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); + logger.fine("applying startOfTracking="+startOfTracking+" for "+trackedRace.getRace().getName()); trackedRace.setStartOfTrackingReceived(startOfTracking); + logger.fine("applying endOfTracking="+endOfTracking+" for "+trackedRace.getRace().getName()); trackedRace.setEndOfTrackingReceived(endOfTracking); + logger.fine("applying startTimeReceived="+startTimeReceived+" for "+trackedRace.getRace().getName()); trackedRace.setStartTimeReceived(startTimeReceived); return null; } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java index 878031f1603..668b0f75dd9 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java @@ -258,6 +258,10 @@ public class ReplicationServiceImpl implements ReplicationService { return replicablesProvider; } + protected Replicator getReplicator() { + return replicator; + } + private Channel createMasterChannelAndDeclareFanoutExchange() throws IOException { Channel result = createMasterChannel(); result.exchangeDeclare(exchangeName, "fanout"); diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index 907cb94fc85..352a2bcda69 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -50,7 +50,12 @@ import com.sap.sse.replication.ReplicationMasterDescriptor; *

    * * The receiver takes care of synchronizing receiving, suspending/resuming and queuing. Waiters are notified whenever - * the result of {@link #isQueueEmpty} changes. + * the result of {@link #isQueueEmpty} changes.

    + * + * Clients can {@link Object#wait()} on this object and will be {@link Object#notify() notified} when one of the queues + * for one {@link Replicable} has been consumed so that it is empty. As new operations may arrive at any time, this is + * no guarantee for the queue remaining empty; however, it is a possible way to get informed about this interesting change + * in state, particularly in case it was really the last operation that was received. * * @author Axel Uhl (d043530) * @@ -91,6 +96,12 @@ public class Replicator implements Runnable { */ private static final int THREAD_POOL_SIZE = Math.max(Runtime.getRuntime().availableProcessors()-1, 3); + /** + * If permitted by the security manager, this is the _queue field accessor for the {@link QueueingConsumer} + * class, enabling an inspection of the message queueing system's queue size of unprocessed messages. + */ + private Field _queue; + /** * Used for the parallel execution of operations that don't * {@link RacingEventServiceOperation#requiresSynchronousExecution()}. @@ -117,6 +128,12 @@ public class Replicator implements Runnable { this.replicableProvider = replicableProvider; this.suspended = startSuspended; this.consumer = consumer; + try { + _queue = QueueingConsumer.class.getDeclaredField("_queue"); + _queue.setAccessible(true); + } catch (Exception e) { + _queue = null; + } } /** @@ -132,13 +149,6 @@ public class Replicator implements Runnable { ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); long messageCount = 0; long operationCount = 0; - Field _queue; - try { - _queue = QueueingConsumer.class.getDeclaredField("_queue"); - _queue.setAccessible(true); - } catch (Exception e) { - _queue = null; - } final boolean logsFine = logger.isLoggable(Level.FINE); while (!isBeingStopped()) { try { @@ -148,10 +158,10 @@ public class Replicator implements Runnable { if (logsFine || messageCount % 10l == 0) { try { logger.log(messageCount%10l==0 ? Level.INFO : Level.FINE, - "Inbound replication queue size: "+((BlockingQueue) _queue.get(consumer)).size()); + "Received "+messageCount+" replication messages with "+operationCount+" operations in total. Inbound replication queue size: "+getMessageQueueSize()); } catch (Exception e) { // it didn't work; but it's a log message only... - logger.info("Received another 10000 replication messages"); + logger.info("Received "+messageCount+" replication messages with "+operationCount+" operations in total."); } } } @@ -243,6 +253,21 @@ public class Replicator implements Runnable { } logger.info("Stopped replicator thread. This server will no longer receive events from a master."); } + + /** + * @return the number of unprocessed messages in the inbound message queue + */ + private int getMessageQueueSize() throws IllegalAccessException { + return getInboundMessageQueue().size(); + } + + /** + * @return the message queueing system's message queue from which this replicator reads messages; can be used + * to check if the queue is empty or to determine the number of elements in the queue + */ + private BlockingQueue getInboundMessageQueue() throws IllegalAccessException { + return (BlockingQueue) _queue.get(consumer); + } private > void readOperationAndApplyOrQueueIt(Replicable replicable, byte[] serializedOperation) throws ClassNotFoundException, IOException { @@ -348,8 +373,8 @@ public class Replicator implements Runnable { /** * @return true if all queues for all replicables are empty */ - public boolean isQueueEmpty() { - return !queueByReplicableIdAsString.values().stream().anyMatch(q->!q.isEmpty()); + public boolean isQueueEmpty() throws IllegalAccessException { + return (_queue == null || getInboundMessageQueue().isEmpty()) && !queueByReplicableIdAsString.values().stream().anyMatch(q->!q.isEmpty()); } } diff --git a/java/target/configuration/logging_debug.properties b/java/target/configuration/logging_debug.properties index 825141e77ca..5be8f6e6335 100644 --- a/java/target/configuration/logging_debug.properties +++ b/java/target/configuration/logging_debug.properties @@ -17,6 +17,7 @@ java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Overwrite the log leves for specific loggers here com.sap.sailing.level = FINE +com.sap.sse.level = FINE # log at level FINEST for TransientCompetitorStoreIMpl #com.sap.sailing.domain.base.impl.TransientCompetitorStoreImpl.level = FINEST #com.sap.sailing.domain.base.impl.SharedDomainFactoryImpl.level = FINEST diff --git a/java/target/env.sh b/java/target/env.sh index f82a6eb3fe0..aa87c14a5bc 100644 --- a/java/target/env.sh +++ b/java/target/env.sh @@ -9,7 +9,16 @@ SERVER_NAME=MASTER -MEMORY="1024m" +# This is a default heap size only; the boot script of an instance (see +# configuration/sailing) will add a MEMORY assignment to this file in the +# server's directory that has a default value computed from the total +# memory installed in the machine and the number of server instances to +# start on that machine. This default can be overwritten by manually appending +# another MEMORY assignment at the end of the file or by defining an environment +# file with a MEMORY assignment which is then used in conjunction with refreshInstance.sh +# or by setting the MEMORY variable in the EC2 Instance Details section which will be appended +# at the end of the file. +MEMORY="6000m" # Message Queue hostname where to # send messages for replicas (this server is master) From af4d3c2b367176b2d41eecd8f1d6d48360491f1c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 10:28:04 +0100 Subject: [PATCH 107/113] refactored replication and notification pattern for startOfTracking/endOfTracking/startTimeReceived, solving bug 2473 --- .../domain/tracking/RaceChangeListener.java | 6 +- .../impl/AbstractRaceChangeListener.java | 12 +- .../tracking/impl/DynamicTrackedRaceImpl.java | 202 +++----------- .../TrackBasedEstimationWindTrackImpl.java | 254 +++++++++--------- .../server/impl/RacingEventServiceImpl.java | 18 +- .../UpdateEndOfTracking.java | 41 +++ .../UpdateStartOfTracking.java | 41 +++ ...imes.java => UpdateStartTimeReceived.java} | 15 +- 8 files changed, 283 insertions(+), 306 deletions(-) create mode 100755 java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEndOfTracking.java create mode 100755 java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartOfTracking.java rename java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/{UpdateRaceTimes.java => UpdateStartTimeReceived.java} (63%) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java index 249150da675..6dbefd5a3ca 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceChangeListener.java @@ -31,7 +31,11 @@ public interface RaceChangeListener extends CourseListener { void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage); - void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived); + void startOfTrackingChanged(TimePoint startOfTracking); + + void endOfTrackingChanged(TimePoint endOfTracking); + + void startTimeReceivedChanged(TimePoint startTimeReceived); /** * Fired when the {@link TrackedRace#getStartOfRace() start of race} time point has changed for the tracked race diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java index 254b95bf500..30feacbaf26 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceChangeListener.java @@ -50,7 +50,17 @@ public abstract class AbstractRaceChangeListener implements RaceChangeListener { } @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { + public void startOfTrackingChanged(TimePoint startOfTracking) { + defaultAction(); + } + + @Override + public void endOfTrackingChanged(TimePoint endOfTracking) { + defaultAction(); + } + + @Override + public void startTimeReceivedChanged(TimePoint startTimeReceived) { defaultAction(); } 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 4cfad9e3e35..049ab9a1678 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 @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.NavigableSet; import java.util.Set; +import java.util.function.Consumer; import java.util.logging.Level; import java.util.logging.Logger; @@ -351,80 +352,47 @@ DynamicTrackedRace, GPSTrackListener { notifyListenersWindSourcesToExcludeChanged(windSourcesToExclude); } - private void notifyListenersWindSourcesToExcludeChanged(Iterable windSourcesToExclude) { + private void notifyListeners(Consumer notifyAction) { RaceChangeListener[] listeners; synchronized (getListeners()) { listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); } for (RaceChangeListener listener : listeners) { try { - listener.windSourcesToExcludeChanged(windSourcesToExclude); + notifyAction.accept(listener); } catch (Exception e) { logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersWindSourcesToExcludeChanged(Iterable)", e); + logger.log(Level.SEVERE, "notifyListeners(Consumer notifyAction", e); } } } - private void notifyListenersRaceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, - TimePoint startTimeReceived) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.raceTimesChanged(startOfTracking, endOfTracking, startTimeReceived); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersRaceTimesChanged(TimePoint, TimePoint, TimePoint)", e); - } - } + private void notifyListenersWindSourcesToExcludeChanged(Iterable windSourcesToExclude) { + notifyListeners(listener -> listener.windSourcesToExcludeChanged(windSourcesToExclude)); + } + + private void notifyListenersStartOfTrackingChanged(TimePoint startOfTracking) { + notifyListeners(listener -> listener.startOfTrackingChanged(startOfTracking)); + } + + private void notifyListenersEndOfTrackingChanged(TimePoint endOfTracking) { + notifyListeners(listener -> listener.endOfTrackingChanged(endOfTracking)); + } + + private void notifyListenersStartTimeReceivedChanged(TimePoint startTimeReceived) { + notifyListeners(listener -> listener.startTimeReceivedChanged(startTimeReceived)); } private void notifyListenersStartOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.startOfRaceChanged(oldStartOfRace, newStartOfRace); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersStartOfRaceChanged(TimePoint, TimePoint)", e); - } - } + notifyListeners(listener -> listener.startOfRaceChanged(oldStartOfRace, newStartOfRace)); } private void notifyListenersWaypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.waypointAdded(zeroBasedIndex, waypointThatGotAdded); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersWaypointAdded(int, Waypoint)", e); - } - } + notifyListeners(listener -> listener.waypointAdded(zeroBasedIndex, waypointThatGotAdded)); } private void notifyListenersWaypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.waypointRemoved(zeroBasedIndex, waypointThatGotRemoved); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersWaypointRemoved(int, Waypoint)", e); - } - } + notifyListeners(listener -> listener.waypointRemoved(zeroBasedIndex, waypointThatGotRemoved)); } @Override @@ -440,143 +408,39 @@ DynamicTrackedRace, GPSTrackListener { } private void notifyListeners(GPSFix fix, Mark mark, boolean firstInTrack) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.markPositionChanged(fix, mark, firstInTrack); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListeners(GPSFix, Competitor)", e); - } - } + notifyListeners(listener -> listener.markPositionChanged(fix, mark, firstInTrack)); } private void notifyListeners(GPSFixMoving fix, Competitor competitor) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.competitorPositionChanged(fix, competitor); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListeners(GPSFix, Competitor)", e); - } - } + notifyListeners(listener -> listener.competitorPositionChanged(fix, competitor)); } private void notifyListeners(TrackedRaceStatus status) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.statusChanged(status); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListeners(TrackedRaceStatus)", e); - } - } + notifyListeners(listener -> listener.statusChanged(status)); } private void notifyListeners(Wind wind, WindSource windSource) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.windDataReceived(wind, windSource); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListeners(Wind)", e); - } - } + notifyListeners(listener -> listener.windDataReceived(wind, windSource)); } private void notifyListenersSpeedAveragingChanged(long oldMillisecondsOverWhichToAverageSpeed, long newMillisecondsOverWhichToAverageSpeed) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.speedAveragingChanged(oldMillisecondsOverWhichToAverageSpeed, - newMillisecondsOverWhichToAverageSpeed); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, - "notifyListenersSpeedAveragingChanged(long, long)", e); - } - } + notifyListeners(listener -> listener.speedAveragingChanged(oldMillisecondsOverWhichToAverageSpeed, newMillisecondsOverWhichToAverageSpeed)); } private void notifyListenersWindAveragingChanged(long oldMillisecondsOverWhichToAverageWind, long newMillisecondsOverWhichToAverageWind) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.windAveragingChanged(oldMillisecondsOverWhichToAverageWind, - newMillisecondsOverWhichToAverageWind); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, - "notifyListenersWindAveragingChanged(long, long)", e); - } - } + notifyListeners(listener -> listener.windAveragingChanged(oldMillisecondsOverWhichToAverageWind, newMillisecondsOverWhichToAverageWind)); } private void notifyListenersDelayToLiveChanged(long delayToLiveInMillis) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.delayToLiveChanged(delayToLiveInMillis); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, - "notifyListenersDelayToLiveChanged(long)", e); - } - } + notifyListeners(listener -> listener.delayToLiveChanged(delayToLiveInMillis)); } private void notifyListenersWindRemoved(Wind wind, WindSource windSource) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.windDataRemoved(wind, windSource); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListenersWindRemoved(Wind)", e); - } - } + notifyListeners(listener -> listener.windDataRemoved(wind, windSource)); } private void notifyListeners(Competitor competitor, Map oldMarkPassings, Iterable markPassings) { - RaceChangeListener[] listeners; - synchronized (getListeners()) { - listeners = getListeners().toArray(new RaceChangeListener[getListeners().size()]); - } - for (RaceChangeListener listener : listeners) { - try { - listener.markPassingReceived(competitor, oldMarkPassings, markPassings); - } catch (Exception e) { - logger.log(Level.SEVERE, "RaceChangeListener " + listener + " threw exception " + e.getMessage()); - logger.log(Level.SEVERE, "notifyListeners(MarkPassing)", e); - } - } + notifyListeners(listener -> listener.markPassingReceived(competitor, oldMarkPassings, markPassings)); } @Override @@ -731,7 +595,7 @@ DynamicTrackedRace, GPSTrackListener { if (!Util.equalsWithNull(startTimeReceived, getStartTimeReceived())) { TimePoint oldStartOfRace = getStartOfRace(); super.setStartTimeReceived(startTimeReceived); - notifyListenersRaceTimesChanged(getStartOfTracking(), getEndOfTracking(), getStartTimeReceived()); + notifyListenersStartTimeReceivedChanged(getStartTimeReceived()); TimePoint newStartOfRace = getStartOfRace(); if (!Util.equalsWithNull(oldStartOfRace, newStartOfRace)) { notifyListenersStartOfRaceChanged(oldStartOfRace, newStartOfRace); @@ -744,7 +608,7 @@ DynamicTrackedRace, GPSTrackListener { if ((getStartOfTracking() == null) != (startOfTrackingReceived == null) || (startOfTrackingReceived != null && !getStartOfTracking().equals(startOfTrackingReceived))) { super.setStartOfTrackingReceived(startOfTrackingReceived); - notifyListenersRaceTimesChanged(getStartOfTracking(), getEndOfTracking(), getStartTimeReceived()); + notifyListenersStartOfTrackingChanged(getStartOfTracking()); } } @@ -753,7 +617,7 @@ DynamicTrackedRace, GPSTrackListener { if ((getEndOfTracking() == null) != (endOfTrackingReceived == null) || (endOfTrackingReceived != null && !getEndOfTracking().equals(endOfTrackingReceived))) { super.setEndOfTrackingReceived(endOfTrackingReceived); - notifyListenersRaceTimesChanged(getStartOfTracking(), getEndOfTracking(), getStartTimeReceived()); + notifyListenersEndOfTrackingChanged(getEndOfTracking()); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java index 71442fed35d..9653e6eee75 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java @@ -28,7 +28,6 @@ import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRaceStatus; import com.sap.sailing.domain.tracking.Wind; @@ -74,7 +73,7 @@ import com.sap.sse.common.impl.SerializableComparator; * @author Axel Uhl (d043530) * */ -public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl implements RaceChangeListener { +public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl { private static final long serialVersionUID = -4397496421917807499L; private static final SpeedWithBearing defaultSpeedWithBearing = new KnotSpeedWithBearingImpl(0, new DegreeBearingImpl(0)); @@ -222,6 +221,8 @@ public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl impl */ private final InvalidationInterval scheduledRefreshInterval; + private final CacheInvalidationRaceChangeListener listener; + /** * @param delayForCacheInvalidationInMilliseconds * When mark and boat position changes are received, they cause the cache to be invalidated a certain @@ -257,7 +258,8 @@ public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl impl virtualInternalRawFixes = new EstimatedWindFixesAsNavigableSet(trackedRace); weigher = new PositionAndTimePointWeigher( /* halfConfidenceAfterMilliseconds */WindTrack.WIND_HALF_CONFIDENCE_TIME_MILLIS, WindTrack.WIND_HALF_CONFIDENCE_DISTANCE); - trackedRace.addListener(this); // in particular, race status changes will be notified, unblocking waiting computations after LOADING phase + listener = new CacheInvalidationRaceChangeListener(); + trackedRace.addListener(listener); // in particular, race status changes will be notified, unblocking waiting computations after LOADING phase this.timePointsWithCachedNullResult = new ArrayListNavigableSet( AbstractTimePoint.TIMEPOINT_COMPARATOR); this.timePointsWithCachedNullResultFastContains = new HashSet(); @@ -573,134 +575,138 @@ public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl impl } } - @Override - public void windDataReceived(Wind wind, WindSource windSource) { - invalidateForNewWind(wind, windSource); - } - - @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - } - - @Override - public void delayToLiveChanged(long delayToLiveInMillis) { - } - - private void invalidateForNewWind(Wind wind, WindSource windSource) { - WindTrack windTrack = getTrackedRace().getOrCreateWindTrack(windSource); - // check what the next fixes before and after the one affected are; if they are further than the averagingInterval - // away, extend the invalidation interval accordingly because the entire span up to the next fix may be influenced - // by adding/removing a fix in a sparsely occupied track. See WindTrackImpl.getAveragedWindUnsynchronized(Position p, TimePoint at) - long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageWind(); - final TimePoint timePoint = wind.getTimePoint(); - // See WindComparator; if time is equal, position is compared; for dummy fixes this will create arbitrary order, so ensure time point cannot - // accidentally be equal - Wind lastFixBefore = windTrack.getLastFixBefore(timePoint.minus(1)); // subtract one millisecond to be sure to be before a fix just inserted - Wind firstFixAfter = windTrack.getFirstFixAfter(timePoint.plus(1)); // add one millisecond to be sure to be after a fix just inserted - final WindWithConfidence startOfInvalidation; - if (lastFixBefore == null) { - startOfInvalidation = getTrackedRace().getStartOfTracking() == null ? getDummyFixWithConfidence(new MillisecondsTimePoint(0l)) - : getDummyFixWithConfidence(getTrackedRace().getStartOfTracking()); - } else if (lastFixBefore.getTimePoint().before(timePoint.minus(averagingInterval))) { - startOfInvalidation = new WindWithConfidenceImpl(lastFixBefore, 1.0, timePoint, windSource.getType().useSpeed()); - } else { - startOfInvalidation = getDummyFixWithConfidence(timePoint.minus(averagingInterval)); + /** + * The default action of this listener is to call {@link #clearCache} on the wind track. Some changes don't require this + * and therefore some methods are overridden to do nothing or to react in a more specific way than simply clearing the + * cache. + * + * @author Axel Uhl (D043530) + * + */ + private class CacheInvalidationRaceChangeListener extends AbstractRaceChangeListener { + @Override + protected void defaultAction() { + clearCache(); } - final TimePoint endOfInvalidation; - if (firstFixAfter == null) { - endOfInvalidation = getTrackedRace().getEndOfTracking() == null ? new MillisecondsTimePoint(Long.MAX_VALUE) : getTrackedRace().getEndOfTracking(); - } else if (firstFixAfter.getTimePoint().after(timePoint.plus(averagingInterval))) { - endOfInvalidation = firstFixAfter.getTimePoint(); - } else { - endOfInvalidation = timePoint.plus(averagingInterval); + + @Override + public void windDataReceived(Wind wind, WindSource windSource) { + invalidateForNewWind(wind, windSource); } - scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); - } - @Override - public void windDataRemoved(Wind wind, WindSource windSource) { - invalidateForNewWind(wind, windSource); - } + @Override + public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { + // no action required; we're calculating based on each competitor's individual start time, not the start of + // race + } - @Override - public void windSourcesToExcludeChanged(Iterable windSourcesToExclude) { - clearCache(); - } + @Override + public void startTimeReceivedChanged(TimePoint startTimeReceived) { + } - @Override - public void windAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - clearCache(); - } + @Override + public void delayToLiveChanged(long delayToLiveInMillis) { + } - @Override - public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { - long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageSpeed(); - WindWithConfidence startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint(fix - .getTimePoint().asMillis() - averagingInterval)); - TimePoint endOfInvalidation = new MillisecondsTimePoint(fix.getTimePoint().asMillis() + averagingInterval); - scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); - } - - @Override - public void statusChanged(TrackedRaceStatus newStatus) { - // This virtual wind track's cache can cope with an empty cache after the LOADING phase and populates the cache - // upon request. Invalidation happens also during the LOADING phase, preserving the cache's invariant. - } + private void invalidateForNewWind(Wind wind, WindSource windSource) { + WindTrack windTrack = getTrackedRace().getOrCreateWindTrack(windSource); + // check what the next fixes before and after the one affected are; if they are further than the + // averagingInterval + // away, extend the invalidation interval accordingly because the entire span up to the next fix may be + // influenced + // by adding/removing a fix in a sparsely occupied track. See + // WindTrackImpl.getAveragedWindUnsynchronized(Position p, TimePoint at) + long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageWind(); + final TimePoint timePoint = wind.getTimePoint(); + // See WindComparator; if time is equal, position is compared; for dummy fixes this will create arbitrary + // order, so ensure time point cannot + // accidentally be equal + Wind lastFixBefore = windTrack.getLastFixBefore(timePoint.minus(1)); // subtract one millisecond to be sure + // to be before a fix just inserted + Wind firstFixAfter = windTrack.getFirstFixAfter(timePoint.plus(1)); // add one millisecond to be sure to be + // after a fix just inserted + final WindWithConfidence startOfInvalidation; + if (lastFixBefore == null) { + startOfInvalidation = getTrackedRace().getStartOfTracking() == null ? getDummyFixWithConfidence(new MillisecondsTimePoint( + 0l)) : getDummyFixWithConfidence(getTrackedRace().getStartOfTracking()); + } else if (lastFixBefore.getTimePoint().before(timePoint.minus(averagingInterval))) { + startOfInvalidation = new WindWithConfidenceImpl(lastFixBefore, 1.0, timePoint, windSource + .getType().useSpeed()); + } else { + startOfInvalidation = getDummyFixWithConfidence(timePoint.minus(averagingInterval)); + } + final TimePoint endOfInvalidation; + if (firstFixAfter == null) { + endOfInvalidation = getTrackedRace().getEndOfTracking() == null ? new MillisecondsTimePoint( + Long.MAX_VALUE) : getTrackedRace().getEndOfTracking(); + } else if (firstFixAfter.getTimePoint().after(timePoint.plus(averagingInterval))) { + endOfInvalidation = firstFixAfter.getTimePoint(); + } else { + endOfInvalidation = timePoint.plus(averagingInterval); + } + scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); + } - @Override - public void markPassingReceived(Competitor competitor, Map oldMarkPassings, Iterable markPassings) { - long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageSpeed(); - WindWithConfidence startOfInvalidation; - TimePoint endOfInvalidation; - for (MarkPassing markPassing : markPassings) { - MarkPassing oldMarkPassing = oldMarkPassings.get(markPassing.getWaypoint()); - if (oldMarkPassing != markPassing) { - if (oldMarkPassing == null) { - startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint(markPassing - .getTimePoint().asMillis() - averagingInterval)); - endOfInvalidation = new MillisecondsTimePoint(markPassing.getTimePoint().asMillis() - + averagingInterval); - } else { - TimePoint[] interval = new TimePoint[] { oldMarkPassing.getTimePoint(), markPassing.getTimePoint() }; - Arrays.sort(interval); - startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint(interval[0].asMillis() - - averagingInterval)); - endOfInvalidation = new MillisecondsTimePoint(interval[1].asMillis() + averagingInterval); + @Override + public void windDataRemoved(Wind wind, WindSource windSource) { + invalidateForNewWind(wind, windSource); + } + + @Override + public void competitorPositionChanged(GPSFixMoving fix, Competitor competitor) { + long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageSpeed(); + WindWithConfidence startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint(fix + .getTimePoint().asMillis() - averagingInterval)); + TimePoint endOfInvalidation = new MillisecondsTimePoint(fix.getTimePoint().asMillis() + averagingInterval); + scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); + } + + @Override + public void statusChanged(TrackedRaceStatus newStatus) { + // This virtual wind track's cache can cope with an empty cache after the LOADING phase and populates the + // cache + // upon request. Invalidation happens also during the LOADING phase, preserving the cache's invariant. + } + + @Override + public void markPassingReceived(Competitor competitor, Map oldMarkPassings, + Iterable markPassings) { + long averagingInterval = getTrackedRace().getMillisecondsOverWhichToAverageSpeed(); + WindWithConfidence startOfInvalidation; + TimePoint endOfInvalidation; + for (MarkPassing markPassing : markPassings) { + MarkPassing oldMarkPassing = oldMarkPassings.get(markPassing.getWaypoint()); + if (oldMarkPassing != markPassing) { + if (oldMarkPassing == null) { + startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint(markPassing + .getTimePoint().asMillis() - averagingInterval)); + endOfInvalidation = new MillisecondsTimePoint(markPassing.getTimePoint().asMillis() + + averagingInterval); + } else { + TimePoint[] interval = new TimePoint[] { oldMarkPassing.getTimePoint(), + markPassing.getTimePoint() }; + Arrays.sort(interval); + startOfInvalidation = getDummyFixWithConfidence(new MillisecondsTimePoint( + interval[0].asMillis() - averagingInterval)); + endOfInvalidation = new MillisecondsTimePoint(interval[1].asMillis() + averagingInterval); + } + scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); } - scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); } } - } - - @Override - public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - // no action required; we're calculating based on each competitor's individual start time, not the start of race - } - @Override - public void speedAveragingChanged(long oldMillisecondsOverWhichToAverage, long newMillisecondsOverWhichToAverage) { - clearCache(); - } - - @Override - public void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { - clearCache(); - } - - @Override - public void waypointRemoved(int zeroBasedIndex, Waypoint waypointThatGotRemoved) { - clearCache(); - } - - @Override - public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { - assert fix != null && fix.getTimePoint() != null; - // A mark position change can mean a leg type change. The interval over which the wind estimation is affected - // depends on how the GPS track computes the estimated mark position. Ask it: - Util.Pair interval = getTrackedRace().getOrCreateTrack(mark).getEstimatedPositionTimePeriodAffectedBy(fix); - WindWithConfidence startOfInvalidation = getDummyFixWithConfidence(interval.getA()); - TimePoint endOfInvalidation = interval.getB(); - scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); + @Override + public void markPositionChanged(GPSFix fix, Mark mark, boolean firstInTrack) { + assert fix != null && fix.getTimePoint() != null; + // A mark position change can mean a leg type change. The interval over which the wind estimation is + // affected + // depends on how the GPS track computes the estimated mark position. Ask it: + Util.Pair interval = getTrackedRace().getOrCreateTrack(mark) + .getEstimatedPositionTimePeriodAffectedBy(fix); + WindWithConfidence startOfInvalidation = getDummyFixWithConfidence(interval.getA()); + TimePoint endOfInvalidation = interval.getB(); + scheduleCacheRefresh(startOfInvalidation, endOfInvalidation); + } } /** @@ -798,4 +804,12 @@ public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl impl } } + + /** + * Forwards the information about the wind fix received to the {@link #listener} which will then adjust this + * track's cache. + */ + public void windDataReceived(WindImpl wind, WindSource realWindSource) { + listener.windDataReceived(wind, realWindSource); + } } 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 b1ede371617..80e8c88099b 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 @@ -170,6 +170,7 @@ import com.sap.sailing.server.operationaltransformation.RenameEvent; import com.sap.sailing.server.operationaltransformation.SetDataImportDeleteProgressFromMapTimer; import com.sap.sailing.server.operationaltransformation.TrackRegatta; import com.sap.sailing.server.operationaltransformation.UpdateCompetitor; +import com.sap.sailing.server.operationaltransformation.UpdateEndOfTracking; import com.sap.sailing.server.operationaltransformation.UpdateMarkPassings; import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackDurationOperation; import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackRacesOperation; @@ -177,7 +178,8 @@ import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackStartTim import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackTitleOperation; import com.sap.sailing.server.operationaltransformation.UpdateMediaTrackUrlOperation; import com.sap.sailing.server.operationaltransformation.UpdateRaceDelayToLive; -import com.sap.sailing.server.operationaltransformation.UpdateRaceTimes; +import com.sap.sailing.server.operationaltransformation.UpdateStartOfTracking; +import com.sap.sailing.server.operationaltransformation.UpdateStartTimeReceived; import com.sap.sailing.server.operationaltransformation.UpdateTrackedRaceStatus; import com.sap.sailing.server.operationaltransformation.UpdateWindAveragingTime; import com.sap.sailing.server.operationaltransformation.UpdateWindSourcesToExclude; @@ -1359,8 +1361,18 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport } @Override - public void raceTimesChanged(TimePoint startOfTracking, TimePoint endOfTracking, TimePoint startTimeReceived) { - replicate(new UpdateRaceTimes(getRaceIdentifier(), startOfTracking, endOfTracking, startTimeReceived)); + public void startOfTrackingChanged(TimePoint startOfTracking) { + replicate(new UpdateStartOfTracking(getRaceIdentifier(), startOfTracking)); + } + + @Override + public void endOfTrackingChanged(TimePoint endOfTracking) { + replicate(new UpdateEndOfTracking(getRaceIdentifier(), endOfTracking)); + } + + @Override + public void startTimeReceivedChanged(TimePoint startTimeReceived) { + replicate(new UpdateStartTimeReceived(getRaceIdentifier(), startTimeReceived)); } @Override diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEndOfTracking.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEndOfTracking.java new file mode 100755 index 00000000000..459b2e67fe4 --- /dev/null +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateEndOfTracking.java @@ -0,0 +1,41 @@ +package com.sap.sailing.server.operationaltransformation; + +import java.util.logging.Logger; + +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.domain.tracking.DynamicTrackedRace; +import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; + +public class UpdateEndOfTracking extends AbstractRaceOperation { + private static final long serialVersionUID = 7054690983295760375L; + private static final Logger logger = Logger.getLogger(UpdateEndOfTracking.class.getName()); + private final TimePoint endOfTracking; + + public UpdateEndOfTracking(RegattaAndRaceIdentifier raceIdentifier, TimePoint endOfTracking) { + super(raceIdentifier); + this.endOfTracking = endOfTracking; + } + + @Override + public Void internalApplyTo(RacingEventService toState) throws Exception { + DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); + logger.fine("applying endOfTracking="+endOfTracking+" for "+trackedRace.getRace().getName()); + trackedRace.setEndOfTrackingReceived(endOfTracking); + return null; + } + + @Override + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + // TODO Auto-generated method stub + return null; + } + + @Override + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartOfTracking.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartOfTracking.java new file mode 100755 index 00000000000..2d17ee6d925 --- /dev/null +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartOfTracking.java @@ -0,0 +1,41 @@ +package com.sap.sailing.server.operationaltransformation; + +import java.util.logging.Logger; + +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.domain.tracking.DynamicTrackedRace; +import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.RacingEventServiceOperation; +import com.sap.sse.common.TimePoint; + +public class UpdateStartOfTracking extends AbstractRaceOperation { + private static final long serialVersionUID = 7054690983295760375L; + private static final Logger logger = Logger.getLogger(UpdateStartOfTracking.class.getName()); + private final TimePoint startOfTracking; + + public UpdateStartOfTracking(RegattaAndRaceIdentifier raceIdentifier, TimePoint startOfTracking) { + super(raceIdentifier); + this.startOfTracking = startOfTracking; + } + + @Override + public Void internalApplyTo(RacingEventService toState) throws Exception { + DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); + logger.fine("applying startOfTracking="+startOfTracking+" for "+trackedRace.getRace().getName()); + trackedRace.setStartOfTrackingReceived(startOfTracking); + return null; + } + + @Override + public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { + // TODO Auto-generated method stub + return null; + } + + @Override + public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartTimeReceived.java similarity index 63% rename from java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java rename to java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartTimeReceived.java index 8cc1c3f2f9e..72f2ac341c2 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateRaceTimes.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateStartTimeReceived.java @@ -8,28 +8,19 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sse.common.TimePoint; -public class UpdateRaceTimes extends AbstractRaceOperation { +public class UpdateStartTimeReceived extends AbstractRaceOperation { private static final long serialVersionUID = 7054690983295760375L; - private static final Logger logger = Logger.getLogger(UpdateRaceTimes.class.getName()); - private final TimePoint startOfTracking; - private final TimePoint endOfTracking; + private static final Logger logger = Logger.getLogger(UpdateStartTimeReceived.class.getName()); private final TimePoint startTimeReceived; - public UpdateRaceTimes(RegattaAndRaceIdentifier raceIdentifier, TimePoint startOfTracking, TimePoint endOfTracking, - TimePoint startTimeReceived) { + public UpdateStartTimeReceived(RegattaAndRaceIdentifier raceIdentifier, TimePoint startTimeReceived) { super(raceIdentifier); - this.startOfTracking = startOfTracking; - this.endOfTracking = endOfTracking; this.startTimeReceived = startTimeReceived; } @Override public Void internalApplyTo(RacingEventService toState) throws Exception { DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); - logger.fine("applying startOfTracking="+startOfTracking+" for "+trackedRace.getRace().getName()); - trackedRace.setStartOfTrackingReceived(startOfTracking); - logger.fine("applying endOfTracking="+endOfTracking+" for "+trackedRace.getRace().getName()); - trackedRace.setEndOfTrackingReceived(endOfTracking); logger.fine("applying startTimeReceived="+startTimeReceived+" for "+trackedRace.getRace().getName()); trackedRace.setStartTimeReceived(startTimeReceived); return null; From 908118bd3bbad77d4a1d0cf549992705fb095d85 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 10:37:51 +0100 Subject: [PATCH 108/113] cleanup after commit 30dc9451170ab9fc079b63952422e214b0261431, removing unused code --- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 15 +++++++++++++++ .../com/sap/sse/security/ui/login/LoginView.java | 10 ---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 239713263bc..7551e9d4203 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -3,6 +3,21 @@ + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java index 16a96744a34..69df9ac791d 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/login/LoginView.java @@ -50,23 +50,13 @@ public class LoginView extends Composite { this.userManagementService = userManagementService; this.userService = userService; this.stringMessages = stringMessages; - LoginViewResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); - appNameLabel.setText(appName); userNameTextBox.setWatermark(stringMessages.username()); userNameTextBox.setWatermarkStyleName(LoginViewResources.INSTANCE.css().textInput_watermark()); passwordTextBox.setWatermark(stringMessages.password()); passwordTextBox.setWatermarkStyleName(LoginViewResources.INSTANCE.css().passwordTextInput_watermark()); - String registrationLink = EntryPointLinkFactory.createRegistrationLink(Collections. emptyMap()); - - -// signUpAnchor.setHref(registrationLink); -// -// String x = "javascript:window.open('" + registrationLink + "','_blank');"; -// signUpAnchor.setHref(x); - oAuthPanel.add(new OAuthLogin(userManagementService)); userNameTextBox.setFocus(true); From 26ef1fc4c3f30bd32a0b4aec42871a11aa4b455b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 10:43:17 +0100 Subject: [PATCH 109/113] made the new RaceChangeListener implementations serializable where needed --- .../tracking/impl/TrackBasedEstimationWindTrackImpl.java | 4 +++- .../com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java index 9653e6eee75..d1936011d72 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackBasedEstimationWindTrackImpl.java @@ -583,7 +583,9 @@ public class TrackBasedEstimationWindTrackImpl extends VirtualWindTrackImpl { * @author Axel Uhl (D043530) * */ - private class CacheInvalidationRaceChangeListener extends AbstractRaceChangeListener { + private class CacheInvalidationRaceChangeListener extends AbstractRaceChangeListener implements Serializable { + private static final long serialVersionUID = -6623310087193133466L; + @Override protected void defaultAction() { clearCache(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index c3a5bc71090..40190cf1674 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.tracking.impl; import java.io.IOException; import java.io.ObjectInputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -256,7 +257,9 @@ public class TrackedLegImpl implements TrackedLeg { * @author Axel Uhl (D043530) * */ - private class CacheClearingRaceChangeListener extends AbstractRaceChangeListener { + private class CacheClearingRaceChangeListener extends AbstractRaceChangeListener implements Serializable { + private static final long serialVersionUID = 4455608396760152359L; + @Override protected void defaultAction() { clearCaches(); From 5439757b13d278c63fc14c045599513f4b0a7e4a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 11:25:06 +0100 Subject: [PATCH 110/113] fixed replication operation queueing in Replicator; adjusted PrematureOperationReceiptTest to fail with unfixed queueing --- .../test/PrematureOperationReceiptTest.java | 18 +++++++++++++----- .../test/TrackRaceReplicationTest.java | 4 ++-- .../sap/sse/replication/impl/Replicator.java | 8 +++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java index dc7afd24ef3..6db277f0a23 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java @@ -45,21 +45,29 @@ public class PrematureOperationReceiptTest extends AbstractServerReplicationTest final int[] discardThresholds = new int[] { 17, 23 }; CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, null, discardThresholds, new LowPoint(), null); assertNull(master.getLeaderboardByName(leaderboardName)); + replicationService.initialLoad(); // serialize the master state before the operation has been applied master.apply(createTestLeaderboard); final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName); assertNotNull(masterLeaderboard); Thread.sleep(1000); // wait 1s for JMS to deliver the message and the message to be applied - final Leaderboard nonExistingReplicaLeaderboard = replica.getLeaderboardByName(leaderboardName); - assertNull(nonExistingReplicaLeaderboard); // because replicator is still suspended - replicationService.initialLoad(); + { + final Leaderboard nonExistingReplicaLeaderboard = replica.getLeaderboardByName(leaderboardName); + assertNull(nonExistingReplicaLeaderboard); // because replicator is still suspended + } + { + final Leaderboard replicaLeaderboard = replica.getLeaderboardByName(leaderboardName); + assertNull(replicaLeaderboard); // because replicator is still suspended + } replicator.setSuspended(false); synchronized (replicator) { while (!replicator.isQueueEmpty()) { replicator.wait(); } } - final Leaderboard replicaLeaderboard = replica.getLeaderboardByName(leaderboardName); - assertNotNull(replicaLeaderboard); + { + final Leaderboard replicaLeaderboard = replica.getLeaderboardByName(leaderboardName); + assertNotNull(replicaLeaderboard); + } } } 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 c46acf17977..f4cc0482346 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 @@ -163,7 +163,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { receivedStartAndEndOfTracking = master.getTrackedRace(raceIdentifier).getStartOfTracking() != null && master.getTrackedRace(raceIdentifier).getEndOfTracking() != null; } - Thread.sleep(3000); // kept failing several times for a 1000ms timeout + Thread.sleep(1000); logger.info("verifying replica's state"); TrackedRace replicaTrackedRace = replica.getTrackedRace(raceIdentifier); assertEquals(masterTrackedRace.getStartOfTracking(), replicaTrackedRace.getStartOfTracking()); @@ -171,7 +171,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { MillisecondsTimePoint now = MillisecondsTimePoint.now(); assertFalse(now.equals(replicaTrackedRace.getStartOfRace())); ((DynamicTrackedRace) masterTrackedRace).setStartTimeReceived(now); - Thread.sleep(3000); + Thread.sleep(1000); assertEquals(now, replicaTrackedRace.getStartOfRace()); } diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java index 352a2bcda69..9c47c5c2f9f 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -6,6 +6,7 @@ import java.io.EOFException; import java.io.IOException; import java.io.ObjectInputStream; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -311,7 +312,12 @@ public class Replicator implements Runnable { } private synchronized void queue(OperationWithResult operation, Replicable replicable) { - List>> queue = queueByReplicableIdAsString.get(replicable.getId().toString()); + final String replicableIdAsString = replicable.getId().toString(); + List>> queue = queueByReplicableIdAsString.get(replicableIdAsString); + if (queue == null) { + queue = new ArrayList<>(); + queueByReplicableIdAsString.put(replicableIdAsString, queue); + } if (queue.isEmpty()) { notifyAll(); } From 5c8237b4ce7946ea7bb3400c30b917e4b1d5125c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 20 Nov 2014 11:37:35 +0100 Subject: [PATCH 111/113] upgraded to TracAPI 3.0.7 which fixes bug 2474 --- .../META-INF/MANIFEST.MF | 2 +- java/com.tractrac.clientmodule/README.txt | 39 + .../javadoc/allclasses-frame.html | 40 +- .../javadoc/allclasses-noframe.html | 40 +- .../model/lib/api/AbstractModelTest.html | 4 +- .../tractrac/model/lib/api/IIdentifiable.html | 8 +- .../com/tractrac/model/lib/api/INamed.html | 4 +- .../tractrac/model/lib/api/ModelLocator.html | 8 +- .../model/lib/api/ModelLocatorTest.html | 4 +- .../model/lib/api/ReadParameterFileTest.html | 139 ++- .../api/attachment/AbstractAttachable.html | 8 +- .../lib/api/attachment/AttachmentsTest.html | 4 +- .../model/lib/api/attachment/IAttachable.html | 8 +- .../lib/api/attachment/IAttachmentKey.html | 4 +- .../api/attachment/IAttachmentManager.html | 4 +- .../class-use/AbstractAttachable.html | 8 +- .../attachment/class-use/AttachmentsTest.html | 4 +- .../api/attachment/class-use/IAttachable.html | 25 +- .../attachment/class-use/IAttachmentKey.html | 37 +- .../class-use/IAttachmentManager.html | 8 +- .../lib/api/attachment/package-frame.html | 5 +- .../lib/api/attachment/package-summary.html | 11 +- .../lib/api/attachment/package-tree.html | 13 +- .../model/lib/api/attachment/package-use.html | 10 +- .../lib/api/class-use/AbstractModelTest.html | 4 +- .../lib/api/class-use/IIdentifiable.html | 8 +- .../model/lib/api/class-use/INamed.html | 8 +- .../model/lib/api/class-use/ModelLocator.html | 8 +- .../lib/api/class-use/ModelLocatorTest.html | 4 +- .../api/class-use/ReadParameterFileTest.html | 4 +- .../model/lib/api/data/IControlPassing.html | 4 +- .../model/lib/api/data/IControlPassings.html | 4 +- .../model/lib/api/data/IMessageData.html | 4 +- .../model/lib/api/data/IPosition.html | 4 +- .../model/lib/api/data/IPositionFactory.html | 4 +- .../model/lib/api/data/IPositionOffset.html | 4 +- .../model/lib/api/data/IPositionSnapped.html | 4 +- .../model/lib/api/data/IStartStopData.html | 4 +- .../model/lib/api/data/ITimeData.html | 4 +- .../api/data/class-use/IControlPassing.html | 4 +- .../api/data/class-use/IControlPassings.html | 4 +- .../lib/api/data/class-use/IMessageData.html | 4 +- .../lib/api/data/class-use/IPosition.html | 8 +- .../api/data/class-use/IPositionFactory.html | 4 +- .../api/data/class-use/IPositionOffset.html | 4 +- .../api/data/class-use/IPositionSnapped.html | 4 +- .../api/data/class-use/IStartStopData.html | 4 +- .../lib/api/data/class-use/ITimeData.html | 4 +- .../model/lib/api/data/package-frame.html | 4 +- .../model/lib/api/data/package-summary.html | 4 +- .../model/lib/api/data/package-tree.html | 4 +- .../model/lib/api/data/package-use.html | 4 +- .../model/lib/api/event/AbstractJSONTest.html | 4 +- .../lib/api/event/CreateModelException.html | 12 +- .../api/event/EventsFromClubsJSONTest.html | 4 +- .../lib/api/event/EventsFromJSONTest.html | 4 +- .../model/lib/api/event/ICompetitor.html | 29 +- .../model/lib/api/event/ICompetitorClass.html | 4 +- .../tractrac/model/lib/api/event/IEvent.html | 4 +- .../model/lib/api/event/IEventFactory.html | 4 +- .../tractrac/model/lib/api/event/IRace.html | 43 +- .../model/lib/api/event/IRaceCompetitor.html | 4 +- .../model/lib/api/event/IRaceSerie.html | 4 +- .../tractrac/model/lib/api/event/ITeam.html | 8 +- .../lib/api/event/RaceCompetitorTest.html | 4 +- .../lib/api/event/RaceLoadingException.html | 12 +- .../model/lib/api/event/RaceSerieTest.html | 4 +- .../model/lib/api/event/RaceStatusType.html | 12 +- .../lib/api/event/RacesFromJSONTest.html | 4 +- .../model/lib/api/event/SameEventTest.html | 8 +- .../model/lib/api/event/StartTimeType.html | 363 ++++++++ .../lib/api/event/StartTimeTypeTest.html | 524 ++++++++++++ .../api/event/class-use/AbstractJSONTest.html | 4 +- .../event/class-use/CreateModelException.html | 291 ++++++- .../class-use/EventsFromClubsJSONTest.html | 4 +- .../event/class-use/EventsFromJSONTest.html | 4 +- .../lib/api/event/class-use/ICompetitor.html | 128 ++- .../api/event/class-use/ICompetitorClass.html | 8 +- .../model/lib/api/event/class-use/IEvent.html | 150 +++- .../api/event/class-use/IEventFactory.html | 8 +- .../model/lib/api/event/class-use/IRace.html | 182 +++- .../api/event/class-use/IRaceCompetitor.html | 49 +- .../lib/api/event/class-use/IRaceSerie.html | 8 +- .../model/lib/api/event/class-use/ITeam.html | 8 +- .../event/class-use/RaceCompetitorTest.html | 4 +- .../event/class-use/RaceLoadingException.html | 8 +- .../api/event/class-use/RaceSerieTest.html | 4 +- .../api/event/class-use/RaceStatusType.html | 52 +- .../event/class-use/RacesFromJSONTest.html | 4 +- .../api/event/class-use/SameEventTest.html | 4 +- .../api/event/class-use/StartTimeType.html | 180 ++++ .../event/class-use/StartTimeTypeTest.html | 115 +++ .../model/lib/api/event/package-frame.html | 16 +- .../model/lib/api/event/package-summary.html | 55 +- .../model/lib/api/event/package-tree.html | 24 +- .../model/lib/api/event/package-use.html | 151 +++- .../model/lib/api/metadata/IMetadata.html | 4 +- .../lib/api/metadata/IMetadataContainer.html | 4 +- .../lib/api/metadata/IMetadataFactory.html | 4 +- .../api/metadata/IPropertiesContainer.html | 8 +- .../model/lib/api/metadata/MetadataTest.html | 4 +- .../lib/api/metadata/class-use/IMetadata.html | 8 +- .../class-use/IMetadataContainer.html | 8 +- .../metadata/class-use/IMetadataFactory.html | 8 +- .../class-use/IPropertiesContainer.html | 8 +- .../api/metadata/class-use/MetadataTest.html | 4 +- .../model/lib/api/metadata/package-frame.html | 8 +- .../lib/api/metadata/package-summary.html | 22 +- .../model/lib/api/metadata/package-tree.html | 20 +- .../model/lib/api/metadata/package-use.html | 4 +- .../tractrac/model/lib/api/package-frame.html | 7 +- .../model/lib/api/package-summary.html | 25 +- .../tractrac/model/lib/api/package-tree.html | 15 +- .../tractrac/model/lib/api/package-use.html | 104 ++- .../model/lib/api/route/ControlRouteTest.html | 4 +- .../model/lib/api/route/IControl.html | 8 +- .../model/lib/api/route/IControlPoint.html | 12 +- .../model/lib/api/route/IControlRoute.html | 4 +- .../model/lib/api/route/IPathRoute.html | 4 +- .../lib/api/route/IPathRouteFactory.html | 4 +- .../model/lib/api/route/IPathSegment.html | 4 +- .../tractrac/model/lib/api/route/IRoute.html | 4 +- .../model/lib/api/route/ISegment.html | 8 +- .../model/lib/api/route/ReadRouteTest.html | 4 +- .../lib/api/route/ReadTextPathRouteTests.html | 4 +- .../api/route/class-use/ControlRouteTest.html | 4 +- .../lib/api/route/class-use/IControl.html | 120 ++- .../api/route/class-use/IControlPoint.html | 46 +- .../api/route/class-use/IControlRoute.html | 42 +- .../lib/api/route/class-use/IPathRoute.html | 8 +- .../route/class-use/IPathRouteFactory.html | 8 +- .../lib/api/route/class-use/IPathSegment.html | 8 +- .../model/lib/api/route/class-use/IRoute.html | 45 +- .../lib/api/route/class-use/ISegment.html | 8 +- .../api/route/class-use/ReadRouteTest.html | 4 +- .../class-use/ReadTextPathRouteTests.html | 4 +- .../model/lib/api/route/package-frame.html | 10 +- .../model/lib/api/route/package-summary.html | 33 +- .../model/lib/api/route/package-tree.html | 22 +- .../model/lib/api/route/package-use.html | 48 +- .../model/lib/api/spatial/ICoordinate.html | 4 +- .../lib/api/spatial/ICoordinateSequence.html | 4 +- .../model/lib/api/spatial/IGeoCoordinate.html | 4 +- .../api/spatial/class-use/ICoordinate.html | 4 +- .../class-use/ICoordinateSequence.html | 4 +- .../api/spatial/class-use/IGeoCoordinate.html | 4 +- .../model/lib/api/spatial/package-frame.html | 4 +- .../lib/api/spatial/package-summary.html | 4 +- .../model/lib/api/spatial/package-tree.html | 4 +- .../model/lib/api/spatial/package-use.html | 4 +- .../lib/api/AbstractSubscriptionTest.html | 4 +- .../lib/api/IEventSubscriber.html | 12 +- .../lib/api/ILocalDataServerFactory.html | 4 +- .../lib/api/ILocalDataserver.html | 4 +- .../subscription/lib/api/IRaceSubscriber.html | 8 +- .../subscription/lib/api/ISubscriber.html | 4 +- .../lib/api/ISubscriberFactory.html | 4 +- .../lib/api/ISubscriberListener.html | 12 +- .../subscription/lib/api/ReadHDRaceTest.html | 4 +- .../SubscriberInitializationException.html | 8 +- .../lib/api/SubscriptionLocator.html | 8 +- .../lib/api/SubscriptionLocatorTest.html | 4 +- .../lib/api/SubscriptionTestLocator.html | 4 +- .../class-use/AbstractSubscriptionTest.html | 4 +- .../lib/api/class-use/IEventSubscriber.html | 8 +- .../class-use/ILocalDataServerFactory.html | 4 +- .../lib/api/class-use/ILocalDataserver.html | 4 +- .../lib/api/class-use/IRaceSubscriber.html | 8 +- .../lib/api/class-use/ISubscriber.html | 8 +- .../lib/api/class-use/ISubscriberFactory.html | 8 +- .../api/class-use/ISubscriberListener.html | 21 +- .../lib/api/class-use/ReadHDRaceTest.html | 4 +- .../SubscriberInitializationException.html | 70 +- .../api/class-use/SubscriptionLocator.html | 8 +- .../class-use/SubscriptionLocatorTest.html | 4 +- .../class-use/SubscriptionTestLocator.html | 4 +- .../api/competitor/CompetitorsEventTest.html | 4 +- .../api/competitor/ICompetitorsListener.html | 8 +- .../lib/api/competitor/IPositionListener.html | 4 +- .../competitor/IPositionOffsetListener.html | 4 +- .../competitor/IPositionSnappedListener.html | 8 +- .../lib/api/competitor/PositionEventTest.html | 4 +- .../ReconnectAddingEntriesTest.html | 4 +- .../class-use/CompetitorsEventTest.html | 4 +- .../class-use/ICompetitorsListener.html | 8 +- .../class-use/IPositionListener.html | 8 +- .../class-use/IPositionOffsetListener.html | 8 +- .../class-use/IPositionSnappedListener.html | 8 +- .../class-use/PositionEventTest.html | 4 +- .../class-use/ReconnectAddingEntriesTest.html | 4 +- .../lib/api/competitor/package-frame.html | 10 +- .../lib/api/competitor/package-summary.html | 27 +- .../lib/api/competitor/package-tree.html | 30 +- .../lib/api/competitor/package-use.html | 4 +- .../lib/api/control/ControlsEventTest.html | 4 +- .../api/control/IControlPassingsListener.html | 8 +- .../IControlPointPositionListener.html | 4 +- .../control/IControlRouteChangeListener.html | 4 +- .../lib/api/control/IControlsListener.html | 8 +- .../control/ReconnectAddingControlsTest.html | 4 +- .../ReconnectWithStaticControlsTest.html | 4 +- .../control/StaticControlInSecondRace.html | 4 +- .../lib/api/control/StaticControlTest.html | 4 +- .../api/control/StaticRoutesChangesTest.html | 4 +- .../control/class-use/ControlsEventTest.html | 4 +- .../class-use/IControlPassingsListener.html | 8 +- .../IControlPointPositionListener.html | 8 +- .../IControlRouteChangeListener.html | 8 +- .../control/class-use/IControlsListener.html | 8 +- .../ReconnectAddingControlsTest.html | 4 +- .../ReconnectWithStaticControlsTest.html | 4 +- .../class-use/StaticControlInSecondRace.html | 4 +- .../control/class-use/StaticControlTest.html | 4 +- .../class-use/StaticRoutesChangesTest.html | 4 +- .../lib/api/control/package-frame.html | 13 +- .../lib/api/control/package-summary.html | 46 +- .../lib/api/control/package-tree.html | 33 +- .../lib/api/control/package-use.html | 4 +- .../api/event/IConnectionStatusListener.html | 4 +- .../lib/api/event/IEventMessageListener.html | 4 +- .../api/event/ILiveDataEvent.StatusType.html | 4 +- .../lib/api/event/ILiveDataEvent.html | 4 +- .../subscription/lib/api/event/IMessage.html | 4 +- .../lib/api/event/IServerTimeListener.html | 4 +- .../lib/api/event/IStoredDataEvent.Type.html | 4 +- .../lib/api/event/IStoredDataEvent.html | 4 +- .../class-use/IConnectionStatusListener.html | 4 +- .../class-use/IEventMessageListener.html | 4 +- .../class-use/ILiveDataEvent.StatusType.html | 4 +- .../api/event/class-use/ILiveDataEvent.html | 4 +- .../lib/api/event/class-use/IMessage.html | 4 +- .../event/class-use/IServerTimeListener.html | 4 +- .../class-use/IStoredDataEvent.Type.html | 4 +- .../api/event/class-use/IStoredDataEvent.html | 4 +- .../lib/api/event/package-frame.html | 4 +- .../lib/api/event/package-summary.html | 4 +- .../lib/api/event/package-tree.html | 4 +- .../lib/api/event/package-use.html | 4 +- .../subscription/lib/api/package-frame.html | 10 +- .../subscription/lib/api/package-summary.html | 45 +- .../subscription/lib/api/package-tree.html | 22 +- .../subscription/lib/api/package-use.html | 44 +- .../lib/api/race/IRaceCompetitorListener.html | 4 +- .../lib/api/race/IRaceMessageListener.html | 4 +- .../IRaceStartStopTimesChangeListener.html | 4 +- .../lib/api/race/IRacesListener.html | 8 +- .../race/IStartStopTimesChangeListener.html | 8 +- .../lib/api/race/RaceCompetitorTest.html | 4 +- .../lib/api/race/RacesEventTest.html | 4 +- .../lib/api/race/RacesListener.html | 4 +- .../StaticRaceStartStopTimesChangeTest.html | 4 +- .../class-use/IRaceCompetitorListener.html | 8 +- .../race/class-use/IRaceMessageListener.html | 8 +- .../IRaceStartStopTimesChangeListener.html | 8 +- .../api/race/class-use/IRacesListener.html | 33 +- .../IStartStopTimesChangeListener.html | 8 +- .../race/class-use/RaceCompetitorTest.html | 4 +- .../api/race/class-use/RacesEventTest.html | 4 +- .../lib/api/race/class-use/RacesListener.html | 4 +- .../StaticRaceStartStopTimesChangeTest.html | 4 +- .../lib/api/race/package-frame.html | 11 +- .../lib/api/race/package-summary.html | 31 +- .../lib/api/race/package-tree.html | 31 +- .../lib/api/race/package-use.html | 29 +- .../javadoc/constant-values.html | 4 +- .../javadoc/deprecated-list.html | 9 +- .../javadoc/help-doc.html | 4 +- .../javadoc/index-files/index-1.html | 143 +++- .../javadoc/index-files/index-10.html | 59 +- .../javadoc/index-files/index-11.html | 164 +--- .../javadoc/index-files/index-12.html | 127 ++- .../javadoc/index-files/index-13.html | 270 ++++-- .../javadoc/index-files/index-14.html | 199 ++++- .../javadoc/index-files/index-15.html | 4 +- .../javadoc/index-files/index-16.html | 13 +- .../javadoc/index-files/index-2.html | 8 +- .../javadoc/index-files/index-3.html | 100 ++- .../javadoc/index-files/index-4.html | 22 +- .../javadoc/index-files/index-5.html | 552 +----------- .../javadoc/index-files/index-6.html | 803 +++++++++++------- .../javadoc/index-files/index-7.html | 365 +++++++- .../javadoc/index-files/index-8.html | 30 +- .../javadoc/index-files/index-9.html | 38 +- .../javadoc/index.html | 2 +- .../javadoc/overview-frame.html | 4 +- .../javadoc/overview-summary.html | 4 +- .../javadoc/overview-tree.html | 57 +- .../javadoc/package-list | 0 .../javadoc/resources/background.gif | Bin .../javadoc/resources/tab.gif | Bin .../javadoc/resources/titlebar.gif | Bin .../javadoc/resources/titlebar_end.gif | Bin .../javadoc/serialized-form.html | 4 +- .../javadoc/stylesheet.css | 0 .../com.tractrac.clientmodule/lib/TracAPI.jar | Bin 751407 -> 753694 bytes java/com.tractrac.clientmodule/pom.xml | 2 +- java/com.tractrac.clientmodule/test.sh | 0 297 files changed, 5902 insertions(+), 1955 deletions(-) mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/allclasses-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/INamed.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocatorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ReadParameterFileTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AbstractAttachable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AttachmentsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentKey.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentManager.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AbstractAttachable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AttachmentsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentKey.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentManager.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/AbstractModelTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/IIdentifiable.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/INamed.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocatorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ReadParameterFileTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassing.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassings.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IMessageData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPosition.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionOffset.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionSnapped.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IStartStopData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/ITimeData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassing.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassings.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IMessageData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPosition.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionOffset.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionSnapped.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IStartStopData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/ITimeData.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/AbstractJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/CreateModelException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromClubsJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitor.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitorClass.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEventFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRace.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceCompetitor.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceSerie.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ITeam.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceLoadingException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceSerieTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceStatusType.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RacesFromJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/SameEventTest.html create mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeType.html create mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeTypeTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/AbstractJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/CreateModelException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromClubsJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitor.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitorClass.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEventFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRace.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceCompetitor.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceSerie.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ITeam.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceCompetitorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceLoadingException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceSerieTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceStatusType.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html create mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html create mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadata.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataContainer.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IPropertiesContainer.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/MetadataTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadata.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataContainer.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IPropertiesContainer.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/MetadataTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlPoint.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRouteFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathSegment.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ISegment.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadRouteTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadTextPathRouteTests.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ControlRouteTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControl.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlPoint.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRouteFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathSegment.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IRoute.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ISegment.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadRouteTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadTextPathRouteTests.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataServerFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataserver.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IRaceSubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ReadHDRaceTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriberInitializationException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocatorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionTestLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/AbstractSubscriptionTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IEventSubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataServerFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataserver.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IRaceSubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriber.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberFactory.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ReadHDRaceTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriberInitializationException.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocatorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionTestLocator.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/CompetitorsEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ICompetitorsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionOffsetListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionSnappedListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/PositionEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ReconnectAddingEntriesTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/CompetitorsEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ICompetitorsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionOffsetListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionSnappedListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/PositionEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ReconnectAddingEntriesTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ControlsEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPassingsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPointPositionListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlRouteChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectAddingControlsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectWithStaticControlsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlInSecondRace.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticRoutesChangesTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ControlsEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPassingsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPointPositionListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlRouteChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlsListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectAddingControlsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectWithStaticControlsTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlInSecondRace.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticRoutesChangesTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IConnectionStatusListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IEventMessageListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.StatusType.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IMessage.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IServerTimeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.Type.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IConnectionStatusListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IEventMessageListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.StatusType.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IMessage.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IServerTimeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.Type.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceCompetitorListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceMessageListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceStartStopTimesChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRacesListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IStartStopTimesChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RaceCompetitorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/StaticRaceStartStopTimesChangeTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceCompetitorListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceMessageListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceStartStopTimesChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRacesListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IStartStopTimesChangeListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RaceCompetitorTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesEventTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesListener.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/StaticRaceStartStopTimesChangeTest.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-use.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/constant-values.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/deprecated-list.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/help-doc.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-1.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-10.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-11.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-12.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-13.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-14.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-15.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-16.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-2.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-3.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-4.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-5.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-6.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-7.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-8.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index-files/index-9.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/index.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/overview-frame.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/overview-summary.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/overview-tree.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/package-list mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/resources/background.gif mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/resources/tab.gif mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/resources/titlebar.gif mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/resources/titlebar_end.gif mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/serialized-form.html mode change 100755 => 100644 java/com.tractrac.clientmodule/javadoc/stylesheet.css mode change 100755 => 100644 java/com.tractrac.clientmodule/test.sh diff --git a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF index 822c73ab952..b2f04cadba2 100644 --- a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF +++ b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: TracTrac Client module Bundle-SymbolicName: com.tractrac.clientmodule -Bundle-Version: 3.0.6 +Bundle-Version: 3.0.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: ., lib/TracAPI.jar diff --git a/java/com.tractrac.clientmodule/README.txt b/java/com.tractrac.clientmodule/README.txt index 773478067ae..31ed42bd96f 100644 --- a/java/com.tractrac.clientmodule/README.txt +++ b/java/com.tractrac.clientmodule/README.txt @@ -16,6 +16,45 @@ It contains also some files: - test.sh -> script that compiles the code in the src folder, creates the test.jar library and execute the code of the example. - Manifest.txt -> manifest used to create the test.jar file +******************************************** +************* TracAPI 3.0.7 **************** +******************************************** +This is a final version. It fixes bugs in the implementation and it adds a some features. +These features add methods to the API, but they keep the backward compatibility. +This version provides a new JavaDoc version. + +Release date: 19/11/2014 +Build number: 9436 + +1) New features + + - The IRace interface implements the method getStartTimeType that returns the type of start time. It is an enumerated + value with the values: Individual (if the competitors have an individual start time), RaceStart (if the race + has a race start time) and FirstControl (if the start of the race happens when the competitor passes for + the first control). The value by default is RaceStart. At this moment this value only can be managed at an event + level (in the event manager) but in a future we will add this functionality at a race level (Requested by + Jérome Soussens, 14/10/2014) + - The method IControlPoint.getPosition is deprecated. Use the IControlPointPositionListener.gotControlPointPosition() + to know the position of a control point (Reported by Jorge Piera, 28/10/2014) + - Adding the isNonCompeting() method to the ICompetitor interface. If a competitor is a non competing competitor + doesn't receive control passings attached to it. It only receives positions (Requested by Jérome Soussens, 15/10/2014 and + Axel Uhl, 22/10/2014) + +2) Bugs + + - It checks that the system of messages doesn't generates a BufferOverflow exception. We added a bug on the server + sending wrong strings to the clients and this error thrown an exception on the clients that killed one of threads. + Now the tracapi checks if there is an error encoding the strings and in this case, logs the exeption discarding + the message but the thread, continues running. Anyway the error has been fixed in the server side. (Reported by + Jorge Piera, 30/09/2014) + - If there is a control point without coordinates the lat,lon values are not included in the parameters file + and the library doesn't create the IControlPoint. Now, the library creates the IControlPoint and it returns + the values Double.MAX_VALUE for both the lat and the lon. This position is not sent by the + IControlPointPositionListener.gotControlPointPosition(). (Reported by Jakob Odum, 28/10/2014) + - There is a synchronization bug registering and sending messages using the General Message System. The list + that is used to register the listeners is not a synchronized list. This bug has been fixed (Reported by Axel Uhl, 19/11/2014, + http://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=2474) + ******************************************** ************* TracAPI 3.0.6 **************** ******************************************** diff --git a/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html b/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html old mode 100755 new mode 100644 index 92677dc9fa1..ec62db7c5cf --- a/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -12,7 +12,16 @@

    diff --git a/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html b/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html old mode 100755 new mode 100644 index e699b9aa949..af4a1217590 --- a/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html +++ b/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -12,7 +12,16 @@ diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html old mode 100755 new mode 100644 index d933c2af553..df065359a98 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html @@ -2,9 +2,9 @@ - + AbstractModelTest - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html old mode 100755 new mode 100644 index d3b349bad05..ed98fd29d71 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html @@ -2,9 +2,9 @@ - + IIdentifiable - + @@ -36,7 +36,7 @@
@@ -153,7 +197,7 @@ the order they are declared.
  • Package
  • Class
  • -
  • Tree
  • +
  • Tree
  • Deprecated
  • Index
  • Help
  • diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html old mode 100755 new mode 100644 index 1a5961795ac..15d50868dd2 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html @@ -2,9 +2,9 @@ - + Uses of Class com.tractrac.model.lib.api.event.RacesFromJSONTest - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html old mode 100755 new mode 100644 index 60ec0bfbc71..72aa32477b2 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html @@ -2,9 +2,9 @@ - + Uses of Class com.tractrac.model.lib.api.event.SameEventTest - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html new file mode 100644 index 00000000000..c4ec31b3edf --- /dev/null +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html @@ -0,0 +1,180 @@ + + + + + +Uses of Class com.tractrac.model.lib.api.event.StartTimeType + + + + + + + + + + +
    +

    Uses of Class
    com.tractrac.model.lib.api.event.StartTimeType

    +
    +
    + +
    + + + + + + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html new file mode 100644 index 00000000000..2dcff6710db --- /dev/null +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class com.tractrac.model.lib.api.event.StartTimeTypeTest + + + + + + + + + + +
    +

    Uses of Class
    com.tractrac.model.lib.api.event.StartTimeTypeTest

    +
    +
    No usage of com.tractrac.model.lib.api.event.StartTimeTypeTest
    + + + + + + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html old mode 100755 new mode 100644 index ec287a5348a..5f985492e16 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api.event - + @@ -21,9 +21,21 @@
  • IRaceSerie
  • ITeam
  • +

    Classes

    +

    Enums

    Exceptions