diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index c254ca0bb0f..2153c4602ad 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -268,11 +268,23 @@ 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 +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 +MEMORY=4096m +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 `which tar` cvzf $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO/$SIMPLE_VERSION_INFO.tar.gz * cp $ACDIR/env.sh $PROJECT_HOME/dist/$SIMPLE_VERSION_INFO diff --git a/configuration/sailing b/configuration/sailing index 8ffcf316a34..3bdd32730a2 100755 --- a/configuration/sailing +++ b/configuration/sailing @@ -19,35 +19,21 @@ 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 - + 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 - 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 @@ -64,16 +50,16 @@ 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 + 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 + 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/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/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.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 1e55269b20f..ccc27ad8173 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 @@ -103,7 +103,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; @@ -111,7 +110,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 6194d7a646f..182e30d473b 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 @@ -73,11 +73,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; @@ -102,7 +99,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 bdc2a262885..57bacf58f9a 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 @@ -21,7 +21,6 @@ import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DeviceCom import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DeviceMarkMappingFinder; 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.GPSFixReceivedListener; 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 4eb35b902e5..c2ef1bb59bc 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 @@ -18,7 +18,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.tracking.GPSFixStore; @@ -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 aee965d49d6..9dc45e5ad02 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 @@ -30,11 +30,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/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.racelogtrackingadapter/META-INF/MANIFEST.MF index 0d46e725365..9d8846d6099 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.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 ca242106fb6..5e068c676b3 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 @@ -43,10 +43,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 5544d6480bc..f99225641ff 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 @@ -38,8 +38,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 fdb0e2b9f75..beea49d3265 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 @@ -5,13 +5,13 @@ import java.util.UUID; import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; -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.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 9d47e83fcd9..87823eb0fa7 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 @@ -5,11 +5,11 @@ import java.util.UUID; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; -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.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/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF index 623c6ea3388..ed9dc4586e3 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.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 43792f039c2..09f56c2cb77 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 @@ -13,8 +13,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishedTimeFinder; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; +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 dc534228290..b23ad5385ab 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 @@ -13,8 +13,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishingTimeFinder; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; +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 2210275145b..52282fd3c1c 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 @@ -13,8 +13,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.IndividualRecallFinder; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; +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 c92762a8f90..eb69169daee 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 @@ -14,7 +14,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogProtestStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.ProtestStartTimeFinder; -import com.sap.sailing.domain.common.TimePoint; +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 02f82abe82f..fea4c927df6 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 @@ -13,7 +13,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +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 82c305620d6..159d4d2e075 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 @@ -21,9 +21,9 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceStatusAnalyzer; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure; -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.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 b1f8e94c762..f3d5125c3e7 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 @@ -14,7 +14,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinder; -import com.sap.sailing.domain.common.TimePoint; +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 645a2fbfae8..23607002251 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 @@ -33,11 +33,11 @@ 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; +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 0e7711631f1..017ed42d825 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 @@ -12,7 +12,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventComparator; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +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 41af3e1fc60..91b10656b99 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 @@ -11,7 +11,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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 0f7f072442d..6b602ac2f37 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 @@ -18,10 +18,10 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogChangedVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DenoteForTrackingEvent; -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.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 f1e0166b858..fd127778ce9 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 @@ -29,9 +29,9 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; -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 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 6e85364f547..6b9c6fff5bf 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 @@ -17,10 +17,10 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceCompetitorMappingEvent; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; 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 06ef7638d55..2735aae2172 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 @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; -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 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 f47d82b8b7c..26904d76029 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 @@ -17,9 +17,9 @@ import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMapping; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DeviceCompetitorMappingFinder; 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.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/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF index 1368ec0c8b7..eb48cdd64bd 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.abstractlog, com.sap.sailing.domain.abstractlog.impl, com.sap.sailing.domain.abstractlog.race, diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java index 7c04f9b3817..916c564cc83 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java @@ -5,10 +5,10 @@ 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.tracking.Track; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.WithID; /** * Special kind of {@link Track} for recording {@link AbstractLogEvent}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java index 7fc3beb1f4a..412b6307ac1 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java @@ -3,8 +3,8 @@ package com.sap.sailing.domain.abstractlog; import java.io.Serializable; 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/abstractlog/impl/AbstractLogEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogEventImpl.java index c3be178f6bd..d6e50866d1c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogEventImpl.java @@ -4,7 +4,7 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public abstract class AbstractLogEventImpl implements AbstractLogEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/RevokeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/RevokeEventImpl.java index 042688493e0..d4e44c5f421 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/RevokeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/RevokeEventImpl.java @@ -4,7 +4,7 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.RevokeEvent; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public abstract class RevokeEventImpl extends AbstractLogEventImpl implements RevokeEvent { private static final long serialVersionUID = -30864810737555657L; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java index f58304745bc..84199147b1f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race; import com.sap.sailing.domain.abstractlog.AbstractLog; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.WithID; /** * "Fix" validity is decided based on the {@link #getCurrentPassId() current pass}. The validity is not cached. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java index 5302a5f5326..8ebca9345cb 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java @@ -19,11 +19,11 @@ 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; 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/abstractlog/race/RaceLogEventRestoreFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java index 70de1e72e28..70b2c2942bc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java @@ -19,11 +19,11 @@ 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; 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/abstractlog/race/RaceLogProtestStartTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogProtestStartTimeEvent.java index 471aca7e280..50aeeaefd38 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogProtestStartTimeEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogProtestStartTimeEvent.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.abstractlog.race; -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/abstractlog/race/RaceLogStartTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartTimeEvent.java index 19ee2a7d72d..73379f4041c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartTimeEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartTimeEvent.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race; -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/abstractlog/race/analyzing/impl/FinishedTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishedTimeFinder.java index f1206e55fa1..68e155adc8a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishedTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishedTimeFinder.java @@ -3,8 +3,8 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; +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/abstractlog/race/analyzing/impl/FinishingTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishingTimeFinder.java index 7279ea4e2c7..b5b34628d6f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishingTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/FinishingTimeFinder.java @@ -3,8 +3,8 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; +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/abstractlog/race/analyzing/impl/IndividualRecallDisplayedFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallDisplayedFinder.java index 1f57bffd577..5bcc7715a4e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallDisplayedFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallDisplayedFinder.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; +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/abstractlog/race/analyzing/impl/IndividualRecallFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallFinder.java index 0b9237213e0..95518f1f3a9 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallFinder.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/IndividualRecallRemovedFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallRemovedFinder.java index db9f456ffac..4e5e763dd1f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallRemovedFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IndividualRecallRemovedFinder.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; +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/abstractlog/race/analyzing/impl/IsFinishedAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsFinishedAnalyzer.java index e7cd28a5eec..ac547b18688 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsFinishedAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsFinishedAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/IsInFinishingPhaseAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsInFinishingPhaseAnalyzer.java index 56e6134d886..20f8a42a147 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsInFinishingPhaseAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsInFinishingPhaseAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java index 2cb774ec580..ef15f88cfd0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/IsIndividualRecallDisplayedAnalyzer.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/LastFlagsFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java index bb4ca8c637e..0d25623da77 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java @@ -9,7 +9,7 @@ import java.util.List; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/ProtestStartTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ProtestStartTimeFinder.java index eac0d720cfb..d58d5bc1d0b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ProtestStartTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ProtestStartTimeFinder.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogProtestStartTimeEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java index e63af0e1a73..d43cba46956 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java @@ -7,10 +7,10 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogRaceStatusEventComparator; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure; -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.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/abstractlog/race/analyzing/impl/StartTimeFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartTimeFinder.java index 0b9bf4caef4..23957a79541 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartTimeFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartTimeFinder.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/NoAddingRaceLogWrapper.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java index 1e9d9ec6d87..f66c42f81db 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java @@ -14,9 +14,9 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; -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.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/abstractlog/race/impl/RaceLogCourseAreaChangeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseAreaChangeEventImpl.java index 0cf11985a70..c56772b5540 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseAreaChangeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseAreaChangeEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogCourseDesignChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseDesignChangedEventImpl.java index e75c4fdb6e2..5fd11a31252 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseDesignChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogCourseDesignChangedEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogEventFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java index 9c89f2d4e14..af29e3d106f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java @@ -45,12 +45,12 @@ 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; 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/abstractlog/race/impl/RaceLogEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventImpl.java index f233ef1f0a3..67215a51a0b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.impl.AbstractLogEventImpl; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public abstract class RaceLogEventImpl extends AbstractLogEventImpl implements RaceLogEvent { private final List involvedBoats; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java index ced34828527..9224fee263f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java @@ -42,11 +42,11 @@ 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; 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/abstractlog/race/impl/RaceLogFinishPositioningConfirmedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningConfirmedEventImpl.java index 08e20d6f062..7ce91ea3d68 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningConfirmedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningConfirmedEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.CompetitorResults; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogFinishPositioningEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningEventImpl.java index 0874398112a..6d8b84c3734 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.CompetitorResults; import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogFinishPositioningListChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningListChangedEventImpl.java index eae0cff556e..0a744893e8b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningListChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFinishPositioningListChangedEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.CompetitorResults; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogFlagEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFlagEventImpl.java index 12dbe6b5de7..2ce2aba9444 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFlagEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogFlagEventImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; 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.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/abstractlog/race/impl/RaceLogGateLineOpeningTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogGateLineOpeningTimeEventImpl.java index 45184a91d8f..77c6a3a72b3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogGateLineOpeningTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogGateLineOpeningTimeEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogGateLineOpeningTimeEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogPassChangeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPassChangeEventImpl.java index 53ce10682cb..ede283892a7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPassChangeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPassChangeEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogPassChangeEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogPathfinderEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPathfinderEventImpl.java index ac30e38c792..821ec6d6ec3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPathfinderEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogPathfinderEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogPathfinderEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogProtestStartTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogProtestStartTimeEventImpl.java index 736b729201b..5035bbde253 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogProtestStartTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogProtestStartTimeEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogProtestStartTimeEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/impl/RaceLogRaceStatusEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRaceStatusEventImpl.java index b8a8e14a8e2..69a92a9b13a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRaceStatusEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRaceStatusEventImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; 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.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/abstractlog/race/impl/RaceLogRevokeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRevokeEventImpl.java index 0252d6cfc15..262fad2c28f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRevokeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogRevokeEventImpl.java @@ -9,7 +9,7 @@ import com.sap.sailing.domain.abstractlog.impl.RevokeEventImpl; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogRevokeEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class RaceLogRevokeEventImpl extends RevokeEventImpl implements RaceLogRevokeEvent { private final int passId; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartProcedureChangedEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartProcedureChangedEventImpl.java index 5f06a2c1d66..896b6c723af 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartProcedureChangedEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartProcedureChangedEventImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogStartProcedureChangedEvent; 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.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/abstractlog/race/impl/RaceLogStartTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartTimeEventImpl.java index db604d1273e..3d926a02016 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartTimeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogStartTimeEventImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; 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.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/abstractlog/race/impl/RaceLogWindFixEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogWindFixEventImpl.java index be90561823b..36b54350b32 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogWindFixEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogWindFixEventImpl.java @@ -7,8 +7,8 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogWindFixEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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/abstractlog/race/scoring/impl/AdditionalScoringInformationEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/scoring/impl/AdditionalScoringInformationEventImpl.java index 16ec96e4ae6..73756f06931 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/scoring/impl/AdditionalScoringInformationEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/scoring/impl/AdditionalScoringInformationEventImpl.java @@ -9,7 +9,7 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformationEvent; import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformationType; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/RaceState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/RaceState.java index 4643fd0ed8a..de248e37fc1 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/RaceState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/RaceState.java @@ -10,10 +10,10 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProce import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedurePrerequisiteAutoResolver; 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.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/abstractlog/race/state/ReadonlyRaceState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/ReadonlyRaceState.java index 0708a7f49eb..94efa7c6a6f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/ReadonlyRaceState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/ReadonlyRaceState.java @@ -10,9 +10,9 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure; 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.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/abstractlog/race/state/impl/RaceStateEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateEventImpl.java index 8b657305ba4..7d5c214339e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateEventImpl.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.state.impl; import com.sap.sailing.domain.abstractlog.race.state.RaceStateEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/impl/RaceStateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java index ef6a633f5a4..6afe7fb5f9a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java @@ -21,12 +21,12 @@ 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; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; 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/abstractlog/race/state/impl/ReadonlyRaceStateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/ReadonlyRaceStateImpl.java index b84fdb9e922..02d552065ff 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/ReadonlyRaceStateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/ReadonlyRaceStateImpl.java @@ -28,10 +28,10 @@ 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.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/abstractlog/race/state/racingprocedure/FlagPoleState.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/FlagPoleState.java index 05ab8ce3d83..66c6bd04431 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/FlagPoleState.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/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/abstractlog/race/state/racingprocedure/RacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/RacingProcedure.java index 6a33617240b..1eba9f3b8fc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/RacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/RacingProcedure.java @@ -1,6 +1,6 @@ package com.sap.sailing.domain.abstractlog.race.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/abstractlog/race/state/racingprocedure/ReadonlyRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ReadonlyRacingProcedure.java index 3c84ebcd1cd..cc743dfc056 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ReadonlyRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ReadonlyRacingProcedure.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.abstractlog.race.state.RaceStateEventProcessor; import com.sap.sailing.domain.abstractlog.race.state.RaceStateEventScheduler; import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState; 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.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/abstractlog/race/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java index d7bbfdc6fee..12c064844a6 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/basic/impl/BasicRacingProcedureImpl.java @@ -18,9 +18,9 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRa import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureChangedListeners; 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.sse.common.TimePoint; public class BasicRacingProcedureImpl extends BaseRacingProcedure { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java index e1e48dc119b..9a423a8d420 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/ReadonlyESSRacingProcedure.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ess; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java index b5c94ff1632..6ffb0b7d881 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/ess/impl/ESSRacingProcedureImpl.java @@ -21,10 +21,10 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRa import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureChangedListeners; 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; +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/abstractlog/race/state/racingprocedure/gate/GateStartRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/GateStartRacingProcedure.java index a144cde3d74..09bb90ff037 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/GateStartRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/GateStartRacingProcedure.java @@ -1,7 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java index 53b6942ba0f..ba112e6bfbd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/ReadonlyGateStartRacingProcedure.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure; import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java index 0416446e425..48ad0823aed 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/BaseGateStartPrerequisite.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.impl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRacingProcedurePrerequisite; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java index 8eb5a2f8376..6b85a622af3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateLaunchTimePrerequisite.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.impl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java index a6dca61c4c3..0165aa169cd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/GateStartRacingProcedureImpl.java @@ -23,10 +23,10 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRa import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.NoMorePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureChangedListeners; 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; +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/abstractlog/race/state/racingprocedure/gate/impl/PathfinderPrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/PathfinderPrerequisite.java index 5df56f6f4af..45956155fe7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/PathfinderPrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/gate/impl/PathfinderPrerequisite.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.impl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedure.java index 24b569c3db8..ea11b0f6666 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedure.java @@ -26,8 +26,8 @@ import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEvents; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedureChangedListener; 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.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/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java index 7162b9a0c10..b5113d147d4 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/BaseRacingProcedurePrerequisite.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/rrs26/RRS26RacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/RRS26RacingProcedure.java index 62a382794f8..2072446d447 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/RRS26RacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/RRS26RacingProcedure.java @@ -1,8 +1,8 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; +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/abstractlog/race/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java index 84db9a72ad9..f39a20e8728 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/BaseRRS26Prerequisite.java @@ -3,7 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.impl import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java index 852a553cdb8..0ffd4522e5a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/RRS26RacingProcedureImpl.java @@ -22,10 +22,10 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.Racing import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26ChangedListener; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure; 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; +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/abstractlog/race/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java index a1a98b41222..09376d7cc91 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/rrs26/impl/StartmodePrerequisite.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.impl import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; +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/abstractlog/race/tracking/CloseOpenEndedDeviceMappingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/CloseOpenEndedDeviceMappingEvent.java index 13bb92d0110..79967ff54df 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/CloseOpenEndedDeviceMappingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/CloseOpenEndedDeviceMappingEvent.java @@ -4,7 +4,7 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.Revokable; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/DeviceMapping.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMapping.java index 91faedcad53..76fe4547104 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMapping.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMapping.java @@ -6,7 +6,7 @@ import java.util.List; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DeviceMappingFinder; import com.sap.sailing.domain.base.Timed; import com.sap.sailing.domain.common.TimeRange; -import com.sap.sailing.domain.common.WithID; +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/abstractlog/race/tracking/DeviceMappingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMappingEvent.java index 1c8c533d3f6..1b206ae2490 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMappingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/DeviceMappingEvent.java @@ -5,8 +5,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder; 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.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/abstractlog/race/tracking/RegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RegisterCompetitorEvent.java index b10cc457a78..af42482ae87 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RegisterCompetitorEvent.java @@ -4,14 +4,14 @@ import com.sap.sailing.domain.abstractlog.Revokable; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sse.common.IsManagedByCache; /** * Register a competitor for that race using the {@link RaceLog} in racelog-tracked races. * * 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.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DeviceMappingFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DeviceMappingFinder.java index 2a09fbdfa64..b9ec4305e45 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DeviceMappingFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DeviceMappingFinder.java @@ -16,10 +16,10 @@ import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMapping; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; import com.sap.sailing.domain.abstractlog.race.tracking.impl.DeviceMappingImpl; -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.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/abstractlog/race/tracking/analyzing/impl/LastPingMappingEventFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/LastPingMappingEventFinder.java index 3591b39168f..62d49a59f45 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/LastPingMappingEventFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/LastPingMappingEventFinder.java @@ -4,7 +4,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; -import com.sap.sailing.domain.common.WithID; +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/abstractlog/race/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java index bcfe0a14605..53503568b16 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/OpenEndedDeviceMappingCloser.java @@ -11,8 +11,8 @@ import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.CloseOpenEndedDeviceMappingEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMapping; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; -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; /** * 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/abstractlog/race/tracking/events/AbstractDeviceMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/AbstractDeviceMappingEventImpl.java index 6b53ce22cb9..84318b98880 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/AbstractDeviceMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/AbstractDeviceMappingEventImpl.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; import com.sap.sailing.domain.base.Competitor; -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; public abstract class AbstractDeviceMappingEventImpl extends RaceLogEventImpl implements DeviceMappingEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java index a95451c5544..a0172105878 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/CloseOpenEndedDeviceMappingEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.CloseOpenEndedDeviceMappingEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/DefineMarkEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DefineMarkEventImpl.java index 7edad5f7709..7bd86161414 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DefineMarkEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DefineMarkEventImpl.java @@ -9,7 +9,7 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DefineMarkEvent; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/DenoteForTrackingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DenoteForTrackingEventImpl.java index 05efe4b1b6c..465a6625825 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DenoteForTrackingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DenoteForTrackingEventImpl.java @@ -9,7 +9,7 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DenoteForTrackingEvent; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/DeviceCompetitorMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceCompetitorMappingEventImpl.java index 79695187551..a4100857b52 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceCompetitorMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceCompetitorMappingEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceCompetitorMappingEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/DeviceMarkMappingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceMarkMappingEventImpl.java index a0c090bda1f..c22ec2d4086 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceMarkMappingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/DeviceMarkMappingEventImpl.java @@ -7,7 +7,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMarkMappingEvent; import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/RegisterCompetitorEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RegisterCompetitorEventImpl.java index 9578bd3b3b8..667e99da2d6 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RegisterCompetitorEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RegisterCompetitorEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.RegisterCompetitorEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/events/StartTrackingEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/StartTrackingEventImpl.java index 9ff64b36d99..aece2279488 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/StartTrackingEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/StartTrackingEventImpl.java @@ -8,7 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.StartTrackingEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; +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/abstractlog/race/tracking/impl/DeviceMappingImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/DeviceMappingImpl.java index a88fc877eb0..838450a7753 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/DeviceMappingImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/DeviceMappingImpl.java @@ -7,10 +7,10 @@ import java.util.List; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMapping; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; -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.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/abstractlog/regatta/RegattaLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLog.java index d9f2911dfef..9630398be8e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLog.java @@ -2,8 +2,8 @@ package com.sap.sailing.domain.abstractlog.regatta; import com.sap.sailing.domain.abstractlog.AbstractLog; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.tracking.Track; +import com.sap.sse.common.WithID; /** * Special kind of {@link Track} for recording {@link RegattaLogEvent}s. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventRestoreFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventRestoreFactory.java index c57801a38c7..ad465b8097c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventRestoreFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventRestoreFactory.java @@ -4,7 +4,7 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.regatta.impl.RegattaLogEventRestoreFactoryImpl; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public interface RegattaLogEventRestoreFactory extends RegattaLogEventFactory { RegattaLogEventRestoreFactory INSTANCE = new RegattaLogEventRestoreFactoryImpl(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventFactoryImpl.java index 1fa22724adc..6f62457cde8 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventFactoryImpl.java @@ -6,7 +6,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventFactory; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogRevokeEvent; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RegattaLogEventFactoryImpl implements RegattaLogEventFactory { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventImpl.java index 6a7946489cd..603fd909f59 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventImpl.java @@ -6,7 +6,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.impl.AbstractLogEventImpl; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public abstract class RegattaLogEventImpl extends AbstractLogEventImpl implements RegattaLogEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventRestoreFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventRestoreFactoryImpl.java index ffc5182b427..e5cfbd0a454 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventRestoreFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventRestoreFactoryImpl.java @@ -5,7 +5,7 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventRestoreFactory; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogRevokeEvent; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class RegattaLogEventRestoreFactoryImpl extends RegattaLogEventFactoryImpl implements RegattaLogEventRestoreFactory { @Override diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogRevokeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogRevokeEventImpl.java index f1ee37f11f1..1ecd755d0cc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogRevokeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogRevokeEventImpl.java @@ -6,7 +6,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.impl.RevokeEventImpl; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogRevokeEvent; -import com.sap.sailing.domain.common.TimePoint; +import com.sap.sse.common.TimePoint; public class RegattaLogRevokeEventImpl extends RevokeEventImpl implements RegattaLogRevokeEvent { private static final long serialVersionUID = -3470191515219206588L; 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..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,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.sailing.domain.common.TimePoint; +import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.Named; +import com.sap.sse.common.TimePoint; -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..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,11 +1,12 @@ 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.IsManagedByCache; import com.sap.sse.common.Named; +import com.sap.sse.common.WithID; -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/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 cbed3e691cd..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,8 +2,9 @@ package com.sap.sailing.domain.base; import java.util.UUID; -import com.sap.sailing.domain.common.WithID; +import com.sap.sse.common.IsManagedByCache; 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 @@ -12,6 +13,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/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 acdc25c24f1..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,8 @@ 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.IsManagedByCache; +import com.sap.sse.common.WithID; /** @@ -11,7 +12,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..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,10 +1,11 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.common.CountryCode; +import com.sap.sse.common.IsManagedByCache; 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/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 cf9f7cbf82f..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,8 +2,9 @@ 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.IsManagedByCache; 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 @@ -13,7 +14,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..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 @@ -2,9 +2,10 @@ package com.sap.sailing.domain.base.configuration; import java.io.Serializable; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +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.common.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 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..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 @@ -5,11 +5,11 @@ 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.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.common.IsManagedByCache; /** * Matches a set of {@link DeviceConfigurationIdentifier}s. @@ -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..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 @@ -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.IsManagedBySharedDomainFactory; 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.common.IsManagedByCache; /** * Matches a single {@link DeviceConfigurationIdentifier}. @@ -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..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 @@ -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.IsManagedBySharedDomainFactory; import com.sap.sailing.domain.base.SharedDomainFactory; +import com.sap.sse.common.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 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/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/NationalityImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/NationalityImpl.java index e57a9eca655..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 @@ -2,11 +2,11 @@ package com.sap.sailing.domain.base.impl; import java.io.InputStream; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; 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.common.IsManagedByCache; public class NationalityImpl implements Nationality { private static final long serialVersionUID = 238906193483424259L; @@ -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/base/impl/SharedDomainFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/SharedDomainFactoryImpl.java index dd3f636da28..8ec99ddc5ed 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/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/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.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/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.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/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.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/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.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/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(); 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 b8fc78d0738..165831d1098 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 @@ -45,13 +45,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 d9d7ad45f91..13a870ee29a 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 @@ -32,7 +32,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 a2fc06b4b56..7a2195e3f03 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 @@ -25,7 +25,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.tracking.GPSFixStore; @@ -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/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.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..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.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.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.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..8c3b7fb5873 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 @@ -2,8 +2,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; @@ -28,8 +27,4 @@ public interface TracTracControlPoint extends WithID { String getShortName(); boolean getHasTwoPoints(); - - Position getMark1Position(); - - Position getMark2Position(); } 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/ControlPointAdapter.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/ControlPointAdapter.java index a09de2eb6ae..d703f326dcb 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/ControlPointAdapter.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/ControlPointAdapter.java @@ -2,8 +2,6 @@ package com.sap.sailing.domain.tractracadapter.impl; import java.util.UUID; -import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.impl.DegreePosition; import com.sap.sailing.domain.tractracadapter.TracTracControlPoint; import com.tractrac.model.lib.api.route.IControl; @@ -50,21 +48,4 @@ public class ControlPointAdapter extends AbstractWithID implements TracTracContr public boolean getHasTwoPoints() { return controlPoint.isMultiple(); } - - @Override - public Position getMark1Position() { - return new DegreePosition(controlPoint.getControlPoints().get(0).getPosition().getLatitude(), controlPoint.getControlPoints().get(0).getPosition().getLongitude()); - } - - @Override - public Position getMark2Position() { - Position result; - if (getHasTwoPoints()) { - result = new DegreePosition(controlPoint.getControlPoints().get(1).getPosition().getLatitude(), controlPoint.getControlPoints().get(1).getPosition().getLongitude()); - } else { - result = null; - } - return result; - } - } 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..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 @@ -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; @@ -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.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/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF index d88e05684a6..ca5fb94e6b8 100644 --- a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF @@ -33,4 +33,6 @@ 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, + 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 a9bad5f525b..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 @@ -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,9 @@ 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; public interface DomainFactory extends SharedDomainFactory { /** @@ -35,10 +37,22 @@ 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);
+     * 
*/ - 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 a8419ea6e64..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/ObjectInputStreamResolvingAgainstDomainFactory.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.sap.sailing.domain.base; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectStreamClass; - -/** - * 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 IsManagedBySharedDomainFactory) { - result = ((IsManagedBySharedDomainFactory) o).resolve(getDomainFactory()); - } else { - result = o; - } - return result; - } -} 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..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; @@ -23,7 +22,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 +32,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 +57,10 @@ 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; +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/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/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.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 d9df5650770..93fa4dacce7 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 @@ -11,25 +11,17 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.TimePoint; -import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.leaderboard.caching.LeaderboardCache; 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; @@ -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/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..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 @@ -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; @@ -27,12 +26,13 @@ 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 - * {@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 1dabb474c16..833cad901f5 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 @@ -36,13 +36,11 @@ 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; 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; @@ -52,8 +50,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; import com.sap.sailing.domain.common.dto.LeaderboardDTO; @@ -61,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; @@ -72,7 +67,6 @@ import com.sap.sailing.domain.leaderboard.caching.LeaderboardDTOCache; import com.sap.sailing.domain.leaderboard.caching.LeaderboardDTOCalculationReuseCache; import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater; 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; @@ -82,16 +76,18 @@ 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; -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 @@ -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/leaderboard/impl/DefaultFleetImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DefaultFleetImpl.java index 34635a370c2..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 @@ -1,11 +1,11 @@ package com.sap.sailing.domain.leaderboard.impl; -import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; 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.common.IsManagedByCache; -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 0753e0de06a..95979bb56e6 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 @@ -13,7 +13,6 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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.Leaderboard; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; +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 @@ -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/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/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/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 c132f06b630..01e488a0564 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 @@ -3,7 +3,7 @@ package com.sap.sailing.domain.trackfiles; import java.util.UUID; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; -import com.sap.sailing.domain.common.TimePoint; +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 b601611e416..e6d3ce02b18 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 @@ -5,9 +5,9 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; -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.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..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 @@ -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 { @@ -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/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 98332337845..06b1dc85562 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 @@ -25,13 +25,13 @@ 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; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.dto.TrackedRaceDTO; 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..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 @@ -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,63 +12,106 @@ 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; +/** + * 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) { + public void startOfTrackingChanged(TimePoint startOfTracking) { + defaultAction(); + } + + @Override + public void endOfTrackingChanged(TimePoint endOfTracking) { + defaultAction(); + } + + @Override + public void startTimeReceivedChanged(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/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 95e1b281fc7..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 @@ -3,13 +3,13 @@ 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.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.IsManagedByCache; +import com.sap.sse.common.TimePoint; public class DummyMarkPassingWithTimePointOnly implements MarkPassing { private static final long serialVersionUID = -5494669910047887984L; @@ -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.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 4bd951d286c..36d6fb8a160 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; @@ -29,11 +30,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.tracking.GPSFixStore; @@ -57,7 +56,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 { @@ -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/DynamicTrackedRaceLogListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java index 616fd234577..cfd7b02e66f 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 @@ -14,13 +14,13 @@ import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinder; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.WindFixesFinder; import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; 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; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; 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..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 @@ -18,21 +18,16 @@ 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; -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; @@ -41,8 +36,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 @@ -74,7 +73,7 @@ import com.sap.sse.common.Util.Pair; * @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,140 @@ 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) { - } + /** + * 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 implements Serializable { + private static final long serialVersionUID = -6623310087193133466L; - @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)); + @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 +806,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.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..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; @@ -14,21 +15,14 @@ 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; 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; -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; @@ -36,9 +30,10 @@ 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 { +public class TrackedLegImpl implements TrackedLeg { private static final long serialVersionUID = -1944668527284130545L; private final static Logger logger = Logger.getLogger(TrackedLegImpl.class.getName()); @@ -58,7 +53,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 +245,39 @@ 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 implements Serializable { + private static final long serialVersionUID = 4455608396760152359L; - @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 + @Override + protected void defaultAction() { + clearCaches(); + } - @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 - } + /** + * no-op; the leg doesn't mind the tracked race's status being updated + */ + @Override + public void statusChanged(TrackedRaceStatus newStatus) { + } - @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 +286,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.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 eb802d99aea..37e5bcad38b 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 @@ -52,7 +52,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; @@ -64,7 +63,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; @@ -79,7 +77,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.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.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.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 ad98b66cfd7..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"/> - - - - - - + + + + + + + + + + + + + + + + + + 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 e06c7b1a6ba..c979bcb2cd2 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 @@ -30,7 +30,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.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..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; @@ -34,10 +34,12 @@ 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.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.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; public class SailingServiceImplMock extends SailingServiceImpl { private static final long serialVersionUID = 8564037671550730455L; @@ -63,16 +65,15 @@ public class SailingServiceImplMock extends SailingServiceImpl { @SuppressWarnings("unchecked") ServiceTracker result = mock(ServiceTracker.class); try { - final ReplicationServiceImpl replicationService = new ReplicationServiceImpl("test exchange", "localhost", 0, new ReplicationInstancesManager()) { - @Override - protected ServiceTracker getRacingEventServiceTracker() { - @SuppressWarnings("unchecked") - ServiceTracker result = (ServiceTracker) 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/.settings/com.google.gwt.eclipse.core.prefs b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs index 43b1302d8d3..6a92d8b134a 100755 --- a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs +++ b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 entryPointModules= filesCopiedToWebInfLib=gwt-servlet.jar -gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDMgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5TaW11bGF0b3I8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuTGVhZGVyYm9hcmQ8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuUG9sYXJTaGVldHM8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuVmlkZW9Qb3B1cDwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5SZWdhdHRhT3ZlcnZpZXc8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuU3BlY3RhdG9yPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLlR2VmlldzwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5BZG1pbkNvbnNvbGU8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuTGVhZGVyYm9hcmRFZGl0aW5nPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLllvdXR1YmVQb3B1cDwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5EYXRhTWluaW5nPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LkhvbWU8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuUmFjZUJvYXJkPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LkF1dG9QbGF5PC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\= +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDMgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5BZG1pbkNvbnNvbGU8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QuQXV0b1BsYXk8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuRGF0YU1pbmluZzwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC5Ib21lPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLkxlYWRlcmJvYXJkPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLkxlYWRlcmJvYXJkRWRpdGluZzwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5Qb2xhclNoZWV0czwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5SYWNlQm9hcmQ8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuUmVnYXR0YU92ZXJ2aWV3PC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLlNpbXVsYXRvcjwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5TcGVjdGF0b3I8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuVmlkZW9Qb3B1cDwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+ 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/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index a41b9e4dcc0..2221b3ebd14 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,29 @@ 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, + 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/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index d723e06dd50..0825d38b2c3 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 @@ -3,10 +3,6 @@ - - - - @@ -19,42 +15,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 5156accc06d..55ea7b4ab73 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -3,6 +3,21 @@ + + + + + + + + + + + + + + + @@ -15,43 +30,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + 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 - - - - - - - - - - - - - - - - - - - - -

- Your web browser must have JavaScript enabled - in order for this application to display correctly. -
- - - - 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/,\ 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/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..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 @@ -7,7 +7,6 @@ import java.util.Map; import java.util.logging.Logger; 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. @@ -34,7 +33,7 @@ public abstract class AbstractBasePlace extends Place { if(stringBuilder.length() > 0) { stringBuilder.append("&"); } - stringBuilder.append(paramName + "=" + URLEncoder.encode(paramValue)); + stringBuilder.append(paramName + "=" + paramValue); } } @@ -48,7 +47,7 @@ public abstract class AbstractBasePlace extends Place { if (url != null && !url.isEmpty()) { this.placeParametersAsToken = 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"); 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/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/AbstractPlaceNavigator.java index 9af64528e74..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 @@ -18,26 +18,25 @@ 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()); } } - protected PlaceNavigation createPlaceNavigation(String baseUrl, T destinationPlace, PlaceTokenizer tokenizer) { - return new PlaceNavigation(baseUrl, destinationPlace, tokenizer); + 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); } 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(); - } - - 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/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..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 @@ -6,14 +6,15 @@ 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.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, - LeaderboardPlace.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/app/HomePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/HomePlacesNavigator.java index 96282e0c0d9..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 @@ -6,9 +6,13 @@ 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.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; @@ -19,27 +23,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()); + public PlaceNavigation getSolutionsNavigation(SolutionsNavigationTabs navigationTab) { + return createLocalPlaceNavigation(new SolutionsPlace(navigationTab), 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) { @@ -52,21 +56,19 @@ 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()); + /** 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) { - 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 0e23474b22f..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 @@ -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,18 +11,19 @@ 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)); + 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() { @@ -31,23 +33,40 @@ 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; } 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()) { + 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); } @@ -55,4 +74,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/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index 72ce24e8e41..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 @@ -6,22 +6,24 @@ 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.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.solutions.SolutionsActivity; +import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; +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; @@ -51,11 +53,11 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien @Override public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { - return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event, getHomePlacesNavigator()); } @Override - public EventsView createEventsView(EventsActivity activity) { + public EventsView createEventsView() { return new TabletAndDesktopEventsView(getHomePlacesNavigator()); } @@ -70,18 +72,23 @@ 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 - public AnalyticsView createLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopLeaderboardView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); + } + + @Override + 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 e004fe1088c..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 @@ -6,22 +6,24 @@ 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.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.solutions.SolutionsActivity; +import com.sap.sailing.gwt.home.client.place.series.SeriesAnalyticsView; +import com.sap.sailing.gwt.home.client.place.series.SeriesPlace.SeriesNavigationTabs; +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; @@ -56,11 +58,11 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio @Override public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { - return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event, getHomePlacesNavigator()); } @Override - public EventsView createEventsView(EventsActivity activity) { + public EventsView createEventsView() { return new TabletAndDesktopEventsView(getHomePlacesNavigator()); } @@ -70,18 +72,23 @@ 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 - public AnalyticsView createLeaderboardView(EventDTO event, String leaderboardName, Timer timerForClientServerOffset) { - return new TabletAndDesktopLeaderboardView(event, leaderboardName, timerForClientServerOffset, getHomePlacesNavigator()); + public RegattaAnalyticsView createRegattaAnalyticsView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset) { + return new TabletAndDesktopRegattaView(event, leaderboardName, navigationTab, timerForClientServerOffset, getHomePlacesNavigator()); + } + + @Override + 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/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/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/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 f9495396dd3..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 @@ -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; @@ -19,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; @@ -32,6 +35,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; @@ -72,8 +77,9 @@ 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) { super(event, pageNavigator); @@ -100,10 +106,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); @@ -128,9 +134,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) { @@ -151,13 +157,15 @@ 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(); String overallLeaderboardName = leaderboardGroupDTO.getName() + " " + LeaderboardNameConstants.OVERALL; - overallLeaderboardNavigation = placeNavigator.getLeaderboardNavigation(event.id.toString(), 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) { @@ -242,10 +250,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, seriesAnalyticsNavigation); } } @@ -254,10 +262,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,6 +312,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() { 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 523030f2bed..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 @@ -13,17 +13,20 @@ 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; 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; @@ -38,6 +41,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; @@ -73,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; @@ -104,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); @@ -165,13 +171,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(); + } } } 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..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 @@ -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,18 @@ 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; + private RegattaNavigationTabs navigationTab; - public RegattaAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - eventHeader = new CompactEventHeader(event, leaderboardName, placeNavigator); + 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(); RegattaAnalyticsResources.INSTANCE.css().ensureInjected(); @@ -71,13 +85,17 @@ 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, + 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, @@ -101,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 @@ -144,6 +173,7 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList void leaderboardTabClicked(ClickEvent event) { setActiveTabPanel(leaderboardTabPanel, leaderboardAnchor); regattaAnalyticsManager.hideCompetitorChart(); + handleClickEvent(event, leaderboardNavigation); } @UiHandler("competitorChartsAnchor") @@ -151,6 +181,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 +195,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.getHistoryUrl(), 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 21c25e18108..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 @@ -1,7 +1,7 @@ @@ -20,8 +20,8 @@
- - + +
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 @@
- +
- +
-
+
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..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 @@ -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,25 @@ 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; + private SeriesNavigationTabs navigationTab; - public EventSeriesAnalytics(EventDTO event, String leaderboardName, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { - eventHeader = new CompactEventHeader(event, leaderboardName, placeNavigator); + public EventSeriesAnalytics(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placesNavigator) { + this.navigationTab = navigationTab; + + eventHeader = new CompactEventHeader(event, leaderboardName, placesNavigator); EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); EventSeriesAnalyticsResources.INSTANCE.css().ensureInjected(); @@ -82,14 +96,21 @@ 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); + + 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, @@ -117,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(); } @@ -163,11 +198,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 +212,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 +231,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.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.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..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 @@ -1,7 +1,7 @@ @@ -20,9 +20,9 @@
- - - + + +
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..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 @@ -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 @@ -25,8 +28,9 @@ 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()); eventsView.setEvents(events); } 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/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/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 85% 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 6ef4308e09f..38214f7091d 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 @@ -63,8 +63,12 @@ public class LeaderboardActivity extends AbstractActivity implements ErrorReport 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,19 +107,13 @@ public class LeaderboardActivity extends AbstractActivity implements ErrorReport } // 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); - AnalyticsView analyticsView = clientFactory.createLeaderboardView(event, leaderboardName, timerForClientServerOffset); + RegattaAnalyticsView analyticsView = clientFactory.createRegattaAnalyticsView(event, leaderboardName, regattaPlace.getNavigationTab(), 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/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/leaderboard/AnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/RegattaAnalyticsView.java similarity index 62% 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/regatta/RegattaAnalyticsView.java index 2ac02d0477f..3af3bc6ae7c 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/regatta/RegattaAnalyticsView.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.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 RegattaAnalyticsView { Widget asWidget(); void createRegattaAnalyticsViewer(final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, @@ -17,10 +17,4 @@ public interface AnalyticsView { 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..9b064121dc7 --- /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,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, RegattaNavigationTabs navigationTab, 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 52% 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 221f345d9f1..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,40 +1,60 @@ -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; } + public String getTitle(String eventName, String leaderboardName) { + return TextMessages.INSTANCE.sapSailing() + " - " + TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName; + } + public String getEventUuidAsString() { return eventUuidAsString; } + public RegattaNavigationTabs getNavigationTab() { + return navigationTab; + } + public String getLeaderboardIdAsNameString() { return leaderboardIdAsNameString; } @@ -47,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/regatta/TabletAndDesktopRegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java new file mode 100644 index 00000000000..9c20efd1237 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.java @@ -0,0 +1,45 @@ +package com.sap.sailing.gwt.home.client.place.regatta; + +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.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; +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 TabletAndDesktopRegattaView extends Composite implements RegattaAnalyticsView { + private static TabletAndDesktopRegattaViewUiBinder uiBinder = GWT.create(TabletAndDesktopRegattaViewUiBinder.class); + + interface TabletAndDesktopRegattaViewUiBinder extends UiBinder { + } + + @UiField(provided=true) RegattaAnalytics regattaAnalytics; + + public TabletAndDesktopRegattaView(EventDTO event, String leaderboardName, RegattaNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + regattaAnalytics = new RegattaAnalytics(event, leaderboardName, navigationTab, timerForClientServerOffset, placeNavigator); + + initWidget(uiBinder.createAndBindUi(this)); + + regattaAnalytics.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); + } +} 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 new file mode 100644 index 00000000000..a213594e35a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/regatta/TabletAndDesktopRegattaView.ui.xml @@ -0,0 +1,10 @@ + + + + + + + + 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/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..4870dd84657 --- /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,237 @@ +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())) { + 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); + } + } + + @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 showSeriesLeaderboards = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_SHOW_SERIES_LEADERBOARDS, false); + + SeriesAnalyticsView analyticsView = clientFactory.createSeriesAnalyticsView(event, leaderboardName, + seriesPlace.getNavigationTab(), timerForClientServerOffset); + Window.setTitle(seriesPlace.getTitle(event.getName(), leaderboardDisplayName)); + + analyticsView.createSeriesAnalyticsViewer(clientFactory.getSailingService(), new AsyncActionsExecutor(), + timer, leaderboardSettings, null, preselectedRace, "leaderboardGroupName", leaderboardName, this, + userAgent, showRaceDetails, autoExpandLastRaceColumn, showSeriesLeaderboards); + + 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/series/SeriesAnalyticsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java new file mode 100644 index 00000000000..2865cdba159 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/SeriesAnalyticsView.java @@ -0,0 +1,20 @@ +package com.sap.sailing.gwt.home.client.place.series; + +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 SeriesAnalyticsView { + Widget asWidget(); + + 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/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..0ede6be3e5f --- /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,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, SeriesNavigationTabs navigationTab, 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/leaderboard/TabletAndDesktopLeaderboardView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.java similarity index 52% 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/series/TabletAndDesktopSeriesView.java index 1431d60a3a0..e3b529584fa 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/series/TabletAndDesktopSeriesView.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.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -7,8 +7,8 @@ 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.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; @@ -17,35 +17,22 @@ 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 { - private static LeaderboardPageViewUiBinder uiBinder = GWT.create(LeaderboardPageViewUiBinder.class); +public class TabletAndDesktopSeriesView extends Composite implements SeriesAnalyticsView { + 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 TabletAndDesktopLeaderboardView(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); + public TabletAndDesktopSeriesView(EventDTO event, String leaderboardName, SeriesNavigationTabs navigationTab, Timer timerForClientServerOffset, HomePlacesNavigator placeNavigator) { + seriesAnalytics = new EventSeriesAnalytics(event, leaderboardName, navigationTab, timerForClientServerOffset, placeNavigator); 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/leaderboard/TabletAndDesktopLeaderboardView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/series/TabletAndDesktopSeriesView.ui.xml similarity index 88% 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/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/leaderboard/TabletAndDesktopLeaderboardView.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 @@ -
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..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 @@ -2,16 +2,24 @@ 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 { - + 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/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) { 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/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..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; @@ -13,30 +12,34 @@ 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; 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 { @UiField Anchor startPageLink; @UiField Anchor eventsPageLink; @UiField Anchor solutionsPageLink; - @UiField AnchorElement homeLink; // @UiField Anchor sponsoringPageLink; @UiField TextBox searchText; @UiField Button searchButton; + private static final HyperlinkImpl HYPERLINK_IMPL = GWT.create(HyperlinkImpl.class); + private final List links; private final HomePlacesNavigator navigator; @@ -60,7 +63,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()); @@ -75,46 +78,26 @@ 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") public void goToHome(ClickEvent e) { - navigator.goToPlace(homeNavigation); - e.preventDefault(); - setActiveLink(startPageLink); + handleClickEvent(e, homeNavigation, startPageLink); } @UiHandler("eventsPageLink") public void goToEvents(ClickEvent e) { - 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") @@ -138,4 +121,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); + } + } } 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

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..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 @@ -1,17 +1,33 @@ 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.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.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; +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 +41,100 @@ 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 onLoad() { + Scheduler.get().scheduleDeferred(new Command() { + public void execute() { + 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: + Window.scrollTo(0, 0); + 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 @@
- - - - - + + + + +
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..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,19 +9,8 @@ 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.TimePoint; -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; @@ -41,7 +30,7 @@ import com.sap.sailing.util.SmartFutureCache.UpdateInterval; * @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.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 3e759be5d51..13a2ccb7b21 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 @@ -130,7 +130,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; @@ -158,7 +157,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; @@ -184,8 +182,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; @@ -336,7 +332,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; @@ -387,10 +382,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.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; @@ -402,13 +393,22 @@ 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.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; +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. @@ -665,7 +665,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S protected ServiceTracker createAndOpenReplicationServiceTracker( BundleContext context) { - ServiceTracker result = new ServiceTracker( + ServiceTracker result = + new ServiceTracker( context, ReplicationService.class.getName(), null); result.open(); return result; @@ -3196,9 +3197,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S 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 @@ -3207,7 +3208,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/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.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 @@ + 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..6de8226fbbd 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 @@ + @@ -25,6 +26,7 @@ + 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 @@ - + + 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.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 @@ + 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.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 @@ + 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 @@ + 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 @@ + 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.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/UserManagement.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/UserManagement.gwt.xml deleted file mode 100644 index 3ab1cad1eae..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/UserManagement.gwt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 @@ + 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 @@ - + 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.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.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.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/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.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 5a155c95dd4..6d2960d4aff 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 @@ -19,13 +19,13 @@ 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; import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.racelog.RaceLogStore; +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 84ba5394254..f7676788aef 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 @@ -22,8 +22,6 @@ import com.sap.sailing.domain.abstractlog.race.tracking.PlaceHolderDeviceIdentif 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 bd5b99899d9..156894bb6d6 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 @@ -39,8 +39,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.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.racelog.RaceLogIdentifier; 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 a2ab640c366..11372f712fc 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 @@ -25,7 +25,6 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; 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.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogIdentifierTemplate; 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 aa84a2be825..da0b5eba0c5 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 @@ -19,11 +19,9 @@ import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; 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 e8494e37122..85dd0f2cc3a 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 @@ -16,8 +16,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; 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.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 a41d68c3602..41848ad0c9a 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 @@ -16,12 +16,12 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; -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; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; +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 e0fcb78dfa3..969a51c622a 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 @@ -47,7 +47,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.RaceLogStore; 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 aa8dc6070b0..12e94ca9f90 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 @@ -43,7 +43,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.persistence.impl.MongoObjectFactoryImpl; import com.sap.sailing.domain.persistence.impl.MongoUtils; 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/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.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.operationaltransformation.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.operationaltransformation.test/META-INF/MANIFEST.MF deleted file mode 100644 index 187c48c4720..00000000000 --- a/java/com.sap.sailing.operationaltransformation.test/META-INF/MANIFEST.MF +++ /dev/null @@ -1,9 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Test -Bundle-SymbolicName: com.sap.sailing.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 diff --git a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java b/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java deleted file mode 100755 index 1fdb249521d..00000000000 --- a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationalTransformer.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.sap.sailing.operationaltransformation; - - -public class OperationalTransformer> implements Transformer { - - @Override - 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.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/pages/adminconsole/AdminConsolePage.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/AdminConsolePage.java index 94bd17a2ca6..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( @@ -71,18 +74,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); } @@ -134,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$ } 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 old mode 100644 new mode 100755 index 41eae059486..a34008e7430 --- 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,12 @@ 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.sse.common.Duration; +import com.sap.sse.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; /** *

Abstract base class for unit tests with Selenium. This class is already annotated as required to get executed @@ -89,7 +88,7 @@ public abstract class AbstractSeleniumTest { public void setUpAuthenticatedSession() { 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); } 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..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 @@ -17,6 +17,8 @@ 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, + com.sap.sse Bundle-ClassPath: . Web-ContextPath: /gateway-ess40 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 a09d4fe6b56..81b381d352a 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 @@ -17,9 +17,9 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 5ba249c04ee..17feed8fcda 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 @@ -25,8 +25,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.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.coursedata.impl.ControlPointDeserializer; import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer; @@ -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/RaceLogEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java index deb832816d1..15ea1679d28 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java @@ -14,11 +14,11 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceLogEventSerializerTest { 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 20be1d7c546..1bfa1f61a53 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 @@ -20,8 +20,6 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; 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.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.impl.CompetitorJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogFinishPositioningConfirmedEventDeserializer; @@ -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 546a6b60fa1..d2f18166d8d 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 @@ -16,11 +16,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.tracking.Wind; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; @@ -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 755f14e012d..524fd81f438 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 @@ -10,9 +10,9 @@ import org.junit.Test; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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/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.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 3d2100c9b47..210a9990ac5 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 @@ -12,12 +12,12 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; 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.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.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 29aa38261ad..ba2b95a78c2 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 @@ -9,9 +9,9 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformationType; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 5db31aeec9f..3c5932810a4 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 f22ca9ecab1..e7688a762b1 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 08b3835e972..64ddc3bb8bc 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 @@ -9,11 +9,11 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 d805b6798ed..4981ad034b5 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 @@ -9,11 +9,11 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 10de9fc2406..f8dee80153e 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 @@ -10,10 +10,10 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 a073a6c32ec..d1b3e0971d3 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 @@ -8,9 +8,9 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 7e5fcbc8524..77de59e76e9 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 @@ -9,13 +9,13 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; 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.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.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 b40c01bc257..e9a680503fb 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 @@ -9,9 +9,9 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; 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.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 7a5c4f21507..a7bf33b6121 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 @@ -12,11 +12,11 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.impl.CompetitorResultsImpl; 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.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.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 81b316e5b88..b3755b03bdc 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 @@ -12,11 +12,11 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.impl.CompetitorResultsImpl; 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.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.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 cb49bae7cdb..fbb8e0a6f07 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 @@ -8,10 +8,10 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 8f9fe3fe4a2..2fab762df78 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 @@ -8,10 +8,10 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 1a739b968aa..0c2d9d0ef5b 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 @@ -8,8 +8,8 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 a814c74146a..24c501aa727 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 @@ -8,10 +8,10 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 830f9dfc2fe..754733ffb23 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 4cfbf52a0b0..675df133596 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 a5c39fb9419..53d77180a9b 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 @@ -8,8 +8,8 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 043a8bdaef7..26d00d46ea3 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 7d19bf018eb..954cbf98acc 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 @@ -8,11 +8,11 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; 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.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 0883b4a7984..921494a4ee0 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 @@ -9,11 +9,11 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent; 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.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 b9badf00479..e69461d0de0 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 @@ -8,9 +8,9 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; 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 8b1c690406d..669008c6dcc 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 @@ -8,12 +8,12 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.tracking.Wind; 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.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 753a6265734..41088d134ee 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 @@ -6,8 +6,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceMappingEvent; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.WithID; 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 b3f3e8d2242..4ed675fbf1b 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 @@ -25,8 +25,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.tracking.test.mock.MockEmptyServiceFinder; import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier; @@ -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/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.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..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 @@ -10,15 +10,15 @@ 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; 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/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..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 @@ -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; @@ -40,8 +38,10 @@ 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; 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 74d74dde770..e769a35ed4e 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 @@ -27,11 +27,11 @@ 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.RaceStateOfSameDayHelper; 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..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 @@ -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; @@ -37,7 +35,9 @@ 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; 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..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 @@ -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.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..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 @@ -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.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/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..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 @@ -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; @@ -59,8 +57,10 @@ 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; @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/jaxrs/spi/MasterDataResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/MasterDataResource.java index 09f5d160bfc..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,63 +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.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 50b18c8b72c..eec9a326bbb 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 @@ -2,8 +2,8 @@ package com.sap.sailing.server.gateway.trackfiles.impl; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceWithTimeRange; -import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.TimeRange; +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 45c1d54c4a1..d50560d79a2 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 @@ -29,7 +29,6 @@ import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; import com.sap.sailing.domain.abstractlog.race.tracking.DeviceIdentifier; -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.trackfiles.TrackFileImportDeviceIdentifier; @@ -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 fa2528b8e4c..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 @@ -36,21 +36,22 @@ 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.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.replication.Replicable; +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; +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; @@ -99,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) { @@ -115,14 +115,14 @@ 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, 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; @@ -168,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; @@ -222,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")) { @@ -247,23 +243,12 @@ 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); 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, getReplicablesProvider(), startReplicatorSuspended, consumer); new Thread(replicator).start(); return replicator; } @@ -277,22 +262,30 @@ 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(); - ObjectInputStream dis = resolveAgainst.createObjectInputStreamResolvingAgainstThisFactory(pis); - getRacingEventService().clearReplicaState(); - getRacingEventService().initiallyFillFrom(dis); - dis.close(); + for (Replicable replicable : getReplicablesProvider().getReplicables()) { + replicable.clearReplicaState(); + replicable.initiallyFillFrom(pis); + } + 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/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..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 @@ -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; +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 8071f493f85..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 @@ -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; @@ -40,10 +39,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.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/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..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 @@ -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; @@ -49,10 +46,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.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/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index f47e4a87fad..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,21 +1,23 @@ 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; 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 static org.junit.Assert.*; -import static org.hamcrest.core.Is.*; +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 MediaReplicationTest extends AbstractServerReplicationTest { 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..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 @@ -11,9 +11,9 @@ import org.junit.Test; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.impl.LowPoint; 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.replication.ReplicationMasterDescriptor; +import com.sap.sse.replication.impl.Replicator; public class PrematureOperationReceiptTest extends AbstractServerReplicationTest { private Replicator replicator; @@ -40,26 +40,34 @@ 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); 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/RaceLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RaceLogReplicationTest.java index f5bbe37dd88..7807fb909b3 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 @@ -42,7 +42,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; @@ -58,9 +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.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/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/RemoteMessageStreamTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RemoteMessageStreamTest.java index 831eec665ab..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.sailing.server.replication.impl.RabbitInputStreamProvider; -import com.sap.sailing.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 9cd9a06253c..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 @@ -12,8 +12,8 @@ import org.junit.Before; import org.junit.Test; 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.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/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..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 @@ -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; @@ -23,25 +24,27 @@ 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.RacingEventService; 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.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; +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; @@ -70,9 +73,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(RacingEventServiceOperation operation) { + public void executed(OperationWithResult operation) { if (operation instanceof CreateTrackedRace) { synchronized (notifier) { notifier[0] = true; @@ -97,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 @@ -159,14 +163,15 @@ 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()); assertEquals(masterTrackedRace.getEndOfTracking(), replicaTrackedRace.getEndOfTracking()); 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.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/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF deleted file mode 100644 index 42ca2119c67..00000000000 --- a/java/com.sap.sailing.server.replication/META-INF/MANIFEST.MF +++ /dev/null @@ -1,27 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Server Replication -Bundle-SymbolicName: com.sap.sailing.server.replication -Bundle-Version: 1.0.0.qualifier -Bundle-Activator: com.sap.sailing.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 -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.common -Bundle-ClassPath: . -Web-ContextPath: /replication -Import-Package: com.rabbitmq.client;version="2.8.4", - javax.management.j2ee.statistics;version="1.1.0", - javax.servlet;version="2.6.0", - javax.servlet.http;version="2.6.0", - org.osgi.framework;version="1.6.0", - org.osgi.util.tracker;version="1.5.0" 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.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 deleted file mode 100755 index b99dad2f670..00000000000 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Replicator.java +++ /dev/null @@ -1,302 +0,0 @@ -package com.sap.sailing.server.replication.impl; - -import java.io.ByteArrayInputStream; -import java.io.EOFException; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Executor; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; -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.sailing.domain.base.DomainFactory; -import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.RacingEventServiceOperation; -import com.sap.sailing.server.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.

- * - * 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) - * - */ -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 HasRacingEventService racingEventServiceTracker; - private final List> queue; - - private QueueingConsumer consumer; - - /** - * How many checks have been performed due to a failing connection? - */ - private int checksPerformed = 0; - - /** - * If the replicator is suspended, messages received are queued. - */ - private boolean suspended; - - private boolean stopped = false; - - /** - * When many updates are triggered in a short period of time by a single thread, ensure that the single thread - * providing the updates is not outperformed by all the re-calculations happening here. Leave at least one - * core to other things, but by using at least three threads ensure that no simplistic deadlocks may occur. - */ - private static final int THREAD_POOL_SIZE = Math.max(Runtime.getRuntime().availableProcessors()-1, 3); - - /** - * Used for the parallel execution of operations that don't - * {@link RacingEventServiceOperation#requiresSynchronousExecution()}. - */ - private final static Executor executor = new ThreadPoolExecutor(/* corePoolSize */ THREAD_POOL_SIZE, - /* maximumPoolSize */ THREAD_POOL_SIZE, - /* keepAliveTime */ 60, TimeUnit.SECONDS, - /* workQueue */ new LinkedBlockingQueue()); - - /** - * @param master - * descriptor of the master server from which this replicator receives messages - * @param racingEventServiceTracker - * 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 - * them directly. - * @param consumer - * the RabbitMQ consumer from which to load messages - */ - public Replicator(ReplicationMasterDescriptor master, HasRacingEventService racingEventServiceTracker, boolean startSuspended, QueueingConsumer consumer, DomainFactory baseDomainFactory) { - this.queue = new ArrayList>(); - this.master = master; - this.racingEventServiceTracker = racingEventServiceTracker; - this.suspended = startSuspended; - this.consumer = consumer; - } - - /** - * Starts fetching messages from the {@link #consumer}. After receiving a single message, assumes it's an - * {@link Iterable} of serialized {@link RacingEventServiceOperation} objects, and applies it to the - * {@link RacingEventService} which is obtained from the service tracker passed to this replicator at construction - * time. - * - * @see ReplicationServiceImpl#executed(RacingEventServiceOperation) - */ - @Override - public void run() { - 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 { - Delivery delivery = consumer.nextDelivery(); - messageCount++; - if (_queue != null) { - if (logsFine || messageCount % 10l == 0) { - try { - logger.log(messageCount%10l==0 ? Level.INFO : Level.FINE, - "Inbound replication queue size: "+((BlockingQueue) _queue.get(consumer)).size()); - } catch (Exception e) { - // it didn't work; but it's a log message only... - logger.info("Received another 10000 replication messages"); - } - } - } - byte[] bytesFromMessage = delivery.getBody(); - 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 = racingEventServiceTracker.getRacingEventService().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(); - 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 (ConsumerCancelledException cce) { - logger.info("Consumer has been shut down properly."); - break; - } catch (InterruptedException irr) { - logger.info("Application requested shutdown."); - break; - } catch (ShutdownSignalException sse) { - /* make sure to respond to a stop event without waiting */ - if (isBeingStopped()) { - break; - } - if (sse.isInitiatedByApplication()) { - logger.severe("Application shut down messaging queue for " + this.toString()); - break; - } - logger.info(sse.getMessage()); - if (checksPerformed <= CHECK_COUNT) { - try { - Thread.sleep(CHECK_INTERVAL_MILLIS); - - /* isOpen() will return false if the channel has been closed. This - * does not hold when the connection is dropped. - */ - if (!this.consumer.getChannel().isOpen()) { - /* for a reconnection we need to instantiate a new consumer */ - try { - logger.info("Channel seems to be closed. Trying to reconnect consumer queue..."); - this.consumer = master.getConsumer(); - logger.info("OK - channel reconnected!"); - Thread.sleep(CHECK_INTERVAL_MILLIS); - checksPerformed += 1; - } catch (IOException eio) { - // do not print exceptions known to occur - } - } - } catch (InterruptedException eir) { - eir.printStackTrace(); - } - checksPerformed += 1; - continue; - } else { - logger.severe("Grace time (" + CHECK_COUNT*(CHECK_INTERVAL_MILLIS/1000) + "secs) is over. Terminating replication listener " + this.toString()); - // XXX: Also make sure that all handlers get notifications about this - break; - } - } catch (Exception e) { - logger.info("Exception while processing replica: "+e.getMessage()); - logger.log(Level.SEVERE, "run", e); - } finally { - Thread.currentThread().setContextClassLoader(oldClassLoader); - } - } - logger.info("Stopped replicator thread. This server will no longer receive events from a master."); - } - - public synchronized boolean isQueueEmpty() { - return queue.isEmpty(); - } - - /** - * If the replicator is currently {@link #suspended}, the operation is queued, otherwise immediately applied to - * the receiving replica. - */ - private synchronized void applyOrQueue(RacingEventServiceOperation operation) { - if (suspended) { - queue(operation); - } else { - apply(operation); - } - } - - private synchronized void apply(final RacingEventServiceOperation operation) { - Runnable runnable = new Runnable() { - @Override - public void run() { - racingEventServiceTracker.getRacingEventService().apply(operation); - } - }; - if (operation.requiresSynchronousExecution()) { - runnable.run(); - } else { - executor.execute(runnable); - } - } - - private synchronized void queue(RacingEventServiceOperation operation) { - if (queue.isEmpty()) { - notifyAll(); - } - queue.add(operation); - assert !queue.isEmpty(); - } - - public synchronized void setSuspended(final boolean suspended) { - if (this.suspended != suspended) { - this.suspended = suspended; - if (!this.suspended) { - applyQueue(); - } - } - } - - private synchronized void applyQueue() { - for (Iterator> i=queue.iterator(); i.hasNext(); ) { - RacingEventServiceOperation 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); - } - } - assert queue.isEmpty(); - notifyAll(); - } - - public synchronized boolean isSuspended() { - return suspended; - } - - public synchronized void stop() { - if (isSuspended()) { - /* make sure to apply everything in queue before stopping this thread */ - applyQueue(); - } - logger.info("Signaled Replicator thread to stop asap."); - stopped = true; - master.stopConnection(); - } - - public synchronized boolean isBeingStopped() { - return stopped; - } - - @Override - public String toString() { - return "Replicator for master "+master+", queue size: "+queue.size(); - } - -} 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.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 f718e089206..b8a6d929441 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 @@ -75,15 +75,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/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 f1340c2faaa..ca90b4377e4 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 @@ -12,22 +12,22 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; 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; 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; 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; +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 da079924df4..9b1e0f79825 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 @@ -18,14 +18,14 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogStartTimeEventImpl; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; -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.common.impl.MillisecondsTimePoint; +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.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 6a932cb6d6b..6c3bfccef04 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 @@ -34,13 +34,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.tracking.EmptyGPSFixStore; @@ -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/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.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 1acdf927547..d21ef231f19 100644 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -20,10 +20,12 @@ 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.sailing.domain.shared.android, com.sap.sailing.server.gateway.serialization, - com.sap.sse.common + com.sap.sse.common, + com.sap.sse.operationaltransformation, + 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/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/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 35d52ad1c6f..4faa9b52285 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; @@ -43,7 +41,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; @@ -59,7 +56,6 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; 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; @@ -67,32 +63,43 @@ 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.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.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 { + LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable, + ReplicableWithObjectInputStream> { @Override Regatta getRegatta(RegattaName regattaName); @@ -293,53 +300,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); - - /** - * 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.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceOperation.java index 104a8a68f11..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 @@ -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,19 +11,11 @@ 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.replication.OperationWithResult; -public interface RacingEventServiceOperation extends OperationWithTransformationSupport>, 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(); - +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/Replicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/Replicator.java index b191f2455d3..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 @@ -1,7 +1,8 @@ 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/Activator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/Activator.java index d208806bdb8..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 @@ -29,6 +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.replication.Replicable; public class Activator implements BundleActivator { private static final Logger logger = Logger.getLogger(Activator.class.getName()); @@ -67,6 +68,9 @@ public class Activator implements BundleActivator { // register the racing service in the OSGi registry racingEventService.setBundleContext(context); + 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); 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 759b310e7a8..e6542aa6845 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 @@ -15,7 +15,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.RaceLogIdentifier; @@ -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 b10ac59f38a..375abdf5aad 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; @@ -85,13 +86,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,8 +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.operationaltransformation.Operation; -import com.sap.sailing.server.OperationExecutionListener; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; import com.sap.sailing.server.Replicator; @@ -173,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; @@ -180,18 +178,24 @@ 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; 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.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; +import com.sap.sse.operationaltransformation.Operation; +import com.sap.sse.replication.OperationExecutionListener; +import com.sap.sse.replication.OperationWithResult; public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport, RegattaListener, LeaderboardRegistry, Replicator { @@ -295,7 +299,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 @@ -1358,8 +1362,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 @@ -2075,18 +2089,17 @@ 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(RacingEventServiceOperation operation) { + public T apply(OperationWithResult 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); @@ -2094,9 +2107,19 @@ 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()) { + for (OperationExecutionListener listener : operationExecutionListeners.keySet()) { try { listener.executed(operation); } catch (Exception e) { @@ -2108,17 +2131,17 @@ 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); } @Override - public void serializeForInitialReplication(ObjectOutputStream oos) throws IOException { + public void serializeForInitialReplicationInternal(ObjectOutputStream oos) throws IOException { StringBuffer logoutput = new StringBuffer(); logger.info("Serializing events..."); @@ -2180,8 +2203,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/DummyTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java index 8569c6ac24c..5448cc8c001 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 @@ -25,7 +25,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.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.CourseDesignChangedListener; @@ -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/masterdata/MasterDataImporter.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java index ec585d60e16..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 @@ -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); @@ -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.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..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 @@ -22,6 +22,4 @@ public abstract class AbstractDeviceConfigurationOperation extends AbstractRacin 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..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 @@ -15,13 +15,11 @@ public abstract class AbstractMediaTrackOperation extends AbstractRacingEventSer @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/AddLeaderboardGroupToEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddLeaderboardGroupToEvent.java index ac52fa393e6..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 @@ -68,5 +68,4 @@ public class AddLeaderboardGroupToEvent extends AbstractRacingEventServiceOperat // 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..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 return null; } + @Override public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) { - // TODO Auto-generated method stub 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 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/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/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/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 65% 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 6f97b7794a5..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 @@ -1,30 +1,27 @@ package com.sap.sailing.server.operationaltransformation; +import java.util.logging.Logger; + 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 { +public class UpdateStartTimeReceived extends AbstractRaceOperation { private static final long serialVersionUID = 7054690983295760375L; - 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()); - trackedRace.setStartOfTrackingReceived(startOfTracking); - trackedRace.setEndOfTrackingReceived(endOfTracking); + logger.fine("applying startTimeReceived="+startTimeReceived+" for "+trackedRace.getRace().getName()); trackedRace.setStartTimeReceived(startTimeReceived); return null; } 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 98ec1d20ddf..2954aa15c08 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.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.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.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 20f5a7518f7..1ab97f7d26a 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.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/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.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/META-INF/MANIFEST.MF b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF index 4c44a4b50ab..128593d4fdd 100644 --- a/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.xmlexport/META-INF/MANIFEST.MF @@ -14,7 +14,9 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain, com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.common, - com.sap.sse.common + com.sap.sse, + com.sap.sse.common, + com.sap.sse.replication Bundle-ClassPath: lib/jdom.jar, . Web-ContextPath: /export 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.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.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 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.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.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java b/java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java similarity index 77% rename from java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java rename to java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java index 2d2833e8dd5..f37bede464d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/IsManagedBySharedDomainFactory.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/IsManagedByCache.java @@ -1,4 +1,5 @@ -package com.sap.sailing.domain.base; +package com.sap.sse.common; + /** @@ -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 IsManagedBySharedDomainFactory { - IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory); +public interface IsManagedByCache { + IsManagedByCache resolve(C domainFactory); } 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.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.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.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.sailing.server.replication/.project b/java/com.sap.sse.gateway/.project old mode 100644 new mode 100755 similarity index 88% rename from java/com.sap.sailing.server.replication/.project rename to java/com.sap.sse.gateway/.project index 4f618fe50f1..cb79c7a503d --- a/java/com.sap.sailing.server.replication/.project +++ b/java/com.sap.sse.gateway/.project @@ -1,6 +1,6 @@ - com.sap.sailing.server.replication + com.sap.sse.gateway 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..cc4e39c4a25 --- /dev/null +++ b/java/com.sap.sse.gateway/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +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 +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 +Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sailing.operationaltransformation.test/build.properties b/java/com.sap.sse.gateway/build.properties similarity index 100% rename from java/com.sap.sailing.operationaltransformation.test/build.properties rename to java/com.sap.sse.gateway/build.properties diff --git a/java/com.sap.sailing.server.replication/pom.xml b/java/com.sap.sse.gateway/pom.xml similarity index 86% rename from java/com.sap.sailing.server.replication/pom.xml rename to java/com.sap.sse.gateway/pom.xml index a39d087a75c..a6b767ebadb 100644 --- a/java/com.sap.sailing.server.replication/pom.xml +++ b/java/com.sap.sse.gateway/pom.xml @@ -1,12 +1,12 @@ - - - 4.0.0 - - root - com.sap.sailing - 1.0.0-SNAPSHOT - - com.sap.sailing.server.replication - eclipse-plugin - + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sse.gateway + eclipse-plugin + 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.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.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 96555551356..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); @@ -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(); } 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.sse.operationaltransformation.test/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..75cb42f3baf --- /dev/null +++ b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: 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", + com.sap.sse.replication +Fragment-Host: com.sap.sse.operationaltransformation diff --git a/java/com.sap.sailing.operationaltransformation/build.properties b/java/com.sap.sse.operationaltransformation.test/build.properties similarity index 100% rename from java/com.sap.sailing.operationaltransformation/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/sse/operationaltransformation/test/OperationalTransformationTest.java similarity index 78% 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/sse/operationaltransformation/test/OperationalTransformationTest.java index d420b5e65c6..797eaaa953a 100755 --- 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/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,44 +9,53 @@ 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.Peer.Role; +import com.sap.sse.operationaltransformation.PeerImpl; +import com.sap.sse.operationaltransformation.Transformer; +import com.sap.sse.operationaltransformation.test.util.Base64; public class OperationalTransformationTest { private Peer server; 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 { + 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) { @@ -59,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.sailing.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.sailing.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.sailing.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.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 64% rename from java/com.sap.sailing.operationaltransformation/META-INF/MANIFEST.MF rename to java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF index 906d3ce31f2..5c589ced8c7 100644 --- a/java/com.sap.sailing.operationaltransformation/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation/META-INF/MANIFEST.MF @@ -1,9 +1,9 @@ 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 Bundle-ActivationPolicy: lazy -Export-Package: com.sap.sailing.operationaltransformation +Export-Package: com.sap.sse.operationaltransformation 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.sse.operationaltransformation/build.properties b/java/com.sap.sse.operationaltransformation/build.properties new file mode 100755 index 00000000000..41eb6ade2b4 --- /dev/null +++ b/java/com.sap.sse.operationaltransformation/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . 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/sse/operationaltransformation/ClientServerOperationPair.java similarity index 69% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java index bd42681bc64..fa9182835ac 100755 --- a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/ClientServerOperationPair.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/ClientServerOperationPair.java @@ -1,6 +1,6 @@ -package com.sap.sailing.operationaltransformation; +package com.sap.sse.operationaltransformation; -public class ClientServerOperationPair> { +public class ClientServerOperationPair> { private O clientOp; private O serverOp; @@ -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.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java similarity index 71% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Operation.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Operation.java index fe204ad8da4..302903b8adc 100755 --- a/java/com.sap.sailing.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 @@ -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.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java similarity index 77% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java index 44dfd0c74cc..1ee904aba07 100755 --- a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/OperationWithTransformationSupport.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationWithTransformationSupport.java @@ -1,7 +1,13 @@ -package com.sap.sailing.operationaltransformation; - - +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 server state to which the operation is applied + * @param the operation type + */ 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 new file mode 100755 index 00000000000..89cf9279758 --- /dev/null +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/OperationalTransformer.java @@ -0,0 +1,20 @@ +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( + clientOp == null ? null : clientOp.transformClientOp(serverOp), + serverOp == null ? null : serverOp.transformServerOp(clientOp)); + return result; + } +} diff --git a/java/com.sap.sailing.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.sailing.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.sailing.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.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java similarity index 92% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/PeerImpl.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/PeerImpl.java index a7eb3e12bb3..d5211d5ff27 100755 --- a/java/com.sap.sailing.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; @@ -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.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java similarity index 79% rename from java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java index 62bf2108469..331de2502b8 100755 --- a/java/com.sap.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/Transformer.java +++ b/java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/Transformer.java @@ -1,6 +1,6 @@ -package com.sap.sailing.operationaltransformation; +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); } diff --git a/java/com.sap.sailing.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.sailing.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.sailing.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.sailing.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.sailing.operationaltransformation/src/com/sap/sailing/operationaltransformation/package.html rename to java/com.sap.sse.operationaltransformation/src/com/sap/sse/operationaltransformation/package.html 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.sse.replication/.project b/java/com.sap.sse.replication/.project new file mode 100644 index 00000000000..6a166c69e75 --- /dev/null +++ b/java/com.sap.sse.replication/.project @@ -0,0 +1,28 @@ + + + com.sap.sse.replication + + + + + + 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.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.sse.replication/META-INF/MANIFEST.MF b/java/com.sap.sse.replication/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..554c9a4c5cb --- /dev/null +++ b/java/com.sap.sse.replication/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Server Replication +Bundle-SymbolicName: com.sap.sse.replication +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: com.sap.sse.replication.impl.Activator +Bundle-Vendor: SAP +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-ActivationPolicy: lazy +Export-Package: com.sap.sse.replication, + com.sap.sse.replication.impl +Require-Bundle: com.sap.sse.common, + com.sap.sse.operationaltransformation, + com.sap.sse, + com.sap.sse.gateway +Bundle-ClassPath: . +Web-ContextPath: /replication +Import-Package: com.rabbitmq.client;version="2.8.4", + javax.management.j2ee.statistics;version="1.1.0", + javax.servlet;version="2.6.0", + javax.servlet.http;version="2.6.0", + org.osgi.framework;version="1.6.0", + org.osgi.util.tracker;version="1.5.0" 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 87% rename from java/com.sap.sailing.server.replication/WEB-INF/web.xml rename to java/com.sap.sse.replication/WEB-INF/web.xml index 478b9b77aab..1c632f3388e 100755 --- a/java/com.sap.sailing.server.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.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.sse.replication/pom.xml b/java/com.sap.sse.replication/pom.xml new file mode 100644 index 00000000000..1f17de470ba --- /dev/null +++ b/java/com.sap.sse.replication/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sse.replication + eclipse-plugin + diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java new file mode 100755 index 00000000000..6077d1af79f --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationExecutionListener.java @@ -0,0 +1,14 @@ +package com.sap.sse.replication; + + +/** + * 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/sse/replication/OperationWithResult.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationWithResult.java new file mode 100755 index 00000000000..26b3e609212 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/OperationWithResult.java @@ -0,0 +1,20 @@ +package com.sap.sse.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/sse/replication/Replicable.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java new file mode 100755 index 00000000000..6edf84ab50b --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/Replicable.java @@ -0,0 +1,133 @@ +package com.sap.sse.replication; + +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; + +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 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 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 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. + *

+ * + * 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. + * + * @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 { + /** + * 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"; + + /** + * Executes an operation whose effects need to be replicated to any replica of this service known and + * {@link OperationExecutionListener#executed(OperationWithTransformationSupport) notifies} all registered + * operation execution listeners about the execution of the operation. + */ + 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); + + /** + * 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(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. + *

+ * + * 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(InputStream is) throws IOException, ClassNotFoundException, InterruptedException; + + /** + * 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(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. + */ + 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/ReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java new file mode 100755 index 00000000000..0546020a081 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicablesProvider.java @@ -0,0 +1,44 @@ +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(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. + * + * @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, boolean wait); + + void addReplicableLifeCycleListener(ReplicableLifeCycleListener listener); + + void removeReplicableLifeCycleListener(ReplicableLifeCycleListener listener); +} 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/sse/replication/ReplicationFactory.java similarity index 70% 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/sse/replication/ReplicationFactory.java index 3026cf9ad82..bbf04436a26 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationFactory.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationFactory.java @@ -1,6 +1,6 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.replication; -import com.sap.sailing.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.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java similarity index 77% 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/sse/replication/ReplicationMasterDescriptor.java index 4a8cc88e732..9d865f089c2 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationMasterDescriptor.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationMasterDescriptor.java @@ -1,4 +1,4 @@ -package com.sap.sailing.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.sailing.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. @@ -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.sailing.server.replication/src/com/sap/sailing/server/replication/ReplicationService.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/ReplicationService.java similarity index 54% 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/sse/replication/ReplicationService.java index 2729c37df2a..d123e2e6deb 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/sse/replication/ReplicationService.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication; +package com.sap.sse.replication; import java.io.IOException; import java.net.ConnectException; @@ -6,10 +6,16 @@ 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.replication.impl.ReplicaDescriptor; +import com.sap.sse.replication.impl.ReplicationServlet; +/** + * 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"; @@ -22,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; @@ -38,32 +45,35 @@ 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; /** * 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); /** - * 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; /** * 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/AbstractReplicablesProvider.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java new file mode 100755 index 00000000000..8a828696e89 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/AbstractReplicablesProvider.java @@ -0,0 +1,51 @@ +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); + } + + 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 + * {@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, 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.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Activator.java similarity index 69% 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/sse/replication/impl/Activator.java index fdaca49715a..bf4d2ba4674 100644 --- 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/sse/replication/impl/Activator.java @@ -1,12 +1,14 @@ -package com.sap.sailing.server.replication.impl; +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.sailing.server.replication.ReplicationService; +import com.sap.sse.replication.ReplicablesProvider; +import com.sap.sse.replication.ReplicationService; /** * Initializes the replication sub-system. A hierarchy of parameter specifications is evaluated to configure this @@ -33,8 +35,9 @@ import com.sap.sailing.server.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
  • @@ -111,33 +114,47 @@ 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); + final OSGiReplicableTracker replicablesProvider = new OSGiReplicableTracker(bundleContext); + ReplicationService serverReplicationMasterService = new ReplicationServiceImpl( + 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(); - } + if (replicateOnStart != null && !replicateOnStart.isEmpty()) { + final String[] replicableIdsAsStrings = replicateOnStart.split(","); + 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 { + // TODO pass on the replicables to wait for + 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 new file mode 100755 index 00000000000..2177266506d --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/OSGiReplicableTracker.java @@ -0,0 +1,99 @@ +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; +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, 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; + 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()); + notifyReplicableLifeCycleListenersAboutReplicableAdded(result); + return result; + } + + @Override + public void removedService(ServiceReference> reference, + 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) {} + }); + serviceTracker.open(); + } + + @Override + public Iterable> getReplicables() { + return Arrays.asList(serviceTracker.getServices(new Replicable[0])); + } + + @Override + public Replicable getReplicable(final String replicableIdAsString, boolean wait) { + final ServiceReference> serviceReference = serviceReferenceByIdAsString.get(replicableIdAsString); + 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) { + monitor.notifyAll(); + } + } + }); + 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/ObjectInputStreamResolvingAgainstCache.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java new file mode 100755 index 00000000000..fda698e4c91 --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ObjectInputStreamResolvingAgainstCache.java @@ -0,0 +1,70 @@ +package com.sap.sse.replication.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectStreamClass; + +import com.sap.sse.common.IsManagedByCache; +import com.sap.sse.replication.Replicable; + +/** + * 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. + *

    + * + * 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 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) + * + */ +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) { + @SuppressWarnings("unchecked") + IsManagedByCache castResult = ((IsManagedByCache) o).resolve(getCache()); + result = castResult; + } else { + result = o; + } + return result; + } +} 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/sse/replication/impl/RabbitInputStreamProvider.java similarity index 98% 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/sse/replication/impl/RabbitInputStreamProvider.java index fed0384eb40..469b6f46556 100755 --- 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/sse/replication/impl/RabbitInputStreamProvider.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.InputStream; 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/sse/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/sse/replication/impl/RabbitOutputStream.java index 9415e8b6227..e8a2afad76f 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/sse/replication/impl/RabbitOutputStream.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.InputStream; @@ -7,10 +7,10 @@ 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.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.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicaDescriptor.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicaDescriptor.java similarity index 89% 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/sse/replication/impl/ReplicaDescriptor.java index c698e9e2559..db2a3d3562b 100644 --- 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/sse/replication/impl/ReplicaDescriptor.java @@ -1,11 +1,11 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; 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/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..0e9745f7c6f --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicableWithObjectInputStream.java @@ -0,0 +1,68 @@ +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)); + } + + @Override + default void writeOperation(OperationWithResult operation, OutputStream outputStream, boolean closeStream) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(outputStream); + oos.writeObject(operation); + oos.flush(); + if (closeStream) { + oos.close(); + } + } +} 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/sse/replication/impl/ReplicationFactoryImpl.java similarity index 68% 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/sse/replication/impl/ReplicationFactoryImpl.java index b43238717ab..50bd889f690 100755 --- 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/sse/replication/impl/ReplicationFactoryImpl.java @@ -1,7 +1,7 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; -import com.sap.sailing.server.replication.ReplicationFactory; -import com.sap.sailing.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.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationInstancesManager.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationInstancesManager.java similarity index 84% 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/sse/replication/impl/ReplicationInstancesManager.java index 516e3925564..f9b2517cc32 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/sse/replication/impl/ReplicationInstancesManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; import java.util.Collections; import java.util.HashMap; @@ -7,10 +7,17 @@ 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.replication.OperationWithResult; +import com.sap.sse.replication.ReplicationMasterDescriptor; +/** + * Manages the replicas and keeps statistics. + * + * @author Axel Uhl (D043530) + * + * @param the state to which replication operations are applied + */ public class ReplicationInstancesManager { /** @@ -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.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationMasterDescriptorImpl.java similarity index 88% 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/sse/replication/impl/ReplicationMasterDescriptorImpl.java index 30eb06cb151..974d2c03b08 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/sse/replication/impl/ReplicationMasterDescriptorImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.replication.impl; +package com.sap.sse.replication.impl; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -7,13 +7,16 @@ 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; 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.BuildVersion; +import com.sap.sse.replication.Replicable; +import com.sap.sse.replication.ReplicationMasterDescriptor; public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescriptor { private static final String REPLICATION_SERVLET = "/replication/replication"; @@ -72,9 +75,12 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip } @Override - public URL getInitialLoadURL() throws MalformedURLException { + 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 @@ -183,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/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.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServiceImpl.java similarity index 63% 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/sse/replication/impl/ReplicationServiceImpl.java index dcc9cff1696..668b0f75dd9 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/sse/replication/impl/ReplicationServiceImpl.java @@ -1,11 +1,11 @@ -package com.sap.sailing.server.replication.impl; +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; @@ -29,36 +29,49 @@ 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.ReplicationMasterDescriptor; -import com.sap.sailing.server.replication.ReplicationService; -import com.sap.sailing.util.BuildVersion; +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 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. + * 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 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. + * 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, HasRacingEventService { +public class ReplicationServiceImpl implements ReplicationService { private static final Logger logger = Logger.getLogger(ReplicationServiceImpl.class.getName()); private final ReplicationInstancesManager replicationInstancesManager; - private final ServiceTracker racingEventServiceTracker; - - private final RacingEventService localService; + private final ReplicablesProvider replicablesProvider; /** * null, if this instance is not currently replicating from some master; the master's descriptor otherwise @@ -96,7 +109,14 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec */ 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 final Map> executionListenersByReplicableIdAsString; + private Thread replicatorThread; /** @@ -113,6 +133,17 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * 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 @@ -166,52 +197,69 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec */ 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 RacingEventServiceTracker */ true); + private class LifeCycleListener implements ReplicableLifeCycleListener { + @Override + public void replicableAdded(Replicable replicable) { + // add a replication listener to the new replicable only if there are replicas currently registered + synchronized (replicationInstancesManager) { + if (replicationInstancesManager.hasReplicas()) { + addNewOperationExecutionListener(replicable); + } + } + } + + @Override + public void replicableRemoved(String replicableIdAsString) { + ReplicationServiceExecutionListener listener = executionListenersByReplicableIdAsString.remove(replicableIdAsString); + if (listener != null) { + listener.unsubscribe(); + } + } } - private ReplicationServiceImpl(String exchangeName, String exchangeHost, + /** + * @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, - RacingEventService localService, boolean createRacingEventServiceTracker) throws IOException { + ReplicablesProvider replicablesProvider) throws IOException { timer = new Timer("ReplicationServiceImpl timer for delayed task sending"); + executionListenersByReplicableIdAsString = new HashMap<>(); this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); - if (createRacingEventServiceTracker) { - racingEventServiceTracker = getRacingEventServiceTracker(); - racingEventServiceTracker.open(); - } else { - racingEventServiceTracker = 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 RacingEventService}, 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, RacingEventService localService) throws IOException { - this(exchangeName, exchangeHost, 0, replicationInstancesManager, localService, /* create RacingEventServiceTracker */ false); + protected ServiceTracker, Replicable> getReplicableTracker() { + return new ServiceTracker, Replicable>( + Activator.getDefaultContext(), Replicable.class.getName(), null); } - protected ServiceTracker getRacingEventServiceTracker() { - return new ServiceTracker( - Activator.getDefaultContext(), RacingEventService.class.getName(), null); + protected ReplicablesProvider getReplicablesProvider() { + return replicablesProvider; + } + + protected Replicator getReplicator() { + return replicator; } private Channel createMasterChannelAndDeclareFanoutExchange() throws IOException { @@ -240,74 +288,89 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec return result; } - @Override - public RacingEventService getRacingEventService() { - RacingEventService result; - if (localService != null) { - result = localService; - } else { - result = racingEventServiceTracker.getService(); - } - return result; + private Iterable> getReplicables() { + return replicablesProvider.getReplicables(); } @Override public void registerReplica(ReplicaDescriptor replica) throws IOException { - if (!replicationInstancesManager.hasReplicas()) { - addAsListenerToRacingEventService(); - 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); } - private void addAsListenerToRacingEventService() { - getRacingEventService().addOperationExecutionListener(this); + private void addAsListenerToReplicables() { + for (Replicable replicable : getReplicables()) { + addNewOperationExecutionListener(replicable); + } + } + + private void addNewOperationExecutionListener(Replicable replicable) { + final ReplicationServiceExecutionListener listener = new ReplicationServiceExecutionListener(this, replicable); + executionListenersByReplicableIdAsString.put(replicable.getId().toString(), listener); } @Override public void unregisterReplica(ReplicaDescriptor replica) throws IOException { logger.info("Unregistering replica " + replica); - replicationInstancesManager.unregisterReplica(replica); - if (!replicationInstancesManager.hasReplicas()) { - removeAsListenerFromRacingEventService(); - 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; + } } } } } - private void removeAsListenerFromRacingEventService() { - getRacingEventService().removeOperationExecutionListener(this); + private void removeAsListenerFromReplicables() { + for (ReplicationServiceExecutionListener listener : executionListenersByReplicableIdAsString.values()) { + listener.unsubscribe(); + } + executionListenersByReplicableIdAsString.clear(); } /** - * 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(RacingEventServiceOperation 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(); + replicable.writeOperation(operation, bos, /* close stream */ true); + 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() @@ -360,6 +423,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec classesOfOperationsToSend = outboundBufferClasses; doSend = true; outboundBuffer = null; + outboundBufferReplicableIdAsString = null; outboundObjectBuffer = null; outboundBufferClasses = null; } else { @@ -396,10 +460,15 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } @Override - public ReplicationMasterDescriptor isReplicatingFromMaster() { + public ReplicationMasterDescriptor getReplicatingFromMaster() { 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); @@ -423,31 +492,35 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec 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, getRacingEventService().getBaseDomainFactory()); // 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(); - // 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 + 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 = racingEventService.getBaseDomainFactory() - .createObjectInputStreamResolvingAgainstThisFactory( - new GZIPInputStream(rabbitInputStreamProvider.getInputStream())); - logger.info("Starting to receive initial load"); - racingEventService.initiallyFillFrom(ois); - logger.info("Done receiving initial load"); - replicator.setSuspended(false); // apply queued operations + final GZIPInputStream gzipInputStream = new GZIPInputStream(rabbitInputStreamProvider.getInputStream()); + for (Replicable replicable : getReplicables()) { + logger.info("Starting to receive initial load"); + replicable.initiallyFillFrom(gzipInputStream); + 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()); } } @@ -492,25 +565,12 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec } } - /** - * {@link #broadcastOperation(RacingEventServiceOperation) Broadcasts} the operation to all registered - * replicas by publishing it to the fan-out exchange. - */ - @Override - public void executed(RacingEventServiceOperation 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); } @@ -536,7 +596,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec @Override public void stopToReplicateFromMaster() throws IOException { - ReplicationMasterDescriptor descriptor = isReplicatingFromMaster(); + ReplicationMasterDescriptor descriptor = getReplicatingFromMaster(); if (descriptor != null) { synchronized(replicaUUIDs) { if (replicator != null) { @@ -558,7 +618,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec public void stopAllReplica() throws IOException { if (replicationInstancesManager.hasReplicas()) { replicationInstancesManager.removeAll(); - removeAsListenerFromRacingEventService(); + removeAsListenerFromReplicables(); synchronized (this) { if (masterChannel != null) { masterChannel.close(); 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/sse/replication/impl/ReplicationServlet.java similarity index 68% 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/sse/replication/impl/ReplicationServlet.java index 5e7c90e1f5f..003a4e57ee3 100755 --- 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/sse/replication/impl/ReplicationServlet.java @@ -1,7 +1,6 @@ -package com.sap.sailing.server.replication.impl; +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; @@ -21,19 +20,22 @@ 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.gateway.AbstractHttpServlet; +import com.sap.sse.replication.Replicable; +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) * */ -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,15 @@ public class ReplicationServlet extends SailingServerHttpServlet { */ private static final int INITIAL_LOAD_PACKAGE_SIZE = 1024*1024; - private ServiceTracker replicationServiceTracker; + public static final String REPLICA_IDS_AS_STRINGS_COMMA_SEPARATED = "replicaIdsAsStringsCommaSeparated"; + + private final ServiceTracker replicationServiceTracker; + + private final OSGiReplicableTracker replicablesProvider; public ReplicationServlet() throws Exception { BundleContext context = Activator.getDefaultContext(); + replicablesProvider = new OSGiReplicableTracker(context); replicationServiceTracker = new ServiceTracker(context, ReplicationService.class.getName(), null); replicationServiceTracker.open(); } @@ -80,6 +87,7 @@ public class ReplicationServlet extends SailingServerHttpServlet { 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(), @@ -91,16 +99,21 @@ public class ReplicationServlet extends SailingServerHttpServlet { 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 { - getService().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, /* wait */ false); + if (replicable == null) { + break; // causing an error on the replica which is expecting the replica's initial load + } + try { + replicable.serializeForInitialReplication(gzipOutputStream); + } 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()); + } } + gzipOutputStream.finish(); countingOutputStream.close(); break; default: 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 new file mode 100755 index 00000000000..9c47c5c2f9f --- /dev/null +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/Replicator.java @@ -0,0 +1,386 @@ +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; +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} 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 + * 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) + * + */ +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 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; + + /** + * How many checks have been performed due to a failing connection? + */ + private int checksPerformed = 0; + + /** + * If the replicator is suspended, messages received are queued. + */ + private boolean suspended; + + private boolean stopped = false; + + /** + * When many updates are triggered in a short period of time by a single thread, ensure that the single thread + * providing the updates is not outperformed by all the re-calculations happening here. Leave at least one + * core to other things, but by using at least three threads ensure that no simplistic deadlocks may occur. + */ + 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()}. + */ + private final static Executor executor = new ThreadPoolExecutor(/* corePoolSize */ THREAD_POOL_SIZE, + /* maximumPoolSize */ THREAD_POOL_SIZE, + /* keepAliveTime */ 60, TimeUnit.SECONDS, + /* workQueue */ new LinkedBlockingQueue()); + + /** + * @param master + * descriptor of the master server from which this replicator receives messages + * @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 + * them directly. + * @param consumer + * the RabbitMQ consumer from which to load messages + */ + public Replicator(ReplicationMasterDescriptor master, ReplicablesProvider replicableProvider, boolean startSuspended, QueueingConsumer consumer) { + this.queueByReplicableIdAsString = new HashMap<>(); + this.master = master; + this.replicableProvider = replicableProvider; + this.suspended = startSuspended; + this.consumer = consumer; + try { + _queue = QueueingConsumer.class.getDeclaredField("_queue"); + _queue.setAccessible(true); + } catch (Exception e) { + _queue = null; + } + } + + /** + * Starts fetching messages from the {@link #consumer}. After receiving a single message, assumes it's an + * {@link Iterable} of serialized {@link RacingEventServiceOperation} objects, and applies it to the + * {@link RacingEventService} which is obtained from the service tracker passed to this replicator at construction + * time. + * + * @see ReplicationServiceImpl#executed(RacingEventServiceOperation) + */ + @Override + public void run() { + ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); + long messageCount = 0; + long operationCount = 0; + final boolean logsFine = logger.isLoggable(Level.FINE); + while (!isBeingStopped()) { + try { + Delivery delivery = consumer.nextDelivery(); + messageCount++; + if (_queue != null) { + if (logsFine || messageCount % 10l == 0) { + try { + logger.log(messageCount%10l==0 ? Level.INFO : Level.FINE, + "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 "+messageCount+" replication messages with "+operationCount+" operations in total."); + } + } + } + byte[] bytesFromMessage = delivery.getBody(); + checksPerformed = 0; + // 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 + final GZIPInputStream uncompressedInputStream = new GZIPInputStream(new ByteArrayInputStream(bytesFromMessage)); + String replicableIdAsString = new DataInputStream(uncompressedInputStream).readUTF(); + 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[] + 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"); + } + } + } 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."); + break; + } catch (InterruptedException irr) { + logger.info("Application requested shutdown."); + break; + } catch (ShutdownSignalException sse) { + /* make sure to respond to a stop event without waiting */ + if (isBeingStopped()) { + break; + } + if (sse.isInitiatedByApplication()) { + logger.severe("Application shut down messaging queue for " + this.toString()); + break; + } + logger.info(sse.getMessage()); + if (checksPerformed <= CHECK_COUNT) { + try { + Thread.sleep(CHECK_INTERVAL_MILLIS); + + /* isOpen() will return false if the channel has been closed. This + * does not hold when the connection is dropped. + */ + if (!this.consumer.getChannel().isOpen()) { + /* for a reconnection we need to instantiate a new consumer */ + try { + logger.info("Channel seems to be closed. Trying to reconnect consumer queue..."); + this.consumer = master.getConsumer(); + logger.info("OK - channel reconnected!"); + Thread.sleep(CHECK_INTERVAL_MILLIS); + checksPerformed += 1; + } catch (IOException eio) { + // do not print exceptions known to occur + } + } + } catch (InterruptedException eir) { + eir.printStackTrace(); + } + checksPerformed += 1; + continue; + } else { + logger.severe("Grace time (" + CHECK_COUNT*(CHECK_INTERVAL_MILLIS/1000) + "secs) is over. Terminating replication listener " + this.toString()); + // XXX: Also make sure that all handlers get notifications about this + break; + } + } catch (Exception e) { + logger.info("Exception while processing replica: "+e.getMessage()); + logger.log(Level.SEVERE, "run", e); + } finally { + Thread.currentThread().setContextClassLoader(oldClassLoader); + } + } + 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 { + 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. + * + * @param replicable + * the replicable to which to apply or for which to queue the operation + */ + private synchronized > void applyOrQueue(OperationWithResult operation, Replicable replicable) { + if (suspended) { + queue(operation, replicable); + } else { + apply(operation, replicable); + } + } + + private synchronized > void apply(final OperationWithResult operation, String replicableIdAsString) { + @SuppressWarnings("unchecked") + Replicable replicable = (Replicable) replicableProvider.getReplicable(replicableIdAsString, /* wait */ false); + apply(operation, replicable); + } + + private synchronized > void apply(final OperationWithResult operation, Replicable replicable) { + Runnable runnable = new Runnable() { + @Override + public void run() { + replicable.apply(operation); + } + }; + if (operation.requiresSynchronousExecution()) { + runnable.run(); + } else { + executor.execute(runnable); + } + } + + private synchronized void queue(OperationWithResult operation, Replicable replicable) { + 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(); + } + queue.add(new Pair>(replicable.getId().toString(), operation)); + assert !queue.isEmpty(); + } + + public synchronized void setSuspended(final boolean suspended) { + if (this.suspended != suspended) { + this.suspended = suspended; + if (!this.suspended) { + applyQueues(); + } + } + } + + 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(); + } + notifyAll(); + } + + public synchronized boolean isSuspended() { + return suspended; + } + + public synchronized void stop() { + if (isSuspended()) { + /* make sure to apply everything in queue before stopping this thread */ + applyQueues(); + } + logger.info("Signaled Replicator thread to stop asap."); + stopped = true; + master.stopConnection(); + } + + public synchronized boolean isBeingStopped() { + return stopped; + } + + @Override + public String toString() { + long queueSize = queueByReplicableIdAsString.values().stream().mapToLong(l->l.size()).sum(); + return "Replicator for master "+master+", queue size: "+queueSize; + } + + /** + * @return true if all queues for all replicables are empty + */ + public boolean isQueueEmpty() throws IllegalAccessException { + return (_queue == null || getInboundMessageQueue().isEmpty()) && !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); + } + +} diff --git a/java/com.sap.sse.security.test/.classpath b/java/com.sap.sse.security.test/.classpath index 098194ca4b7..eca7bdba8f0 100644 --- a/java/com.sap.sse.security.test/.classpath +++ b/java/com.sap.sse.security.test/.classpath @@ -1,6 +1,6 @@ - + diff --git a/java/com.sap.sse.security.test/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse.security.test/.settings/org.eclipse.jdt.core.prefs index d17b6724d17..a698e59674f 100644 --- a/java/com.sap.sse.security.test/.settings/org.eclipse.jdt.core.prefs +++ b/java/com.sap.sse.security.test/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sse.security.test/META-INF/MANIFEST.MF b/java/com.sap.sse.security.test/META-INF/MANIFEST.MF index 9aae4803ea5..a1f9525f9a2 100644 --- a/java/com.sap.sse.security.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security.test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: com.sap.sse.security.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sse.security -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.junit4;bundle-version="4.8.2", com.sap.sse.security.userstore.mongodb, com.mongodb.driver, 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/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 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..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 @@ -36,29 +36,30 @@ 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); oAuthPanel.add(new OAuthLogin(userManagementService)); userNameTextBox.setFocus(true); + DialogUtils.linkEnterToButton(loginButton, userNameTextBox, passwordTextBox); userNameTextBox.addAttachHandler(new Handler() { @Override @@ -82,11 +83,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 +95,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/Login.gwt.xml b/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Login.gwt.xml index a065beac54f..11bbd5c7bd3 100644 --- a/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Login.gwt.xml +++ b/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/Login.gwt.xml @@ -6,7 +6,8 @@ - + + 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 @@ + - - - - - - + + - - - - + - + 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); 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..989ce605635 --- /dev/null +++ b/java/com.sap.sse/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +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, + com.sap.sse.util.impl +Bundle-ActivationPolicy: lazy 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.sailing.domain/src/com/sap/sailing/util/BuildVersion.java b/java/com.sap.sse/src/com/sap/sse/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/src/com/sap/sse/BuildVersion.java index 5821ad55628..cfac5adc5c1 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/BuildVersion.java +++ b/java/com.sap.sse/src/com/sap/sse/BuildVersion.java @@ -1,4 +1,4 @@ -package com.sap.sailing.util; +package com.sap.sse; import java.io.BufferedReader; import java.io.File; 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 { 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/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 @@
+

Class Hierarchy

+

Interface Hierarchy

  • com.tractrac.model.lib.api.metadata.IMetadata
  • diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html old mode 100755 new mode 100644 index fab0c2d7fc3..7651f340b53 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html @@ -2,9 +2,9 @@ - + Uses of Package com.tractrac.model.lib.api.metadata - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html old mode 100755 new mode 100644 index a8283cbc8f4..e3696323e5c --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api - + @@ -17,7 +17,10 @@

Classes

diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html old mode 100755 new mode 100644 index 5f0d5b2c13f..6db5d2c929d --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api - + @@ -104,6 +104,13 @@ +AbstractModelTest + +
+ Abstract class that can be inherited for the test classes.
+ + + ModelLocator
@@ -111,6 +118,20 @@ that are used for the creation of the objects.
+ +ModelLocatorTest + +
+ This test checks if an implementation of the model library implements all the + mandatory objects
+ + + +ReadParameterFileTest + +
Class that tests reading in a Text parameter file and setting up an event
+ + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html old mode 100755 new mode 100644 index 43835bf75b3..a4d16bacd93 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api Class Hierarchy - + @@ -74,7 +74,18 @@ diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html old mode 100755 new mode 100644 index 0d99f64e8cc..fa86e4a3ce3 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html @@ -2,9 +2,9 @@ - + Uses of Package com.tractrac.model.lib.api - + @@ -96,6 +96,34 @@ The route configuration: controls, paths and routes
+ +com.tractrac.subscription.lib.api + +
+ Contains the classes used to add a subscription to an event.
+ + + +com.tractrac.subscription.lib.api.competitor + +
+ Subscriptions related with competitors and positions
+ + + +com.tractrac.subscription.lib.api.control + +
+ Subscriptions related with the controls and control passings
+ + + +com.tractrac.subscription.lib.api.race + +
+ Subscriptions related with the races
+ + @@ -160,6 +188,78 @@ +
  • + + + + + + + + + + + + +
    Classes in com.tractrac.model.lib.api used by com.tractrac.subscription.lib.api 
    Class and Description
    AbstractModelTest +
    + Abstract class that can be inherited for the test classes.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Classes in com.tractrac.model.lib.api used by com.tractrac.subscription.lib.api.competitor 
    Class and Description
    AbstractModelTest +
    + Abstract class that can be inherited for the test classes.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Classes in com.tractrac.model.lib.api used by com.tractrac.subscription.lib.api.control 
    Class and Description
    AbstractModelTest +
    + Abstract class that can be inherited for the test classes.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Classes in com.tractrac.model.lib.api used by com.tractrac.subscription.lib.api.race 
    Class and Description
    AbstractModelTest +
    + Abstract class that can be inherited for the test classes.
    +
    +
  • diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html old mode 100755 new mode 100644 index 5aa43486830..5ba597c4ae0 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html @@ -2,9 +2,9 @@ - + ControlRouteTest - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html old mode 100755 new mode 100644 index 15a725fcf9b..6c97a9a9bd0 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html @@ -2,9 +2,9 @@ - + IControl - + @@ -36,7 +36,7 @@
    +

    Class Hierarchy

    +

    Interface Hierarchy

    • com.tractrac.model.lib.api.attachment.IAttachable diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html old mode 100755 new mode 100644 index 204eb180257..d7ffa60f342 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html @@ -2,9 +2,9 @@ - + Uses of Package com.tractrac.model.lib.api.route - + @@ -104,6 +104,13 @@ +com.tractrac.subscription.lib.api + +
      + Contains the classes used to add a subscription to an event.
      + + + com.tractrac.subscription.lib.api.control
      @@ -123,6 +130,25 @@ +IControl +
      + A mark/waypoint/control that has to be visited as a part of a route.
      + + + +IControlPoint +
      + It represents any of the physical control points used in a logical control + (IControl).
      + + + +IControlRoute +
      + A route based on a number of controls/waypoints/control points.
      + + + IPathRouteFactory
      Factory used to create a list of IPathRoute.
      @@ -222,6 +248,24 @@
    • +
    • + + + + + + + + + + + + +
      Classes in com.tractrac.model.lib.api.route used by com.tractrac.subscription.lib.api 
      Class and Description
      IRoute +
      + A route can be one of: IControlRoute or IPathRoute.
      +
      +
    • diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html old mode 100755 new mode 100644 index 23a4a0cd564..4dd0c95fe82 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html @@ -2,9 +2,9 @@ - + ICoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html old mode 100755 new mode 100644 index de3c4347671..a9fade4634f --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html @@ -2,9 +2,9 @@ - + ICoordinateSequence - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html old mode 100755 new mode 100644 index e20c94880b7..65a74136e31 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html @@ -2,9 +2,9 @@ - + IGeoCoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html old mode 100755 new mode 100644 index 7dd412ddcc2..b2dbb6fd447 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html @@ -2,9 +2,9 @@ - + Uses of Interface com.tractrac.model.lib.api.spatial.ICoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html old mode 100755 new mode 100644 index d2e24f548ef..c51cb18203e --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html @@ -2,9 +2,9 @@ - + Uses of Interface com.tractrac.model.lib.api.spatial.ICoordinateSequence - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html old mode 100755 new mode 100644 index 5640b1e603d..a5ee83a3ca9 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html @@ -2,9 +2,9 @@ - + Uses of Interface com.tractrac.model.lib.api.spatial.IGeoCoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html old mode 100755 new mode 100644 index 6ee4ae36ae4..fcef4ca1fc4 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api.spatial - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html old mode 100755 new mode 100644 index e6023d08b51..cac5ca6854e --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api.spatial - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html old mode 100755 new mode 100644 index beb3fa7a912..2d0cf6f421c --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html @@ -2,9 +2,9 @@ - + com.tractrac.model.lib.api.spatial Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html old mode 100755 new mode 100644 index 4587ff83895..b2038b22f86 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html @@ -2,9 +2,9 @@ - + Uses of Package com.tractrac.model.lib.api.spatial - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html old mode 100755 new mode 100644 index d6093e24320..71b09e561ff --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html @@ -2,9 +2,9 @@ - + AbstractSubscriptionTest - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html old mode 100755 new mode 100644 index 2373e0bdb39..1be5725751b --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html @@ -2,9 +2,9 @@ - + IEventSubscriber - + @@ -36,8 +36,8 @@
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V 

    A

    +
    abandonRace(UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Abandon a race from the event
    +
    abandonRace(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    It is thrown when the race has been abandoned.
    +
    abandonRace(UUID) - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    AbstractAttachable - Class in com.tractrac.model.lib.api.attachment
    Abstract implementation for the IAttachable interface.
    AbstractAttachable() - Constructor for class com.tractrac.model.lib.api.attachment.AbstractAttachable
     
    +
    AbstractJSONTest - Class in com.tractrac.model.lib.api.event
    +
     
    +
    AbstractJSONTest() - Constructor for class com.tractrac.model.lib.api.event.AbstractJSONTest
    +
     
    +
    AbstractModelTest - Class in com.tractrac.model.lib.api
    +
    +
    + Abstract class that can be inherited for the test classes.
    +
    +
    AbstractModelTest() - Constructor for class com.tractrac.model.lib.api.AbstractModelTest
    +
     
    +
    AbstractSubscriptionTest - Class in com.tractrac.subscription.lib.api
    +
    +
    + Abstract class that can be inherited for the test classes.
    +
    +
    AbstractSubscriptionTest() - Constructor for class com.tractrac.subscription.lib.api.AbstractSubscriptionTest
    +
     
    +
    addAttachment(IAttachable, IAttachmentKey, Object) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add an attachment to an attachable object
    +
    addCompetitor(ICompetitor) - Method in interface com.tractrac.model.lib.api.event.IEvent
    Add a new competitor to the event
    @@ -85,6 +113,22 @@
    A new competitor has been added to the event.
    +
    addCompetitor(String, String, String, String) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Add a new competitor to the event
    +
    +
    addCompetitorToEvent(IEvent, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add the competitor the the event
    +
    +
    addCompetitorToEvent(IEvent, String, UUID) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add the competitor the the event
    +
    +
    addCompetitorToRace(IRace, ICompetitor) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add a competitor to a race.
    +
    addControl(IControl) - Method in interface com.tractrac.model.lib.api.event.IEvent
    Add a new control to the event
    @@ -93,22 +137,106 @@
    A new control has been added to the event.
    +
    addControlPointToControl(IControl, double, double, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a controlpoint to a control
    +
    +
    addControlRouteToRace(IRace) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add a route to the race
    +
    +
    addControlRouteToRace(IRace, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Add a route to the race
    +
    +
    addControlToEvent(IEvent, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to an event
    +
    +
    addControlToEvent(IEvent, String, double, double, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to an event with one control point
    +
    +
    addControlToEvent(IEvent, String, double, double, long, double, double, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to an event with two control points
    +
    +
    addControlToRace(IRace, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to the race.
    +
    +
    addControlToRace(IRace, IControl) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to the race.
    +
    +
    addControlToRace(IRace, String, double, double, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a control to the race.
    +
    +
    addDataserverToEvent(IEvent) - Method in class com.tractrac.subscription.lib.api.AbstractSubscriptionTest
    +
    +
    Create a local dataserver that can be used to establish a communication + with the subscription library.
    +
    +
    addDataserverToEvent(IEvent, boolean, boolean) - Method in class com.tractrac.subscription.lib.api.AbstractSubscriptionTest
    +
    +
    Create a local dataserver that can be used to establish a communication + with the subscription library.
    +
    +
    addLivePosition(ICompetitor, double, double, long) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Adds a live position to the dataserver.
    +
    +
    addMark(String, String, double, double, long) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Add a new mark to the event
    +
    addRace(IRace) - Method in interface com.tractrac.model.lib.api.event.IEvent
    Add a new race to the event
    +
    addRace(String, long, long, long, RaceStatusType, URI) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Add a new race to the event
    +
    addRace(IRace) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    A new race has been added to the event.
    +
    addRace(IRace) - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    addRaceCompetitor(IRaceCompetitor) - Method in interface com.tractrac.model.lib.api.event.IRace
    Add a new race competitor to the race
    +
    addRaceCompetitor(IRace, IRoute, ICompetitor) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Add a competitor to a race
    +
    addRaceCompetitor(IRaceCompetitor) - Method in interface com.tractrac.subscription.lib.api.race.IRaceCompetitorListener
    This event is thrown when a new competitor has been attached to a race
    +
    addRaceCompetitorToRace(IRace, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a competitor to a race
    +
    +
    addRacetoEvent(IEvent, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a race to an event.
    +
    +
    addRacetoEvent(IEvent, String, UUID) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a race to an event.
    +
    +
    addRacetoEvent(IEvent, String, UUID, long, long, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Adds a race to an event.
    +
    +
    addStoredPosition(ICompetitor, double, double, long) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Adds a stored position to the dataserver.
    +
    after(IPosition) - Method in interface com.tractrac.model.lib.api.data.IPosition
    Gets is this position is after (in terms of time) other position
    @@ -117,8 +245,15 @@
    Gets is this position is after (in terms of time) a timestamp
    +
    AttachmentsTest - Class in com.tractrac.model.lib.api.attachment
    +
    +
    + This test checks the attachments.
    +
    +
    AttachmentsTest() - Constructor for class com.tractrac.model.lib.api.attachment.AttachmentsTest
    +
     
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    R

    +

    N

    -
    RaceLoadingException - Exception in com.tractrac.model.lib.api.event
    +
    newKey(Class<? extends IAttachable>, String) - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentManager
    -
    - This exception is thrown when there is an error loading the race
    -
    -
    RaceLoadingException(String) - Constructor for exception com.tractrac.model.lib.api.event.RaceLoadingException
    -
     
    -
    RaceStatusType - Enum in com.tractrac.model.lib.api.event
    -
     
    -
    registerAttachmentManager(IAttachmentManager) - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Register a default IAttachmentManager.
    -
    -
    registerEventFactory(IEventFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Register a default IEventFactory.
    -
    -
    registerMetadataFactory(IMetadataFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Register a default IMetadataFactory.
    -
    -
    registerPathRouteFactory(IPathRouteFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Register a default IPathRouteFactory.
    -
    -
    registerPositionFactory(IPositionFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Register a default IPositionFactory.
    -
    -
    registerSubscriberFactory(ISubscriberFactory) - Static method in class com.tractrac.subscription.lib.api.SubscriptionLocator
    -
    -
    Register a default ISubscriberFactory.
    -
    -
    reloadFromServer() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    This method is used to reload a race from the server using the parameters - file
    -
    -
    reloadRace(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    -
    -
    - The set of positions or control passings have changed and this race needs - to be reloaded.
    +
    Creates a new IAttachmentKey for attach objects for a concrete + class
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    S

    +

    P

    -
    setAttachment(IAttachmentKey, Object) - Method in class com.tractrac.model.lib.api.attachment.AbstractAttachable
    +
    PositionEventTest - Class in com.tractrac.subscription.lib.api.competitor
     
    -
    setAttachment(IAttachmentKey, Object) - Method in interface com.tractrac.model.lib.api.attachment.IAttachable
    -
    -
    Sets custom data for this object.
    -
    -
    setDirection(double) - Method in interface com.tractrac.model.lib.api.data.IPosition
    -
    -
    Sets the direction
    -
    -
    setHeight(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Sets the value of the height
    -
    -
    setLatitude(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Sets the value of the latitude
    -
    -
    setLongitude(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Sets the value of the longitude
    -
    -
    setM(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Sets the value of the m coordinate
    -
    -
    setSpeed(double) - Method in interface com.tractrac.model.lib.api.data.IPosition
    -
    -
    Set the speed value
    -
    -
    size() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    -
    -
    Returns the number of points in the coordinate sequence.
    -
    -
    start() - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    -
    -
    Start a new thread that received data from the subscriptions
    -
    -
    startTracking(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    -
    -
    It is thrown when tracking of a race has started.
    -
    -
    stop() - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    -
    -
    Stops the thread that receives data from the subscriptions
    -
    -
    stopped(Object) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    -
    -
    Invoked when data subscription was stopped.
    -
    -
    subscribeCompetitors(ICompetitorsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    - Subscriber to competitor changes.
    -
    -
    subscribeConnectionStatus(IConnectionStatusListener) - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    -
    -
    Subscribes for connection status
    -
    -
    subscribeControlPassings(IControlPassingsListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to control passing data for the specified race.
    -
    -
    subscribeControlPositions(IControlPointPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to control positions for the race.
    -
    -
    subscribeControlPositions(IControlPointPositionListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to control positions for the race, also retrieving historic - data.
    -
    -
    subscribeControls(IControlsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    - Subscriber to control changes.
    -
    -
    subscribeEventMessages(IEventMessageListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    Subscribe to messages for an event.
    -
    -
    subscribeEventTimesChanges(IStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    Subscribes to changes in event start and stop times.
    -
    -
    subscribePositions(IPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to competitor positions for a given Race.
    -
    -
    subscribePositions(IPositionListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to competitor positions for a given Race.
    -
    -
    subscribePositionsOffset(IPositionOffsetListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to offset competitor positions for a given Race.
    -
    -
    subscribePositionsOffset(IPositionOffsetListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to offset competitor positions for a given Race, including - historic data.
    -
    -
    subscribePositionsSnapped(IPositionSnappedListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to snapped competitor positions for a given Race.
    -
    -
    subscribePositionsSnapped(IPositionSnappedListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to snapped competitor positions for a given Race, including - historic data.
    -
    -
    subscribeRaceCompetitor(IRaceCompetitorListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to race competitor for a given Race.
    -
    -
    subscribeRaceMessages(IRaceMessageListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribe to messages for a race.
    -
    -
    subscribeRaces(IRacesListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    - Subscriber to race changes.
    -
    -
    subscribeRaceTimesChanges(IRaceStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to changes in race start and stop times.
    -
    -
    SubscriberInitializationException - Exception in com.tractrac.subscription.lib.api
    -
    -
    This exception is thrown when it is not possible to create a susbcriber.
    -
    -
    SubscriberInitializationException(Exception) - Constructor for exception com.tractrac.subscription.lib.api.SubscriberInitializationException
    -
     
    -
    subscribeRouteChanges(IControlRouteChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Subscribes to route changes for a given Race.
    -
    -
    subscribeServerTime(IServerTimeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    -
    Subscribe to messages for the server time.
    -
    -
    SubscriptionLocator - Class in com.tractrac.subscription.lib.api
    -
    -
    - This class is a locator used to get the instance of some of the factories - that are used for the creation of the objects.
    -
    -
    SubscriptionLocator() - Constructor for class com.tractrac.subscription.lib.api.SubscriptionLocator
    +
    PositionEventTest() - Constructor for class com.tractrac.subscription.lib.api.competitor.PositionEventTest
     
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    T

    +

    R

    -
    toArray() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    RaceCompetitorTest - Class in com.tractrac.model.lib.api.event
    +
     
    +
    RaceCompetitorTest() - Constructor for class com.tractrac.model.lib.api.event.RaceCompetitorTest
    +
     
    +
    RaceCompetitorTest - Class in com.tractrac.subscription.lib.api.race
    +
     
    +
    RaceCompetitorTest() - Constructor for class com.tractrac.subscription.lib.api.race.RaceCompetitorTest
    +
     
    +
    RaceLoadingException - Exception in com.tractrac.model.lib.api.event
    -
    Returns (possibly copies of) the coordinates in this collection.
    +
    + This exception is thrown when there is an error loading the race
    +
    +
    RaceLoadingException(String) - Constructor for exception com.tractrac.model.lib.api.event.RaceLoadingException
    +
     
    +
    RaceSerieTest - Class in com.tractrac.model.lib.api.event
    +
     
    +
    RaceSerieTest() - Constructor for class com.tractrac.model.lib.api.event.RaceSerieTest
    +
     
    +
    RacesEventTest - Class in com.tractrac.subscription.lib.api.race
    +
     
    +
    RacesEventTest() - Constructor for class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    RacesFromJSONTest - Class in com.tractrac.model.lib.api.event
    +
     
    +
    RacesFromJSONTest() - Constructor for class com.tractrac.model.lib.api.event.RacesFromJSONTest
    +
     
    +
    RacesListener - Class in com.tractrac.subscription.lib.api.race
    +
     
    +
    RacesListener(List<IRace>) - Constructor for class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    RaceStatusType - Enum in com.tractrac.model.lib.api.event
    +
     
    +
    ReadHDRaceTest - Class in com.tractrac.subscription.lib.api
    +
     
    +
    ReadHDRaceTest() - Constructor for class com.tractrac.subscription.lib.api.ReadHDRaceTest
    +
     
    +
    ReadParameterFileTest - Class in com.tractrac.model.lib.api
    +
    +
    Class that tests reading in a Text parameter file and setting up an event
    +
    +
    ReadParameterFileTest() - Constructor for class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    readParametersFile() - Static method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    ReadRouteTest - Class in com.tractrac.model.lib.api.route
    +
     
    +
    ReadRouteTest() - Constructor for class com.tractrac.model.lib.api.route.ReadRouteTest
    +
     
    +
    ReadTextPathRouteTests - Class in com.tractrac.model.lib.api.route
    +
    +
    + Checks the reading of a route path
    +
    +
    ReadTextPathRouteTests() - Constructor for class com.tractrac.model.lib.api.route.ReadTextPathRouteTests
    +
     
    +
    ReconnectAddingControlsTest - Class in com.tractrac.subscription.lib.api.control
    +
     
    +
    ReconnectAddingControlsTest() - Constructor for class com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest
    +
     
    +
    ReconnectAddingEntriesTest - Class in com.tractrac.subscription.lib.api.competitor
    +
     
    +
    ReconnectAddingEntriesTest() - Constructor for class com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest
    +
     
    +
    ReconnectWithStaticControlsTest - Class in com.tractrac.subscription.lib.api.control
    +
     
    +
    ReconnectWithStaticControlsTest() - Constructor for class com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest
    +
     
    +
    registerAttachmentManager(IAttachmentManager) - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Register a default IAttachmentManager.
    +
    +
    registerEventFactory(IEventFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Register a default IEventFactory.
    +
    +
    registerMetadataFactory(IMetadataFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Register a default IMetadataFactory.
    +
    +
    registerPathRouteFactory(IPathRouteFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Register a default IPathRouteFactory.
    +
    +
    registerPositionFactory(IPositionFactory) - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Register a default IPositionFactory.
    +
    +
    registerSubscriberFactory(ISubscriberFactory) - Static method in class com.tractrac.subscription.lib.api.SubscriptionLocator
    +
    +
    Register a default ISubscriberFactory.
    +
    +
    reloadFromServer() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    This method is used to reload a race from the server using the parameters + file
    +
    +
    reloadRace(UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Reload a race from the event
    +
    +
    reloadRace(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    +
    +
    + The set of positions or control passings have changed and this race needs + to be reloaded.
    +
    +
    reloadRace(UUID) - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    removeRaceCompetitor(IRace, UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Delete a race from the race
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    U

    +

    S

    -
    unsubscribeCompetitors(ICompetitorsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    SameEventTest - Class in com.tractrac.model.lib.api.event
    +
     
    +
    SameEventTest() - Constructor for class com.tractrac.model.lib.api.event.SameEventTest
    +
     
    +
    setAttachment(IAttachmentKey, Object) - Method in class com.tractrac.model.lib.api.attachment.AbstractAttachable
    +
     
    +
    setAttachment(IAttachmentKey, Object) - Method in interface com.tractrac.model.lib.api.attachment.IAttachable
    +
    +
    Sets custom data for this object.
    +
    +
    setDirection(double) - Method in interface com.tractrac.model.lib.api.data.IPosition
    +
    +
    Sets the direction
    +
    +
    setHeight(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Sets the value of the height
    +
    +
    setLatitude(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Sets the value of the latitude
    +
    +
    setLongitude(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Sets the value of the longitude
    +
    +
    setM(double) - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Sets the value of the m coordinate
    +
    +
    setSpeed(double) - Method in interface com.tractrac.model.lib.api.data.IPosition
    +
    +
    Set the speed value
    +
    +
    setUp() - Method in class com.tractrac.model.lib.api.attachment.AttachmentsTest
    +
     
    +
    setUp() - Method in class com.tractrac.model.lib.api.event.AbstractJSONTest
    +
     
    +
    setUp() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    setUp() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    setUp() - Method in class com.tractrac.model.lib.api.route.ControlRouteTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.competitor.PositionEventTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.ControlsEventTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.StaticControlInSecondRace
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.StaticControlTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest
    +
     
    +
    setUp() - Method in class com.tractrac.subscription.lib.api.ReadHDRaceTest
    +
     
    +
    size() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    +
    Returns the number of points in the coordinate sequence.
    +
    +
    start() - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Create the threads that listen both the stored and live connections
    +
    +
    start() - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    +
    +
    Start a new thread that received data from the subscriptions
    +
    +
    StartTimeType - Enum in com.tractrac.model.lib.api.event
    +
    +
    Type of start time to use.
    +
    +
    StartTimeTypeTest - Class in com.tractrac.model.lib.api.event
    +
    +
    Class used to test the StartTimeType enumerate
    +
    +
    StartTimeTypeTest() - Constructor for class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    startTracking(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    +
    +
    It is thrown when tracking of a race has started.
    +
    +
    startTracking(UUID) - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    StaticControlInSecondRace - Class in com.tractrac.subscription.lib.api.control
    +
    +
    This test check the values for the static control points when a recond race + is loaded
    +
    +
    StaticControlInSecondRace() - Constructor for class com.tractrac.subscription.lib.api.control.StaticControlInSecondRace
    +
     
    +
    StaticControlTest - Class in com.tractrac.subscription.lib.api.control
    - Unsubscribes the competitors subscribers
    + This test checks that the subscription library sends events with the + positions of the static marks
    -
    unsubscribeConnectionStatus(IConnectionStatusListener) - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    +
    StaticControlTest() - Constructor for class com.tractrac.subscription.lib.api.control.StaticControlTest
    +
     
    +
    StaticRaceStartStopTimesChangeTest - Class in com.tractrac.subscription.lib.api.race
    +
     
    +
    StaticRaceStartStopTimesChangeTest() - Constructor for class com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest
    +
     
    +
    StaticRoutesChangesTest - Class in com.tractrac.subscription.lib.api.control
    +
     
    +
    StaticRoutesChangesTest() - Constructor for class com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest
    +
     
    +
    stop() - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    -
    Unsubscribes for connection status
    +
    Stops the thread that receives data from the subscriptions
    -
    unsubscribeControlPassings(IControlPassingsListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    stopped(Object) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    -
    Unsubscribes to control passing data for the specified race.
    +
    Invoked when data subscription was stopped.
    -
    unsubscribeControlPositions(IControlPointPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Unsubscribes to control positions.
    -
    -
    unsubscribeControls(IControlsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    subscribeCompetitors(ICompetitorsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    - Unsubscribes the controls subscribers
    + Subscriber to competitor changes.
    -
    unsubscribeEventMessages(IEventMessageListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    subscribeConnectionStatus(IConnectionStatusListener) - Method in interface com.tractrac.subscription.lib.api.ISubscriber
    -
    Unsubscribes to event messages.
    +
    Subscribes for connection status
    -
    unsubscribeEventTimesChanges(IStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    subscribeControlPassings(IControlPassingsListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Unsubscribes to changes in event start and stop times.
    +
    Subscribes to control passing data for the specified race.
    -
    unsubscribePositions(IPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    subscribeControlPositions(IControlPointPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Unsubscribes to competitor positions for a given Race.
    +
    Subscribes to control positions for the race.
    -
    unsubscribePositionsOffset(IPositionOffsetListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    subscribeControlPositions(IControlPointPositionListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Unsubscribes to competitor positions for a given Race.
    +
    Subscribes to control positions for the race, also retrieving historic + data.
    -
    unsubscribePositionsSnapped(IPositionSnappedListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Unsubscribes to competitor positions for a given Race.
    -
    -
    unsubscribeRaceCompetitor(IRaceCompetitorListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Unsubscribes to race competitor
    -
    -
    unsubscribeRaceMessages(IRaceMessageListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    -
    Unsubscribes to race messages
    -
    -
    unsubscribeRaces(IRacesListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    subscribeControls(IControlsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    - Unsubscribes the races subscribers
    + Subscriber to control changes.
    -
    unsubscribeRaceTimesChanges(IRaceStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    subscribeEventMessages(IEventMessageListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    Unsubscribes to changes in race start and stop times.
    +
    Subscribe to messages for an event.
    -
    unsubscribeRouteChanges(IControlRouteChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    subscribeEventTimesChanges(IStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    -
    Unsubscribes to route changes for a given Race.
    +
    Subscribes to changes in event start and stop times.
    -
    unsubscribeServerTime(IServerTimeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    subscribePositions(IPositionListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Unsubscribes to messages for the server time.
    +
    Subscribes to competitor positions for a given Race.
    -
    updateCompetitor(ICompetitor) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    subscribePositions(IPositionListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Update a competitor
    +
    Subscribes to competitor positions for a given Race.
    -
    updateCompetitor(ICompetitor) - Method in interface com.tractrac.subscription.lib.api.competitor.ICompetitorsListener
    +
    subscribePositionsOffset(IPositionOffsetListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    This event is thrown when a competitor is updated.
    +
    Subscribes to offset competitor positions for a given Race.
    -
    updateControl(IControl) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    subscribePositionsOffset(IPositionOffsetListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Update a control
    +
    Subscribes to offset competitor positions for a given Race, including + historic data.
    -
    updateControl(IControl) - Method in interface com.tractrac.subscription.lib.api.control.IControlsListener
    +
    subscribePositionsSnapped(IPositionSnappedListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    This event is thrown when a control is updated.
    +
    Subscribes to snapped competitor positions for a given Race.
    -
    updateRace(IRace) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    subscribePositionsSnapped(IPositionSnappedListener, long, long) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    Update a race
    +
    Subscribes to snapped competitor positions for a given Race, including + historic data.
    -
    updateRace(IRace) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    +
    subscribeRaceCompetitor(IRaceCompetitorListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    -
    This event is thrown when a race is updated.
    +
    Subscribes to race competitor for a given Race.
    +
    subscribeRaceMessages(IRaceMessageListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    +
    Subscribe to messages for a race.
    +
    +
    subscribeRaces(IRacesListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    +
    + Subscriber to race changes.
    +
    +
    subscribeRaceTimesChanges(IRaceStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    +
    Subscribes to changes in race start and stop times.
    +
    +
    SubscriberInitializationException - Exception in com.tractrac.subscription.lib.api
    +
    +
    This exception is thrown when it is not possible to create a susbcriber.
    +
    +
    SubscriberInitializationException(Exception) - Constructor for exception com.tractrac.subscription.lib.api.SubscriberInitializationException
    +
     
    +
    subscribeRouteChanges(IControlRouteChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
    +
    +
    Subscribes to route changes for a given Race.
    +
    +
    subscribeServerTime(IServerTimeListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
    +
    +
    Subscribe to messages for the server time.
    +
    +
    SubscriptionLocator - Class in com.tractrac.subscription.lib.api
    +
    +
    + This class is a locator used to get the instance of some of the factories + that are used for the creation of the objects.
    +
    +
    SubscriptionLocator() - Constructor for class com.tractrac.subscription.lib.api.SubscriptionLocator
    +
     
    +
    SubscriptionLocatorTest - Class in com.tractrac.subscription.lib.api
    +
    +
    + This test checks if an implementation of the model library implements all the + mandatory objects
    +
    +
    SubscriptionLocatorTest() - Constructor for class com.tractrac.subscription.lib.api.SubscriptionLocatorTest
    +
     
    +
    SubscriptionTestLocator - Class in com.tractrac.subscription.lib.api
    +
    +
    + This class is a locator used to get the instance of some of the factories + that are used for the creation of the objects.
    +
    +
    SubscriptionTestLocator() - Constructor for class com.tractrac.subscription.lib.api.SubscriptionTestLocator
    +
     
    -A B C D G I L M N R S T U V  +A B C D E G I L M N P R S T U V 
    diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html old mode 100755 new mode 100644 index b68c677e20e..c6a6120078b --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html @@ -2,15 +2,15 @@ - -V-Index - + +T-Index + @@ -37,7 +37,7 @@ -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    V

    +

    T

    -
    valueOf(String) - Static method in enum com.tractrac.model.lib.api.event.RaceStatusType
    +
    testAbandonRace() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    testAddCompetitor() - Method in class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
    +
     
    +
    testAddCompetitor() - Method in class com.tractrac.subscription.lib.api.race.RaceCompetitorTest
    +
     
    +
    testAddMark() - Method in class com.tractrac.subscription.lib.api.control.ControlsEventTest
    +
     
    +
    testAddRace() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    testAttachmentManagerSingleton() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns the enum constant of this type with the specified name.
    +
    Test if the IAttachmentManager is a singleton
    -
    valueOf(String) - Static method in enum com.tractrac.subscription.lib.api.event.ILiveDataEvent.StatusType
    +
    testChangeControlCompetitor() - Method in class com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest
    +
     
    +
    testClasses() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testCompetitors() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testCreateAttachment() - Method in class com.tractrac.model.lib.api.attachment.AttachmentsTest
    +
     
    +
    testCreateAttachment() - Method in class com.tractrac.model.lib.api.route.ControlRouteTest
    +
     
    +
    testCreateSeveralAttachments() - Method in class com.tractrac.model.lib.api.attachment.AttachmentsTest
    +
     
    +
    testEvent() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testEventData() - Method in class com.tractrac.subscription.lib.api.ReadHDRaceTest
    +
     
    +
    testEventFactorySingleton() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns the enum constant of this type with the specified name.
    +
    Test if the IEventFactory is a singleton
    -
    valueOf(String) - Static method in enum com.tractrac.subscription.lib.api.event.IStoredDataEvent.Type
    +
    testLoadRace() - Method in class com.tractrac.model.lib.api.event.RacesFromJSONTest
    +
     
    +
    testMetadata() - Method in class com.tractrac.model.lib.api.event.RaceCompetitorTest
    +
     
    +
    testMetadataFactorySingleton() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns the enum constant of this type with the specified name.
    +
    Test if the IPositionFactory is a singleton
    -
    values() - Static method in enum com.tractrac.model.lib.api.event.RaceStatusType
    +
    testMetadataForCompetitor() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataForControlPoint() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataForCourse() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testMetadataForRace() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataForRoute() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataFromControl() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testMetadataIsEmpty() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataisNull() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testMetadataWithBreakLine() - Method in class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    testModel() - Method in class com.tractrac.subscription.lib.api.competitor.PositionEventTest
    +
     
    +
    testParseEventsFile() - Method in class com.tractrac.model.lib.api.event.EventsFromClubsJSONTest
    +
     
    +
    testParseEventsFile() - Method in class com.tractrac.model.lib.api.event.EventsFromJSONTest
    +
     
    +
    testPathRouteFactorySingleton() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns an array containing the constants of this enum type, in -the order they are declared.
    +
    Test if the IPathRouteFactory is a singleton
    -
    values() - Static method in enum com.tractrac.subscription.lib.api.event.ILiveDataEvent.StatusType
    +
    testPositionFactorySingleton() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns an array containing the constants of this enum type, in -the order they are declared.
    +
    Test if the IPositionFactory is a singleton
    -
    values() - Static method in enum com.tractrac.subscription.lib.api.event.IStoredDataEvent.Type
    +
    testRace() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testRaceCompetitor() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testReadRaceSerie() - Method in class com.tractrac.model.lib.api.event.RaceSerieTest
    +
     
    +
    testRegisteredAttachmentManager() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    -
    Returns an array containing the constants of this enum type, in -the order they are declared.
    +
    Test if there is a IAttachmentManager registered.
    +
    +
    testRegisteredEventFactory() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    +
    +
    Test if there is a IEventFactory registered.
    +
    +
    testRegisteredMetadataFactory() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    +
    +
    Test if there is a IMetadataFactory registered.
    +
    +
    testRegisteredPathRouteFactory() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    +
    +
    Test if there is a IPathRouteFactory registered.
    +
    +
    testRegisteredPositionFactory() - Method in class com.tractrac.model.lib.api.ModelLocatorTest
    +
    +
    Test if there is a IPositionFactory registered.
    +
    +
    testRegisteredSubscriberFactory() - Method in class com.tractrac.subscription.lib.api.SubscriptionLocatorTest
    +
    +
    Test if there is a ISubscriberFactory registered.
    +
    +
    testReloadRace() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    testRemoveAndAddCompetitor() - Method in class com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest
    +
     
    +
    testRemoveCompetitor() - Method in class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
    +
     
    +
    testRemoveCompetitor() - Method in class com.tractrac.subscription.lib.api.race.RaceCompetitorTest
    +
     
    +
    testRemoveMark() - Method in class com.tractrac.subscription.lib.api.control.ControlsEventTest
    +
     
    +
    testRemoveRace() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    testRouteData() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testRouteData() - Method in class com.tractrac.model.lib.api.route.ReadTextPathRouteTests
    +
     
    +
    testRouteName() - Method in class com.tractrac.model.lib.api.route.ReadRouteTest
    +
     
    +
    testRouteNotNull() - Method in class com.tractrac.model.lib.api.event.RaceCompetitorTest
    +
     
    +
    testSameEvent() - Method in class com.tractrac.model.lib.api.event.SameEventTest
    +
     
    +
    testStartTypeIdividualAndStartTimeTypeNull() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeIndividualAndStartTimeTypeFirstMark() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeIndividualAndStartTimeTypeIndividual() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeIndividualAndStartTimeTypeRace() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeMassStartAndStartTimeTypeFirstMark() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeMassStartAndStartTimeTypeIndividual() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeMassStartAndStartTimeTypeNull() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeMassStartAndStartTimeTypeRace() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeNullAndStartTimeTypeFirstMark() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeNullAndStartTimeTypeIndividual() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeNullAndStartTimeTypeNull() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStartTypeNullAndStartTimeTypeRace() - Method in class com.tractrac.model.lib.api.event.StartTimeTypeTest
    +
     
    +
    testStaticControlInSecondRace() - Method in class com.tractrac.subscription.lib.api.control.StaticControlInSecondRace
    +
     
    +
    testStaticMark() - Method in class com.tractrac.subscription.lib.api.control.StaticControlTest
    +
     
    +
    testStaticPointChanged() - Method in class com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest
    +
     
    +
    testStaticRoute() - Method in class com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest
    +
     
    +
    testStoredPositions() - Method in class com.tractrac.subscription.lib.api.competitor.PositionEventTest
    +
     
    +
    testSubscriberFactorySingleton() - Method in class com.tractrac.subscription.lib.api.SubscriptionLocatorTest
    +
    +
    Test if the ISubscriberFactory is a singleton
    +
    +
    testTeams() - Method in class com.tractrac.model.lib.api.ReadParameterFileTest
    +
     
    +
    testTrackingTimesChange() - Method in class com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest
    +
     
    +
    testUpdateCompetitor() - Method in class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
    +
     
    +
    testUpdateMark() - Method in class com.tractrac.subscription.lib.api.control.ControlsEventTest
    +
     
    +
    testUpdateRace() - Method in class com.tractrac.subscription.lib.api.race.RacesEventTest
    +
     
    +
    toArray() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    +
    Returns (possibly copies of) the coordinates in this collection.
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V 

    C

    +
    close() - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Closes the connections
    +
    +
    com.tractrac.model.lib.api - package com.tractrac.model.lib.api
    +
    +
    + Main package of the model project.
    +
    +
    com.tractrac.model.lib.api.attachment - package com.tractrac.model.lib.api.attachment
    +
    +
    + Contains the functionality to attach an object to other object.
    +
    com.tractrac.model.lib.api.data - package com.tractrac.model.lib.api.data
    Contains positions and control passings
    +
    com.tractrac.model.lib.api.event - package com.tractrac.model.lib.api.event
    +
    +
    + Events, races and competitors
    +
    +
    com.tractrac.model.lib.api.metadata - package com.tractrac.model.lib.api.metadata
    +
    +
    + The metadata functionality
    +
    +
    com.tractrac.model.lib.api.route - package com.tractrac.model.lib.api.route
    +
    +
    + The route configuration: controls, paths and routes
    +
    com.tractrac.model.lib.api.spatial - package com.tractrac.model.lib.api.spatial
    The spatial data
    +
    com.tractrac.subscription.lib.api - package com.tractrac.subscription.lib.api
    +
    +
    + Contains the classes used to add a subscription to an event.
    +
    +
    com.tractrac.subscription.lib.api.competitor - package com.tractrac.subscription.lib.api.competitor
    +
    +
    + Subscriptions related with competitors and positions
    +
    +
    com.tractrac.subscription.lib.api.control - package com.tractrac.subscription.lib.api.control
    +
    +
    + Subscriptions related with the controls and control passings
    +
    com.tractrac.subscription.lib.api.event - package com.tractrac.subscription.lib.api.event
    Subscriptions related with the event and/or the connection
    +
    com.tractrac.subscription.lib.api.race - package com.tractrac.subscription.lib.api.race
    +
    +
    + Subscriptions related with the races
    +
    +
    CompetitorsEventTest - Class in com.tractrac.subscription.lib.api.competitor
    +
     
    +
    CompetitorsEventTest() - Constructor for class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
    +
     
    +
    ControlRouteTest - Class in com.tractrac.model.lib.api.route
    +
    +
    + Reads a route with marks from the parameters file
    +
    +
    ControlRouteTest() - Constructor for class com.tractrac.model.lib.api.route.ControlRouteTest
    +
     
    +
    ControlsEventTest - Class in com.tractrac.subscription.lib.api.control
    +
     
    +
    ControlsEventTest() - Constructor for class com.tractrac.subscription.lib.api.control.ControlsEventTest
    +
     
    +
    createCompetitor(String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Create a competitor
    +
    +
    createCompetitor(UUID, String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Create a competitor
    +
    createCompressedPosition(double, double, double, double, double) - Method in interface com.tractrac.model.lib.api.data.IPositionFactory
    Create a compressed position that is a position that can be serialized and @@ -91,6 +163,14 @@
    Create a compressed position from a buffer.
    +
    createControl(String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Create a control
    +
    +
    createControlPoint(double, double, long) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Create a control point
    +
    createCoordinate(double, double) - Method in interface com.tractrac.model.lib.api.data.IPositionFactory
    Create a coordiante from a pair of coordinates
    @@ -99,6 +179,14 @@
    Create a coordiante using the 4 dimensions.
    +
    createEvent(String) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Creates an event from a name.
    +
    +
    createEvent(String, UUID) - Method in class com.tractrac.model.lib.api.AbstractModelTest
    +
    +
    Creates an event from a name.
    +
    createEvent(URI) - Method in interface com.tractrac.model.lib.api.event.IEventFactory
    It creates an event object using the JSON with races.
    @@ -121,6 +209,10 @@
    Returns a subscriber for the event
    +
    createLocalDataServer(IEvent, boolean, boolean) - Method in interface com.tractrac.subscription.lib.api.ILocalDataServerFactory
    +
    +
    Creates and instance of a ILocalDataserver
    +
    createMetadata(String) - Method in interface com.tractrac.model.lib.api.metadata.IMetadataFactory
    Create a new metadata object from an string
    @@ -179,7 +271,7 @@ file.
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V  -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V 

    D

    @@ -75,6 +75,10 @@
    A competitor has been removed from the event
    +
    deleteCompetitor(UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Delete a competitor from the event
    +
    deleteControl(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    Delete a control from the event
    @@ -83,14 +87,24 @@
    A control has been removed from the event
    +
    deleteMark(UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Delete a mark from the event
    +
    deleteRace(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    Delete a race from the event
    +
    deleteRace(UUID) - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Delete a race from the event
    +
    deleteRace(UUID) - Method in interface com.tractrac.subscription.lib.api.race.IRacesListener
    A race has been removed from the event
    +
    deleteRace(UUID) - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    deleteRaceCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IRace
    Delete a race competitor from the race
    @@ -108,7 +122,7 @@
    Gets the square of the distance between two coordinates.
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    G

    +

    E

    -
    getAttachment(IAttachmentKey) - Method in class com.tractrac.model.lib.api.attachment.AbstractAttachable
    +
    EventsFromClubsJSONTest - Class in com.tractrac.model.lib.api.event
     
    -
    getAttachment(IAttachmentKey) - Method in interface com.tractrac.model.lib.api.attachment.IAttachable
    -
    -
    Fetches custom data for this object.
    -
    -
    getAttachmentManager() - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Used to get the instance of the IAttachmentManager class.
    -
    -
    getBlob() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    -
    -
    Returns the binary value of the message, if available, otherwise null.
    -
    -
    getColor() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the color associated with competitor, if any
    -
    -
    getCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the competitor by Id
    -
    -
    getCompetitor() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    -
    -
    Returns the competitor in the race.
    -
    -
    getCompetitorClass() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the Competitor Class associated with this Competitor, if any.
    -
    -
    getCompetitorClasses() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of the competitor classes of this event.
    -
    -
    getCompetitors() - Method in interface com.tractrac.model.lib.api.event.ICompetitorClass
    -
    -
    - Get a list of competitors in the class
    -
    -
    getCompetitors() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of the competitors of this event.
    -
    -
    getControl() - Method in interface com.tractrac.model.lib.api.data.IControlPassing
    -
    -
    Returns the control that was passed
    -
    -
    getControl(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the control by Id
    -
    -
    getControlPoints() - Method in interface com.tractrac.model.lib.api.route.IControl
    -
    -
    - Gets the list of control points contained by this control.
    -
    -
    getControls() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of all controls in this event.
    -
    -
    getControls() - Method in interface com.tractrac.model.lib.api.route.IControlRoute
    -
    -
    - The list of controls of a route
    -
    -
    getCoordinate(int) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    -
    -
    Returns the coordinate at the specified index.
    -
    -
    getCoordinates() - Method in interface com.tractrac.model.lib.api.route.ISegment
    -
    -
    Returns the coordinates that the segment is based on.
    -
    -
    getDatabase() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    An event has a name and a database name.
    -
    -
    getDefaultRoute() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the default route
    -
    -
    getDescription() - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentKey
    -
    -
    Gets a free text that describes the attachment.
    -
    -
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns a description of the competitor.
    -
    -
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ICompetitorClass
    -
    -
    Returns a description.
    -
    -
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ITeam
    -
    -
    Returns a description.
    -
    -
    getDirection() - Method in interface com.tractrac.model.lib.api.data.IPosition
    -
    -
    Returns the direction of the carrier at the time of the position.
    -
    -
    getError() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    -
    -
    If the IStoredDataEvent.getType() method returns IStoredDataEvent.Type.Error - , this method returns the error message
    -
    -
    getErrorMsgs() - Method in interface com.tractrac.subscription.lib.api.event.ILiveDataEvent
    -
    -
    If the ILiveDataEvent.getStatusType() method returns - ILiveDataEvent.StatusType.Error, this method returns the error message.
    -
    -
    getEvent() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the event that contains the race
    -
    -
    getEventEndTime() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Returns the event end time
    -
    -
    getEventFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Used to get the instance of the IEventFactory class.
    -
    -
    getEventStartTime() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Returns the event start time
    -
    -
    getExpectedRaceStartDate() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - It returns the expected date when the race starts.
    -
    -
    getFirstName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Deprecated.
    -
    -
    getHandicapToD() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Gets the ToD (Time on Distance) handicap
    -
    -
    getHandicapToT() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Gets the ToT (Time in Time) handicap
    -
    -
    getHeight() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Returns the height/altitude of the position.
    -
    -
    getIcon() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the icon associated with competitor, if any.
    -
    -
    getIcon() - Method in interface com.tractrac.model.lib.api.event.ITeam
    -
    -
    Returns the icon associated with team, if any.
    -
    -
    getId() - Method in interface com.tractrac.model.lib.api.IIdentifiable
    -
    -
    Returns the unique id of this object.
    -
    -
    getIndex() - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentKey
    -
    -
    Gets the index of the attachment.
    -
    -
    getKeys(Class<? extends IAttachable>) - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentManager
    -
    -
    It returns all the IAttachmentKey's for an specified - IAttachable class.
    -
    -
    getKind() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    -
    -
    Returns the kind id integer for this message object.
    -
    -
    getLastName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the last name of the competitor.
    -
    -
    getLatitude() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Returns the latitude coordinate of the position.
    -
    -
    getLength() - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    -
    -
    Returns the length of the route.
    -
    -
    getLiveDelay() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Returns the live delay in seconds.
    -
    -
    getLiveURI() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the live URI of this event.
    -
    -
    getLiveURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the live URI of this race.
    -
    -
    getLongitude() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Returns the longitude coordinate of the position.
    -
    -
    getM() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    -
    -
    The value of the m coordinate
    -
    -
    getM() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    -
    -
    Returns the m coordinate (in meters)
    -
    -
    getMessage() - Method in exception com.tractrac.model.lib.api.event.CreateModelException
    +
    EventsFromClubsJSONTest() - Constructor for class com.tractrac.model.lib.api.event.EventsFromClubsJSONTest
     
    -
    getMessage() - Method in exception com.tractrac.subscription.lib.api.SubscriberInitializationException
    +
    EventsFromJSONTest - Class in com.tractrac.model.lib.api.event
     
    -
    getMessageData() - Method in interface com.tractrac.subscription.lib.api.event.IMessage
    -
    -
    The message associated to the event
    -
    -
    getMetadata() - Method in interface com.tractrac.model.lib.api.metadata.IMetadataContainer
    -
    -
    Returns the metadata associated with this object.
    -
    -
    getMetadataFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Used to get the instance of the IMetadataFactory class.
    -
    -
    getName() - Method in interface com.tractrac.model.lib.api.INamed
    -
    -
    Returns the name associated with this object
    -
    -
    getNationality() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the nationality associated with this competitor.
    -
    -
    getNationality() - Method in interface com.tractrac.model.lib.api.event.ITeam
    -
    -
    Returns the nationality.
    -
    -
    getObject() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    -
    -
    Returns the object related with this message (if exists)
    -
    -
    getOffset() - Method in interface com.tractrac.model.lib.api.data.IPositionOffset
    -
    -
    Returns the offset from the start of the line/route
    -
    -
    getParameterSet() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Returns the parameters used to create this event.
    -
    -
    getParamsURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the parameters file used to load this race
    -
    -
    getPassings() - Method in interface com.tractrac.model.lib.api.data.IControlPassings
    -
    -
    - Returns a list of control passings.
    -
    -
    getPathRouteFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Used to get the instance of the IPathRouteFactory class.
    -
    -
    getPicture() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the picture associated with competitor, if any
    -
    -
    getPicture() - Method in interface com.tractrac.model.lib.api.event.ITeam
    -
    -
    Returns the picture associated with team, if any
    -
    -
    getPosition() - Method in interface com.tractrac.model.lib.api.route.IControlPoint
    -
    -
    Gets the position of a control point.
    -
    -
    getPositionFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    -
    -
    Used to get the instance of the IPositionFactory class.
    -
    -
    getProgress() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    -
    -
    If the IStoredDataEvent.getType() method returns - IStoredDataEvent.Type.Progress, this method returns the percentage of data loaded.
    -
    -
    getProperty(String) - Method in interface com.tractrac.model.lib.api.metadata.IPropertiesContainer
    -
    -
    Returns a property attached to the object
    -
    -
    getProperty(String, int) - Method in interface com.tractrac.model.lib.api.route.IControlRoute
    -
    -
    Returns a property attached to the object
    -
    -
    getRace(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the race by Id
    -
    -
    getRace() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    -
    -
    Returns the race that contains this race competitor
    -
    -
    getRaceCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Returns a race competitor by competitor id
    -
    -
    getRaceCompetitors() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - Returns the competitors that participate in this race.
    -
    -
    getRaceEndTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - End time of race.
    -
    -
    getRaces() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of the races of this event.
    -
    -
    getRaces() - Method in interface com.tractrac.model.lib.api.event.IRaceSerie
    -
    -
    - Gets the list of races that compose the serie
    -
    -
    getRaceSerie() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    If the race is a part of a serie.
    -
    -
    getRaceSeries() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Gets the list of race series of this event
    -
    -
    getRaceStartTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - Start time of race.
    -
    -
    getRoute(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the route by Id
    -
    -
    getRoute() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    -
    -
    Returns the route that this competitor is assigned to, if any.
    -
    -
    getRoutes() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of the routes of this event.
    -
    -
    getRoutes() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - Gets the routes of this race
    -
    -
    getSegment() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    -
    -
    Returns the segment in this route segment.
    -
    -
    getSegmentIndex() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    -
    -
    Returns the index of this route segment in the route.
    -
    -
    getSegments() - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    -
    -
    - Returns the segments in the route.
    -
    -
    getShortName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the short name associated with this competitor.
    -
    -
    getShortName() - Method in interface com.tractrac.model.lib.api.route.IControl
    -
    -
    Gets the short name of the control ([0-2] characters)
    -
    -
    getSpeed() - Method in interface com.tractrac.model.lib.api.data.IPosition
    -
    -
    Returns the speed of the carrier at the time of the position.
    -
    -
    getStartOffset() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    -
    -
    Return the start offset of the segment that this route segment refers to.
    -
    -
    getStartTime() - Method in interface com.tractrac.model.lib.api.data.IStartStopData
    -
    -
    Returns the start time.
    -
    -
    getStartTime() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    -
    -
    Returns the start time of this competitor.
    -
    -
    getStatus() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Deprecated. -
    use {@link IRace#getVisibility() instead
    -
    -
    -
    getStatus(int) - Static method in enum com.tractrac.model.lib.api.event.RaceStatusType
    +
    EventsFromJSONTest() - Constructor for class com.tractrac.model.lib.api.event.EventsFromJSONTest
     
    -
    getStatusType() - Method in interface com.tractrac.subscription.lib.api.event.ILiveDataEvent
    -
    -
    Gets the status of the connection
    -
    -
    getStopTime() - Method in interface com.tractrac.model.lib.api.data.IStartStopData
    -
    -
    Returns the stop time.
    -
    -
    getStoredURI() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    Gets the stored URI of this event.
    -
    -
    getStoredURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the stored URI of this race.
    -
    -
    getSusbcriberFactory() - Static method in class com.tractrac.subscription.lib.api.SubscriptionLocator
    -
    -
    Used to get the instance of the ISubscriberFactory class.
    -
    -
    getTeam() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns the Competitor Class associated with this Competitor, if any.
    -
    -
    getTeams() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    -
    - Returns a collection of the teams of this event.
    -
    -
    getText() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    -
    -
    Returns the text value of the message, if available, otherwise null.
    -
    -
    getText() - Method in interface com.tractrac.model.lib.api.metadata.IMetadata
    -
    -
    Returns the metadata like a text value.
    -
    -
    getTimestamp() - Method in interface com.tractrac.model.lib.api.data.ITimeData
    -
    -
    Returns the time stamp of the data.
    -
    -
    getTrackingEndTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    - End of tracking time when the trackers have stopped to send positions.
    -
    -
    getTrackingStartTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Start of tracking time can be set before start of race time in case it is - interesting to follow what happens up til the start time of the race.
    -
    -
    getType() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    -
    -
    Gets the type of the stored data message.
    -
    -
    getValue() - Method in enum com.tractrac.model.lib.api.event.RaceStatusType
    -
     
    -
    getVisibility() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    -
    Gets the visibility of the race that can be: - - Hidden: the race is not visible - Offline: the race is visible but it is not accessible - Online: the race is visible and accessible (the replay status has been - merged with this status) -
    -
    -
    getX() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    -
    -
    The value of the x coordinate
    -
    -
    getY() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    -
    -
    The value of the y coordinate
    -
    -
    getZ() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    -
    -
    The value of the z coordinate
    -
    -
    gotControlPassings(IRaceCompetitor, IControlPassings) - Method in interface com.tractrac.subscription.lib.api.control.IControlPassingsListener
    -
    -
    Invoked when a new control passing result arrives
    -
    -
    gotControlPointPosition(IControl, IPosition, int) - Method in interface com.tractrac.subscription.lib.api.control.IControlPointPositionListener
    -
    -
    Invoked when a new position for a control point arrives.
    -
    -
    gotEventMessage(IEvent, IMessageData) - Method in interface com.tractrac.subscription.lib.api.event.IEventMessageListener
    -
    -
    Invoked when a new event message arrives
    -
    -
    gotLiveDataEvent(ILiveDataEvent) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    -
    -
    Invoked when an update in the live data status occurs.
    -
    -
    gotPosition(IRaceCompetitor, IPosition) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionListener
    -
    -
    Invoked when a new position arrives
    -
    -
    gotPositionOffset(IRaceCompetitor, IPositionOffset) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionOffsetListener
    -
    -
    Invoked when a new position arrives
    -
    -
    gotPositionSnapped(IRaceCompetitor, IPositionSnapped) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionSnappedListener
    -
    -
    Invoked when a new snapped position arrives
    -
    -
    gotRaceMessage(IRace, IMessageData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceMessageListener
    -
    -
    Invoked when a new race message arrives
    -
    -
    gotRaceStartStopTime(IRace, IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener
    -
    -
    Invoked when an update in the race start and/or stop time occurs.
    -
    -
    gotRouteChange(IControlRoute, long) - Method in interface com.tractrac.subscription.lib.api.control.IControlRouteChangeListener
    -
    -
    Invoked when updates to a route arrives
    -
    -
    gotServerTime(long, long) - Method in interface com.tractrac.subscription.lib.api.event.IServerTimeListener
    -
    -
    This event is thrown when a new server time event arrives from the server
    -
    -
    gotStartStopTime(IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IStartStopTimesChangeListener
    -
    -
    Invoked when an update in the start and/or stop time occurs.
    -
    -
    gotStoredDataEvent(IStoredDataEvent) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    -
    -
    Invoked when an update in the stored data status occurs.
    -
    -
    gotTrackingStartStopTime(IRace, IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener
    -
    -
    Invoked when an update in the tracking start and/or stop time occurs.
    -
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    I

    +

    G

    -
    IAttachable - Interface in com.tractrac.model.lib.api.attachment
    -
    -
    - This interface adds functionality for attaching custom data to an object.
    -
    -
    IAttachmentKey - Interface in com.tractrac.model.lib.api.attachment
    -
    -
    - An attachment key is used as a key to save a new attachment.
    -
    -
    IAttachmentManager - Interface in com.tractrac.model.lib.api.attachment
    -
    -
    Manager interface for creation of IAttachementKey for use with the - IAttachable interface.
    -
    -
    ICompetitor - Interface in com.tractrac.model.lib.api.event
    -
    -
    - Encapsulates data related to a Competitor of an Event.
    -
    -
    ICompetitorClass - Interface in com.tractrac.model.lib.api.event
    -
    -
    - Encapsulates data related to a Competitor Class in an Event.
    -
    -
    ICompetitorsListener - Interface in com.tractrac.subscription.lib.api.competitor
    -
    -
    - This listener is used to receive events related with the competitor list.
    -
    -
    IConnectionStatusListener - Interface in com.tractrac.subscription.lib.api.event
    -
    -
    - The listener interface for receiving events for the stored and live data - handler.
    -
    -
    IControl - Interface in com.tractrac.model.lib.api.route
    -
    -
    - A mark/waypoint/control that has to be visited as a part of a route.
    -
    -
    IControlPassing - Interface in com.tractrac.model.lib.api.data
    -
    -
    A control passing is a combination of a time and a control, usually the time where - a competitor passed a control of an control route.
    -
    -
    IControlPassings - Interface in com.tractrac.model.lib.api.data
    -
    -
    A set of control passings, usually associated with a route (IControlRoute)
    -
    -
    IControlPassingsListener - Interface in com.tractrac.subscription.lib.api.control
    -
    -
    The listener interface for receiving events whenever a new control passings - result arrives for a competitor.
    -
    -
    IControlPoint - Interface in com.tractrac.model.lib.api.route
    -
    -
    - It represents any of the physical control points used in a logical control - (IControl).
    -
    -
    IControlPointPositionListener - Interface in com.tractrac.subscription.lib.api.control
    -
    -
    The listener interface for receiving events whenever a new position arrives - on a control point.
    -
    -
    IControlRoute - Interface in com.tractrac.model.lib.api.route
    -
    -
    - A route based on a number of controls/waypoints/control points.
    -
    -
    IControlRouteChangeListener - Interface in com.tractrac.subscription.lib.api.control
    -
    -
    The listener interface for receiving events whenever a control route is changed.
    -
    -
    IControlsListener - Interface in com.tractrac.subscription.lib.api.control
    -
    -
    - This listener is used to receive events related with the control list.
    -
    -
    ICoordinate - Interface in com.tractrac.model.lib.api.spatial
    -
    -
    - A raw coordinate.
    -
    -
    ICoordinateSequence - Interface in com.tractrac.model.lib.api.spatial
    -
    -
    - A sequence of points connected by straight lines (line segments)
    -
    -
    IEvent - Interface in com.tractrac.model.lib.api.event
    -
    -
    Encapsulates data related to an Event: Races, Competitors, Competitor - Classes, Routes.
    -
    -
    IEventFactory - Interface in com.tractrac.model.lib.api.event
    -
    -
    - Factory used to create an IEvent.
    -
    -
    IEventMessageListener - Interface in com.tractrac.subscription.lib.api.event
    -
    -
    - The listener interface for receiving events whenever a new message arrives.
    -
    -
    IEventSubscriber - Interface in com.tractrac.subscription.lib.api
    -
    -
    - Class that handles subscription to data for one event.
    -
    -
    IGeoCoordinate - Interface in com.tractrac.model.lib.api.spatial
    -
    -
    - A geographical coordinate.
    -
    -
    IIdentifiable - Interface in com.tractrac.model.lib.api
    -
    -
    Defines a method to get the Id of an entity.
    -
    -
    ILiveDataEvent - Interface in com.tractrac.subscription.lib.api.event
    -
    -
    - This event is used to monitorize the status of the live connection
    -
    -
    ILiveDataEvent.StatusType - Enum in com.tractrac.subscription.lib.api.event
    -
    -
    The status of the connection
    -
    -
    IMessage - Interface in com.tractrac.subscription.lib.api.event
    -
    -
    - General message associated to an event
    -
    -
    IMessageData - Interface in com.tractrac.model.lib.api.data
    -
    -
    - A generic message object that can transfer messages either as text or as - binary large object (blob).
    -
    -
    IMetadata - Interface in com.tractrac.model.lib.api.metadata
    -
    -
    - This class represents the metadata associated to an object.
    -
    -
    IMetadataContainer - Interface in com.tractrac.model.lib.api.metadata
    -
    -
    Implemented by all the classes that support metadata.
    -
    -
    IMetadataFactory - Interface in com.tractrac.model.lib.api.metadata
    -
    -
    - Factory used to create metadata.
    -
    -
    INamed - Interface in com.tractrac.model.lib.api
    -
    -
    Defines a method to get the name of an entity.
    -
    -
    IPathRoute - Interface in com.tractrac.model.lib.api.route
    -
    -
    - A route based on a number of paths/segments/tracks/lines.
    -
    -
    IPathRouteFactory - Interface in com.tractrac.model.lib.api.route
    -
    -
    - Factory used to create a list of IPathRoute.
    -
    -
    IPathSegment - Interface in com.tractrac.model.lib.api.route
    -
    -
    - A route segment is a part of a segment route.
    -
    -
    IPosition - Interface in com.tractrac.model.lib.api.data
    -
    -
    - A geographical position in latitude-longitude coordinates, recorded at a - certain time.
    -
    -
    IPositionFactory - Interface in com.tractrac.model.lib.api.data
    -
    -
    - Factory used to create IPosition objects.
    -
    -
    IPositionListener - Interface in com.tractrac.subscription.lib.api.competitor
    -
    -
    The listener interface for receiving events whenever a new position arrives - for a competitor.
    -
    -
    IPositionOffset - Interface in com.tractrac.model.lib.api.data
    -
    -
    A position along the route in the form of an offset, recorded at a certain - time.
    -
    -
    IPositionOffsetListener - Interface in com.tractrac.subscription.lib.api.competitor
    -
    -
    The listener interface for receiving events whenever a new offset position - arrives for a competitor.
    -
    -
    IPositionSnapped - Interface in com.tractrac.model.lib.api.data
    -
    -
    A snapped position is a position along a line or a route.
    -
    -
    IPositionSnappedListener - Interface in com.tractrac.subscription.lib.api.competitor
    -
    -
    The listener interface for receiving events whenever a new snapped position - arrives for a competitor
    -
    -
    IPropertiesContainer - Interface in com.tractrac.model.lib.api.metadata
    +
    getAbandonedRace() - Method in class com.tractrac.subscription.lib.api.race.RacesListener
     
    -
    IRace - Interface in com.tractrac.model.lib.api.event
    +
    getAttachment(IAttachmentKey) - Method in class com.tractrac.model.lib.api.attachment.AbstractAttachable
    +
     
    +
    getAttachment(IAttachmentKey) - Method in interface com.tractrac.model.lib.api.attachment.IAttachable
    +
    +
    Fetches custom data for this object.
    +
    +
    getAttachmentManager() - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Used to get the instance of the IAttachmentManager class.
    +
    +
    getBlob() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    +
    +
    Returns the binary value of the message, if available, otherwise null.
    +
    +
    getColor() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the color associated with competitor, if any
    +
    +
    getCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the competitor by Id
    +
    +
    getCompetitor() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    +
    +
    Returns the competitor in the race.
    +
    +
    getCompetitorClass() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the Competitor Class associated with this Competitor, if any.
    +
    +
    getCompetitorClasses() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - Encapsulates data related to a specific Race of a TracTrac Event.
    + Returns a collection of the competitor classes of this event.
    -
    IRaceCompetitor - Interface in com.tractrac.model.lib.api.event
    +
    getCompetitors() - Method in interface com.tractrac.model.lib.api.event.ICompetitorClass
    - Encapsulates data related to a specific Competitor of a specific Race.
    + Get a list of competitors in the class
    -
    IRaceCompetitorListener - Interface in com.tractrac.subscription.lib.api.race
    +
    getCompetitors() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - This listener is manages the relationship between competitor and race.
    + Returns a collection of the competitors of this event.
    -
    IRaceMessageListener - Interface in com.tractrac.subscription.lib.api.race
    +
    getControl() - Method in interface com.tractrac.model.lib.api.data.IControlPassing
    +
    +
    Returns the control that was passed
    +
    +
    getControl(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the control by Id
    +
    +
    getControlPoints() - Method in interface com.tractrac.model.lib.api.route.IControl
    - General message associated to a race
    + Gets the list of control points contained by this control.
    -
    IRaceSerie - Interface in com.tractrac.model.lib.api.event
    +
    getControls() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - A serie of races is a list of races that are a part of the same serie.
    + Returns a collection of all controls in this event.
    -
    IRacesListener - Interface in com.tractrac.subscription.lib.api.race
    +
    getControls() - Method in interface com.tractrac.model.lib.api.route.IControlRoute
    - This listener is used to receive events related with the race list.
    + The list of controls of a route
    -
    IRaceStartStopTimesChangeListener - Interface in com.tractrac.subscription.lib.api.race
    +
    getCoordinate(int) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    +
    Returns the coordinate at the specified index.
    +
    +
    getCoordinates() - Method in interface com.tractrac.model.lib.api.route.ISegment
    +
    +
    Returns the coordinates that the segment is based on.
    +
    +
    getDatabase() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    An event has a name and a database name.
    +
    +
    getDefaultRoute() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the default route
    +
    +
    getDescription() - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentKey
    +
    +
    Gets a free text that describes the attachment.
    +
    +
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns a description of the competitor.
    +
    +
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ICompetitorClass
    +
    +
    Returns a description.
    +
    +
    getDescription() - Method in interface com.tractrac.model.lib.api.event.ITeam
    +
    +
    Returns a description.
    +
    +
    getDirection() - Method in interface com.tractrac.model.lib.api.data.IPosition
    +
    +
    Returns the direction of the carrier at the time of the position.
    +
    +
    getError() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    +
    +
    If the IStoredDataEvent.getType() method returns IStoredDataEvent.Type.Error + , this method returns the error message
    +
    +
    getErrorMsgs() - Method in interface com.tractrac.subscription.lib.api.event.ILiveDataEvent
    +
    +
    If the ILiveDataEvent.getStatusType() method returns + ILiveDataEvent.StatusType.Error, this method returns the error message.
    +
    +
    getEvent() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the event that contains the race
    +
    +
    getEventEndTime() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Returns the event end time
    +
    +
    getEventFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Used to get the instance of the IEventFactory class.
    +
    +
    getEventStartTime() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Returns the event start time
    +
    +
    getExpectedRaceStartDate() - Method in interface com.tractrac.model.lib.api.event.IRace
    - The listener interface for receiving events whenever change in the start - and/or stop times of a race occurs.
    + It returns the expected date when the race starts.
    -
    IRaceSubscriber - Interface in com.tractrac.subscription.lib.api
    +
    getFirstName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Deprecated.
    +
    +
    getHandicapToD() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Gets the ToD (Time on Distance) handicap
    +
    +
    getHandicapToT() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Gets the ToT (Time in Time) handicap
    +
    +
    getHeight() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Returns the height/altitude of the position.
    +
    +
    getIcon() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the icon associated with competitor, if any.
    +
    +
    getIcon() - Method in interface com.tractrac.model.lib.api.event.ITeam
    +
    +
    Returns the icon associated with team, if any.
    +
    +
    getId() - Method in interface com.tractrac.model.lib.api.IIdentifiable
    +
    +
    Returns the unique id of this object.
    +
    +
    getIndex() - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentKey
    +
    +
    Gets the index of the attachment.
    +
    +
    getInitializedRace() - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    getKeys(Class<? extends IAttachable>) - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentManager
    +
    +
    It returns all the IAttachmentKey's for an specified + IAttachable class.
    +
    +
    getKind() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    +
    +
    Returns the kind id integer for this message object.
    +
    +
    getLastName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the last name of the competitor.
    +
    +
    getLatitude() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Returns the latitude coordinate of the position.
    +
    +
    getLength() - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    +
    +
    Returns the length of the route.
    +
    +
    getLiveDelay() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Returns the live delay in seconds.
    +
    +
    getLivePort() - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Gets the port for the live connection
    +
    +
    getLiveURI() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the live URI of this event.
    +
    +
    getLiveURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the live URI of this race.
    +
    +
    getLocalDataserverFactory() - Static method in class com.tractrac.subscription.lib.api.SubscriptionTestLocator
    +
    +
    Used to get the instance of the ILocalDataServerFactory class.
    +
    +
    getLongitude() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Returns the longitude coordinate of the position.
    +
    +
    getM() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    +
    +
    The value of the m coordinate
    +
    +
    getM() - Method in interface com.tractrac.model.lib.api.spatial.IGeoCoordinate
    +
    +
    Returns the m coordinate (in meters)
    +
    +
    getMessage() - Method in exception com.tractrac.model.lib.api.event.CreateModelException
    +
     
    +
    getMessage() - Method in exception com.tractrac.subscription.lib.api.SubscriberInitializationException
    +
     
    +
    getMessageData() - Method in interface com.tractrac.subscription.lib.api.event.IMessage
    +
    +
    The message associated to the event
    +
    +
    getMetadata() - Method in interface com.tractrac.model.lib.api.metadata.IMetadataContainer
    +
    +
    Returns the metadata associated with this object.
    +
    +
    getMetadataFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Used to get the instance of the IMetadataFactory class.
    +
    +
    getName() - Method in interface com.tractrac.model.lib.api.INamed
    +
    +
    Returns the name associated with this object
    +
    +
    getNationality() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the nationality associated with this competitor.
    +
    +
    getNationality() - Method in interface com.tractrac.model.lib.api.event.ITeam
    +
    +
    Returns the nationality.
    +
    +
    getObject() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    +
    +
    Returns the object related with this message (if exists)
    +
    +
    getOffset() - Method in interface com.tractrac.model.lib.api.data.IPositionOffset
    +
    +
    Returns the offset from the start of the line/route
    +
    +
    getParameterSet() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Returns the parameters used to create this event.
    +
    +
    getParamsURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the parameters file used to load this race
    +
    +
    getPassings() - Method in interface com.tractrac.model.lib.api.data.IControlPassings
    - This interface is used to add subscriptions for a IRace object.
    + Returns a list of control passings.
    -
    IRoute - Interface in com.tractrac.model.lib.api.route
    +
    getPathRouteFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Used to get the instance of the IPathRouteFactory class.
    +
    +
    getPicture() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the picture associated with competitor, if any
    +
    +
    getPicture() - Method in interface com.tractrac.model.lib.api.event.ITeam
    +
    +
    Returns the picture associated with team, if any
    +
    +
    getPosition() - Method in interface com.tractrac.model.lib.api.route.IControlPoint
    +
    +
    Deprecated. +
    the position for a control has to be retrieved using the subscription library
    +
    +
    +
    getPositionFactory() - Static method in class com.tractrac.model.lib.api.ModelLocator
    +
    +
    Used to get the instance of the IPositionFactory class.
    +
    +
    getProgress() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    +
    +
    If the IStoredDataEvent.getType() method returns + IStoredDataEvent.Type.Progress, this method returns the percentage of data loaded.
    +
    +
    getProperty(String) - Method in interface com.tractrac.model.lib.api.metadata.IPropertiesContainer
    +
    +
    Returns a property attached to the object
    +
    +
    getProperty(String, int) - Method in interface com.tractrac.model.lib.api.route.IControlRoute
    +
    +
    Returns a property attached to the object
    +
    +
    getRace(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the race by Id
    +
    +
    getRace() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    +
    +
    Returns the race that contains this race competitor
    +
    +
    getRaceCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Returns a race competitor by competitor id
    +
    +
    getRaceCompetitors() - Method in interface com.tractrac.model.lib.api.event.IRace
    - A route can be one of: IControlRoute or IPathRoute.
    + Returns the competitors that participate in this race.
    -
    ISegment - Interface in com.tractrac.model.lib.api.route
    +
    getRaceEndTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    - A segment is a part of an IPathRoute.
    + End time of race.
    -
    isEmpty() - Method in interface com.tractrac.model.lib.api.metadata.IMetadata
    -
    -
    Returns true if there are not metadata.
    -
    -
    IServerTimeListener - Interface in com.tractrac.subscription.lib.api.event
    +
    getRaces() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - Listener used to listen @link IServerTimeEvents.
    + Returns a collection of the races of this event.
    -
    isFavourite() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    -
    Returns if a competitor is considered favourite.
    -
    -
    isInitialized() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    getRaces() - Method in interface com.tractrac.model.lib.api.event.IRaceSerie
    - This value means if the race has been initialized.
    + Gets the list of races that compose the serie
    -
    isMultiple() - Method in interface com.tractrac.model.lib.api.route.IControl
    +
    getRaceSerie() - Method in interface com.tractrac.model.lib.api.event.IRace
    -
    Flag specifying whether the control is composed by more than one individual control points.
    +
    If the race is a part of a serie.
    -
    isReversed() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    -
    -
    Flag specifying whether the segment is part of the route in reverse order, - i.e.
    -
    -
    isStatic() - Method in interface com.tractrac.model.lib.api.route.IControlPoint
    -
    -
    Flag specifying whether the control point is static or dynamic.
    -
    -
    IStartStopData - Interface in com.tractrac.model.lib.api.data
    -
    -
    A combination of a start and a stop time
    -
    -
    IStartStopTimesChangeListener - Interface in com.tractrac.subscription.lib.api.race
    -
    -
    The listener interface for receiving events whenever change in the start - and/or stop times occurs.
    -
    -
    IStoredDataEvent - Interface in com.tractrac.subscription.lib.api.event
    +
    getRaceSeries() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - This event is used to monitorize the status of the stored connection
    + Gets the list of race series of this event
    -
    IStoredDataEvent.Type - Enum in com.tractrac.subscription.lib.api.event
    -
    -
    The type of message
    -
    -
    ISubscriber - Interface in com.tractrac.subscription.lib.api
    +
    getRaceStartTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    - Subscriber to receive events from a datasource.
    + Start time of race.
    -
    ISubscriberFactory - Interface in com.tractrac.subscription.lib.api
    +
    getReloadedRace() - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    getRoute(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the route by Id
    +
    +
    getRoute() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    +
    +
    Returns the route that this competitor is assigned to, if any.
    +
    +
    getRoutes() - Method in interface com.tractrac.model.lib.api.event.IEvent
    - Factory used to create ISubscribers.
    + Returns a collection of the routes of this event.
    -
    ISubscriberListener - Interface in com.tractrac.subscription.lib.api
    +
    getRoutes() - Method in interface com.tractrac.model.lib.api.event.IRace
    - All the listeners that are used for the consumer application in order to receive - events from the server side have to implemented this interface.
    + Gets the routes of this race
    -
    ITeam - Interface in com.tractrac.model.lib.api.event
    +
    getSegment() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    +
    +
    Returns the segment in this route segment.
    +
    +
    getSegmentIndex() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    +
    +
    Returns the index of this route segment in the route.
    +
    +
    getSegments() - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    - Encapsulates data related to a Team of an Event.
    + Returns the segments in the route.
    -
    ITimeData - Interface in com.tractrac.model.lib.api.data
    +
    getShortName() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    -
    A base interface for data classes that are related to a point in time
    +
    Returns the short name associated with this competitor.
    +
    +
    getShortName() - Method in interface com.tractrac.model.lib.api.route.IControl
    +
    +
    Gets the short name of the control ([0-2] characters)
    +
    +
    getSpeed() - Method in interface com.tractrac.model.lib.api.data.IPosition
    +
    +
    Returns the speed of the carrier at the time of the position.
    +
    +
    getStartOffset() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    +
    +
    Return the start offset of the segment that this route segment refers to.
    +
    +
    getStartTime() - Method in interface com.tractrac.model.lib.api.data.IStartStopData
    +
    +
    Returns the start time.
    +
    +
    getStartTime() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
    +
    +
    Returns the start time of this competitor.
    +
    +
    getStartTime(String) - Static method in enum com.tractrac.model.lib.api.event.StartTimeType
    +
    +
    Gets the start time type from a string
    +
    +
    getStartTimeType() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    + Gets the start time type of the race.
    +
    +
    getStatus() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Deprecated. +
    use {@link IRace#getVisibility() instead
    +
    +
    +
    getStatus(int) - Static method in enum com.tractrac.model.lib.api.event.RaceStatusType
    +
     
    +
    getStatusType() - Method in interface com.tractrac.subscription.lib.api.event.ILiveDataEvent
    +
    +
    Gets the status of the connection
    +
    +
    getStopTime() - Method in interface com.tractrac.model.lib.api.data.IStartStopData
    +
    +
    Returns the stop time.
    +
    +
    getStoredPort() - Method in interface com.tractrac.subscription.lib.api.ILocalDataserver
    +
    +
    Gets the port for the stored connection
    +
    +
    getStoredURI() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    Gets the stored URI of this event.
    +
    +
    getStoredURI() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the stored URI of this race.
    +
    +
    getSusbcriberFactory() - Static method in class com.tractrac.subscription.lib.api.SubscriptionLocator
    +
    +
    Used to get the instance of the ISubscriberFactory class.
    +
    +
    getTeam() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns the Competitor Class associated with this Competitor, if any.
    +
    +
    getTeams() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    +
    + Returns a collection of the teams of this event.
    +
    +
    getText() - Method in interface com.tractrac.model.lib.api.data.IMessageData
    +
    +
    Returns the text value of the message, if available, otherwise null.
    +
    +
    getText() - Method in interface com.tractrac.model.lib.api.metadata.IMetadata
    +
    +
    Returns the metadata like a text value.
    +
    +
    getTimestamp() - Method in interface com.tractrac.model.lib.api.data.ITimeData
    +
    +
    Returns the time stamp of the data.
    +
    +
    getTrackingEndTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    + End of tracking time when the trackers have stopped to send positions.
    +
    +
    getTrackingStartTime() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Start of tracking time can be set before start of race time in case it is + interesting to follow what happens up til the start time of the race.
    +
    +
    getType() - Method in interface com.tractrac.subscription.lib.api.event.IStoredDataEvent
    +
    +
    Gets the type of the stored data message.
    +
    +
    getValue() - Method in enum com.tractrac.model.lib.api.event.RaceStatusType
    +
     
    +
    getVisibility() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    Gets the visibility of the race that can be: + + Hidden: the race is not visible + Offline: the race is visible but it is not accessible + Online: the race is visible and accessible (the replay status has been + merged with this status) +
    +
    +
    getX() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    +
    +
    The value of the x coordinate
    +
    +
    getY() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    +
    +
    The value of the y coordinate
    +
    +
    getZ() - Method in interface com.tractrac.model.lib.api.spatial.ICoordinate
    +
    +
    The value of the z coordinate
    +
    +
    gotControlPassings(IRaceCompetitor, IControlPassings) - Method in interface com.tractrac.subscription.lib.api.control.IControlPassingsListener
    +
    +
    Invoked when a new control passing result arrives
    +
    +
    gotControlPointPosition(IControl, IPosition, int) - Method in interface com.tractrac.subscription.lib.api.control.IControlPointPositionListener
    +
    +
    Invoked when a new position for a control point arrives.
    +
    +
    gotEventMessage(IEvent, IMessageData) - Method in interface com.tractrac.subscription.lib.api.event.IEventMessageListener
    +
    +
    Invoked when a new event message arrives
    +
    +
    gotLiveDataEvent(ILiveDataEvent) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    +
    +
    Invoked when an update in the live data status occurs.
    +
    +
    gotPosition(IRaceCompetitor, IPosition) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionListener
    +
    +
    Invoked when a new position arrives
    +
    +
    gotPositionOffset(IRaceCompetitor, IPositionOffset) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionOffsetListener
    +
    +
    Invoked when a new position arrives
    +
    +
    gotPositionSnapped(IRaceCompetitor, IPositionSnapped) - Method in interface com.tractrac.subscription.lib.api.competitor.IPositionSnappedListener
    +
    +
    Invoked when a new snapped position arrives
    +
    +
    gotRaceMessage(IRace, IMessageData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceMessageListener
    +
    +
    Invoked when a new race message arrives
    +
    +
    gotRaceStartStopTime(IRace, IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener
    +
    +
    Invoked when an update in the race start and/or stop time occurs.
    +
    +
    gotRouteChange(IControlRoute, long) - Method in interface com.tractrac.subscription.lib.api.control.IControlRouteChangeListener
    +
    +
    Invoked when updates to a route arrives
    +
    +
    gotServerTime(long, long) - Method in interface com.tractrac.subscription.lib.api.event.IServerTimeListener
    +
    +
    This event is thrown when a new server time event arrives from the server
    +
    +
    gotStartStopTime(IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IStartStopTimesChangeListener
    +
    +
    Invoked when an update in the start and/or stop time occurs.
    +
    +
    gotStoredDataEvent(IStoredDataEvent) - Method in interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener
    +
    +
    Invoked when an update in the stored data status occurs.
    +
    +
    gotTrackingStartStopTime(IRace, IStartStopData) - Method in interface com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener
    +
    +
    Invoked when an update in the tracking start and/or stop time occurs.
    -A B C D G I L M N R S T U V  +A B C D E G I L M N P R S T U V  -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    L

    +

    I

    -
    loadRaces() - Method in interface com.tractrac.model.lib.api.event.IEvent
    +
    IAttachable - Interface in com.tractrac.model.lib.api.attachment
    -
    Load the races using the JSON for the races
    +
    + This interface adds functionality for attaching custom data to an object.
    -
    locateAlong(double) - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    +
    IAttachmentKey - Interface in com.tractrac.model.lib.api.attachment
    -
    Locate a coordinate along the route at the specified m offset value
    +
    + An attachment key is used as a key to save a new attachment.
    -
    locateAlong(double) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    IAttachmentManager - Interface in com.tractrac.model.lib.api.attachment
    -
    Returns the coordinate at the specified m ordinate value
    +
    Manager interface for creation of IAttachementKey for use with the + IAttachable interface.
    +
    +
    ICompetitor - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Encapsulates data related to a Competitor of an Event.
    +
    +
    ICompetitorClass - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Encapsulates data related to a Competitor Class in an Event.
    +
    +
    ICompetitorsListener - Interface in com.tractrac.subscription.lib.api.competitor
    +
    +
    + This listener is used to receive events related with the competitor list.
    +
    +
    IConnectionStatusListener - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + The listener interface for receiving events for the stored and live data + handler.
    +
    +
    IControl - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A mark/waypoint/control that has to be visited as a part of a route.
    +
    +
    IControlPassing - Interface in com.tractrac.model.lib.api.data
    +
    +
    A control passing is a combination of a time and a control, usually the time where + a competitor passed a control of an control route.
    +
    +
    IControlPassings - Interface in com.tractrac.model.lib.api.data
    +
    +
    A set of control passings, usually associated with a route (IControlRoute)
    +
    +
    IControlPassingsListener - Interface in com.tractrac.subscription.lib.api.control
    +
    +
    The listener interface for receiving events whenever a new control passings + result arrives for a competitor.
    +
    +
    IControlPoint - Interface in com.tractrac.model.lib.api.route
    +
    +
    + It represents any of the physical control points used in a logical control + (IControl).
    +
    +
    IControlPointPositionListener - Interface in com.tractrac.subscription.lib.api.control
    +
    +
    The listener interface for receiving events whenever a new position arrives + on a control point.
    +
    +
    IControlRoute - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A route based on a number of controls/waypoints/control points.
    +
    +
    IControlRouteChangeListener - Interface in com.tractrac.subscription.lib.api.control
    +
    +
    The listener interface for receiving events whenever a control route is changed.
    +
    +
    IControlsListener - Interface in com.tractrac.subscription.lib.api.control
    +
    +
    + This listener is used to receive events related with the control list.
    +
    +
    ICoordinate - Interface in com.tractrac.model.lib.api.spatial
    +
    +
    + A raw coordinate.
    +
    +
    ICoordinateSequence - Interface in com.tractrac.model.lib.api.spatial
    +
    +
    + A sequence of points connected by straight lines (line segments)
    +
    +
    IEvent - Interface in com.tractrac.model.lib.api.event
    +
    +
    Encapsulates data related to an Event: Races, Competitors, Competitor + Classes, Routes.
    +
    +
    IEventFactory - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Factory used to create an IEvent.
    +
    +
    IEventMessageListener - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + The listener interface for receiving events whenever a new message arrives.
    +
    +
    IEventSubscriber - Interface in com.tractrac.subscription.lib.api
    +
    +
    + Class that handles subscription to data for one event.
    +
    +
    IGeoCoordinate - Interface in com.tractrac.model.lib.api.spatial
    +
    +
    + A geographical coordinate.
    +
    +
    IIdentifiable - Interface in com.tractrac.model.lib.api
    +
    +
    Defines a method to get the Id of an entity.
    +
    +
    ILiveDataEvent - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + This event is used to monitorize the status of the live connection
    +
    +
    ILiveDataEvent.StatusType - Enum in com.tractrac.subscription.lib.api.event
    +
    +
    The status of the connection
    +
    +
    ILocalDataserver - Interface in com.tractrac.subscription.lib.api
    +
    +
    + This class is a local dataserver.
    +
    +
    ILocalDataServerFactory - Interface in com.tractrac.subscription.lib.api
    +
    +
    + Factory used to create ILocalDataserver instances.
    +
    +
    IMessage - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + General message associated to an event
    +
    +
    IMessageData - Interface in com.tractrac.model.lib.api.data
    +
    +
    + A generic message object that can transfer messages either as text or as + binary large object (blob).
    +
    +
    IMetadata - Interface in com.tractrac.model.lib.api.metadata
    +
    +
    + This class represents the metadata associated to an object.
    +
    +
    IMetadataContainer - Interface in com.tractrac.model.lib.api.metadata
    +
    +
    Implemented by all the classes that support metadata.
    +
    +
    IMetadataFactory - Interface in com.tractrac.model.lib.api.metadata
    +
    +
    + Factory used to create metadata.
    +
    +
    INamed - Interface in com.tractrac.model.lib.api
    +
    +
    Defines a method to get the name of an entity.
    +
    +
    IPathRoute - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A route based on a number of paths/segments/tracks/lines.
    +
    +
    IPathRouteFactory - Interface in com.tractrac.model.lib.api.route
    +
    +
    + Factory used to create a list of IPathRoute.
    +
    +
    IPathSegment - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A route segment is a part of a segment route.
    +
    +
    IPosition - Interface in com.tractrac.model.lib.api.data
    +
    +
    + A geographical position in latitude-longitude coordinates, recorded at a + certain time.
    +
    +
    IPositionFactory - Interface in com.tractrac.model.lib.api.data
    +
    +
    + Factory used to create IPosition objects.
    +
    +
    IPositionListener - Interface in com.tractrac.subscription.lib.api.competitor
    +
    +
    The listener interface for receiving events whenever a new position arrives + for a competitor.
    +
    +
    IPositionOffset - Interface in com.tractrac.model.lib.api.data
    +
    +
    A position along the route in the form of an offset, recorded at a certain + time.
    +
    +
    IPositionOffsetListener - Interface in com.tractrac.subscription.lib.api.competitor
    +
    +
    The listener interface for receiving events whenever a new offset position + arrives for a competitor.
    +
    +
    IPositionSnapped - Interface in com.tractrac.model.lib.api.data
    +
    +
    A snapped position is a position along a line or a route.
    +
    +
    IPositionSnappedListener - Interface in com.tractrac.subscription.lib.api.competitor
    +
    +
    The listener interface for receiving events whenever a new snapped position + arrives for a competitor
    +
    +
    IPropertiesContainer - Interface in com.tractrac.model.lib.api.metadata
    +
     
    +
    IRace - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Encapsulates data related to a specific Race of a TracTrac Event.
    +
    +
    IRaceCompetitor - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Encapsulates data related to a specific Competitor of a specific Race.
    +
    +
    IRaceCompetitorListener - Interface in com.tractrac.subscription.lib.api.race
    +
    +
    + This listener is manages the relationship between competitor and race.
    +
    +
    IRaceMessageListener - Interface in com.tractrac.subscription.lib.api.race
    +
    +
    + General message associated to a race
    +
    +
    IRaceSerie - Interface in com.tractrac.model.lib.api.event
    +
    +
    + A serie of races is a list of races that are a part of the same serie.
    +
    +
    IRacesListener - Interface in com.tractrac.subscription.lib.api.race
    +
    +
    + This listener is used to receive events related with the race list.
    +
    +
    IRaceStartStopTimesChangeListener - Interface in com.tractrac.subscription.lib.api.race
    +
    +
    + The listener interface for receiving events whenever change in the start + and/or stop times of a race occurs.
    +
    +
    IRaceSubscriber - Interface in com.tractrac.subscription.lib.api
    +
    +
    + This interface is used to add subscriptions for a IRace object.
    +
    +
    IRoute - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A route can be one of: IControlRoute or IPathRoute.
    +
    +
    ISegment - Interface in com.tractrac.model.lib.api.route
    +
    +
    + A segment is a part of an IPathRoute.
    +
    +
    isEmpty() - Method in interface com.tractrac.model.lib.api.metadata.IMetadata
    +
    +
    Returns true if there are not metadata.
    +
    +
    IServerTimeListener - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + Listener used to listen @link IServerTimeEvents.
    +
    +
    isFavourite() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Returns if a competitor is considered favourite.
    +
    +
    isInitialized() - Method in interface com.tractrac.model.lib.api.event.IRace
    +
    +
    + This value means if the race has been initialized.
    +
    +
    isMultiple() - Method in interface com.tractrac.model.lib.api.route.IControl
    +
    +
    Flag specifying whether the control is composed by more than one individual control points.
    +
    +
    isNonCompeting() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
    +
    +
    Gets if the competitor can compete in the races or if it is a non competing + competitor
    +
    +
    isReversed() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
    +
    +
    Flag specifying whether the segment is part of the route in reverse order, + i.e.
    +
    +
    isStatic() - Method in interface com.tractrac.model.lib.api.route.IControlPoint
    +
    +
    Flag specifying whether the control point is static or dynamic.
    +
    +
    IStartStopData - Interface in com.tractrac.model.lib.api.data
    +
    +
    A combination of a start and a stop time
    +
    +
    IStartStopTimesChangeListener - Interface in com.tractrac.subscription.lib.api.race
    +
    +
    The listener interface for receiving events whenever change in the start + and/or stop times occurs.
    +
    +
    IStoredDataEvent - Interface in com.tractrac.subscription.lib.api.event
    +
    +
    + This event is used to monitorize the status of the stored connection
    +
    +
    IStoredDataEvent.Type - Enum in com.tractrac.subscription.lib.api.event
    +
    +
    The type of message
    +
    +
    ISubscriber - Interface in com.tractrac.subscription.lib.api
    +
    +
    + Subscriber to receive events from a datasource.
    +
    +
    ISubscriberFactory - Interface in com.tractrac.subscription.lib.api
    +
    +
    + Factory used to create ISubscribers.
    +
    +
    ISubscriberListener - Interface in com.tractrac.subscription.lib.api
    +
    +
    + All the listeners that are used for the consumer application in order to receive + events from the server side have to implemented this interface.
    +
    +
    isUpdateReceived() - Method in class com.tractrac.subscription.lib.api.race.RacesListener
    +
     
    +
    ITeam - Interface in com.tractrac.model.lib.api.event
    +
    +
    + Encapsulates data related to a Team of an Event.
    +
    +
    ITimeData - Interface in com.tractrac.model.lib.api.data
    +
    +
    A base interface for data classes that are related to a point in time
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    M

    +

    L

    -
    ModelLocator - Class in com.tractrac.model.lib.api
    +
    loadRaces() - Method in interface com.tractrac.model.lib.api.event.IEvent
    -
    - This class is a locator used to get the instance of some of the factories - that are used for the creation of the objects.
    +
    Load the races using the JSON for the races
    +
    +
    locateAlong(double) - Method in interface com.tractrac.model.lib.api.route.IPathRoute
    +
    +
    Locate a coordinate along the route at the specified m offset value
    +
    +
    locateAlong(double) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
    +
    +
    Returns the coordinate at the specified m ordinate value
    -
    ModelLocator() - Constructor for class com.tractrac.model.lib.api.ModelLocator
    -
     
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    -
    A B C D G I L M N R S T U V  +
    A B C D E G I L M N P R S T U V  -

    N

    +

    M

    -
    newKey(Class<? extends IAttachable>, String) - Method in interface com.tractrac.model.lib.api.attachment.IAttachmentManager
    +
    MetadataTest - Class in com.tractrac.model.lib.api.metadata
    -
    Creates a new IAttachmentKey for attach objects for a concrete - class
    +
    + Test the metadata
    +
    MetadataTest() - Constructor for class com.tractrac.model.lib.api.metadata.MetadataTest
    +
     
    +
    ModelLocator - Class in com.tractrac.model.lib.api
    +
    +
    + This class is a locator used to get the instance of some of the factories + that are used for the creation of the objects.
    +
    +
    ModelLocator() - Constructor for class com.tractrac.model.lib.api.ModelLocator
    +
     
    +
    ModelLocatorTest - Class in com.tractrac.model.lib.api
    +
    +
    + This test checks if an implementation of the model library implements all the + mandatory objects
    +
    +
    ModelLocatorTest() - Constructor for class com.tractrac.model.lib.api.ModelLocatorTest
    +
     
    -A B C D G I L M N R S T U V 
    +A B C D E G I L M N P R S T U V 
    diff --git a/java/com.tractrac.clientmodule/javadoc/index.html b/java/com.tractrac.clientmodule/javadoc/index.html old mode 100755 new mode 100644 index 46e243dc04f..99edf2c5c2f --- a/java/com.tractrac.clientmodule/javadoc/index.html +++ b/java/com.tractrac.clientmodule/javadoc/index.html @@ -2,7 +2,7 @@ - + Generated Documentation (Untitled)