mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-24 13:03:55 +00:00
introduced smartphone UUID identifier as standard, imei identifier for testing only
This commit is contained in:
1 parent
cf2fe722b9
commit
92aef41f0c
36 files changed
+202
-70
No files matched your search
+1
-1
@@ -22,9 +22,9 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockDeviceAndSessioinIdentifierWithGPSFixesDeserializer;
|
||||
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.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.Track;
|
||||
import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl;
|
||||
|
||||
+1
-1
@@ -45,8 +45,8 @@ import com.sap.sailing.domain.racelog.RaceLogEventAuthor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
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.racelogtracking.RaceLogTrackingAdapter;
|
||||
import com.sap.sailing.domain.racelogtracking.impl.RaceLogTrackingAdapterFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
|
||||
+1
-1
@@ -19,8 +19,8 @@ import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockDeviceAndSessioinIdentifierWithGPSFixesDeserializer;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.servlet.RecordFixesPostServlet;
|
||||
import com.sap.sailing.domain.racelogtracking.test.AbstractGPSFixStoreTest;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegi
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.test.AbstractGPSFixStoreTest;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
|
||||
|
||||
+2
-2
@@ -17,7 +17,8 @@ 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.Util.Triple;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
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;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
@@ -26,7 +27,6 @@ import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DeviceAndSessionIdentifierWithGPSFixesSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.GPSFixMovingNmeaDTOJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
|
||||
public class PostFixes extends AbstractJsonOverHttpTest {
|
||||
protected static final SmartphoneImeiIdentifier device = new SmartphoneImeiIdentifier("a");
|
||||
|
||||
-2
@@ -1,9 +1,7 @@
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DeviceAndSessionIdentifierWithGPSFixesDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DeviceIdentifierJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
|
||||
public class MockDeviceAndSessioinIdentifierWithGPSFixesDeserializer extends
|
||||
DeviceAndSessionIdentifierWithGPSFixesDeserializer {
|
||||
|
||||
-1
@@ -2,7 +2,6 @@ package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
|
||||
/**
|
||||
* A simplified implementation of the {@link TypeBasedServiceFinder} interface that, when the device type
|
||||
|
||||
-2
@@ -1,9 +1,7 @@
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
|
||||
/**
|
||||
* A simplified implementation of the {@link TypeBasedServiceFinder} interface that, when the device type
|
||||
|
||||
-2
@@ -2,8 +2,6 @@ package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.impl.SmartphoneImeiMongoHandler;
|
||||
|
||||
/**
|
||||
* A simplified implementation of the {@link TypeBasedServiceFinder} interface that, when the device type
|
||||
|
||||
-1
@@ -7,7 +7,6 @@ import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.GPSFixMongoHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.GPSFixJsonHandler;
|
||||
|
||||
|
||||
+3
-1
@@ -1,4 +1,6 @@
|
||||
package com.sap.sailing.domain.racelog.tracking;
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
|
||||
|
||||
public class SmartphoneImeiIdentifier implements DeviceIdentifier {
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.tracking.impl;
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.impl.SmartphoneImeiSerializationHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
|
||||
public class SmartphoneImeiJsonHandler extends SmartphoneImeiSerializationHandler
|
||||
+1
-2
@@ -1,9 +1,8 @@
|
||||
package com.sap.sailing.domain.racelogtracking.impl;
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.impl.SmartphoneImeiSerializationHandler;
|
||||
|
||||
public class SmartphoneImeiMongoHandler extends SmartphoneImeiSerializationHandler
|
||||
implements DeviceIdentifierMongoHandler {
|
||||
+1
-2
@@ -1,9 +1,8 @@
|
||||
package com.sap.sailing.domain.racelog.tracking.impl;
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
|
||||
public class SmartphoneImeiSerializationHandler {
|
||||
private SmartphoneImeiIdentifier castIdentifier(DeviceIdentifier identifier) throws TransformationException {
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.domain.racelogtracking.impl;
|
||||
package com.sap.sailing.domain.racelog.tracking.test.mock;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifierStringSerializationHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.impl.SmartphoneImeiSerializationHandler;
|
||||
|
||||
public class SmartphoneImeiStringSerializationHandler extends SmartphoneImeiSerializationHandler
|
||||
implements DeviceIdentifierStringSerializationHandler {
|
||||
+5
-5
@@ -14,7 +14,7 @@ import org.osgi.framework.ServiceRegistration;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifierStringSerializationHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.PingDeviceIdentifierImpl;
|
||||
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapterFactory;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
@@ -31,7 +31,7 @@ import com.sap.sailing.server.gateway.serialization.impl.GPSFixNmeaDTOJsonSerial
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.GPSFixJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.GPSFixJsonHandlerImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneUUIDJsonHandler;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
private static final Logger logger = Logger.getLogger(Activator.class.getName());
|
||||
@@ -52,9 +52,9 @@ public class Activator implements BundleActivator {
|
||||
|
||||
@Override
|
||||
public void start(BundleContext context) throws Exception {
|
||||
registrations.add(context.registerService(DeviceIdentifierMongoHandler.class, new SmartphoneImeiMongoHandler(), getDict(SmartphoneImeiIdentifier.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierJsonHandler.class, new SmartphoneImeiJsonHandler(), getDict(SmartphoneImeiIdentifier.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierStringSerializationHandler.class, new SmartphoneImeiStringSerializationHandler(), getDict(SmartphoneImeiIdentifier.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierMongoHandler.class, new SmartphoneUUIDMongoHandler(), getDict(SmartphoneUUIDIdentifier.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierJsonHandler.class, new SmartphoneUUIDJsonHandler(), getDict(SmartphoneUUIDIdentifier.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierStringSerializationHandler.class, new SmartphoneUUIDStringSerializationHandler(), getDict(SmartphoneUUIDIdentifier.TYPE)));
|
||||
|
||||
registrations.add(context.registerService(DeviceIdentifierMongoHandler.class, new PingDeviceIdentifierMongoHandler(), getDict(PingDeviceIdentifierImpl.TYPE)));
|
||||
registrations.add(context.registerService(DeviceIdentifierJsonHandler.class, new PingDeviceIdentifierJsonHandler(), getDict(PingDeviceIdentifierImpl.TYPE)));
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.sap.sailing.domain.racelogtracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDSerializationHandler;
|
||||
|
||||
public class SmartphoneUUIDMongoHandler extends SmartphoneUUIDSerializationHandler
|
||||
implements DeviceIdentifierMongoHandler {
|
||||
|
||||
@Override
|
||||
public DeviceIdentifier deserialize(Object serialized, String type, String stringRepresentation)
|
||||
throws TransformationException {
|
||||
return deserialize((String) serialized, type, stringRepresentation);
|
||||
}
|
||||
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package com.sap.sailing.domain.racelogtracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifierStringSerializationHandler;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDSerializationHandler;
|
||||
|
||||
public class SmartphoneUUIDStringSerializationHandler extends SmartphoneUUIDSerializationHandler
|
||||
implements DeviceIdentifierStringSerializationHandler {
|
||||
|
||||
}
|
||||
@@ -11,4 +11,5 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0",
|
||||
org.objenesis;bundle-version="1.3.0",
|
||||
org.hamcrest;bundle-version="1.1.0",
|
||||
org.mockito.mockito-core;bundle-version="1.9.5",
|
||||
com.sap.sailing.domain.test
|
||||
com.sap.sailing.domain.test,
|
||||
com.sap.sailing.domain.racelogtrackingadapter.testsupport;bundle-version="1.0.0"
|
||||
+1
-1
@@ -19,7 +19,7 @@ import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.test.AbstractLeaderboardTest;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -23,8 +23,8 @@ import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventAuthor;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMapping;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.analyzing.impl.DeviceCompetitorMappingFinder;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
|
||||
public class DeviceMappingFinderTest extends AbstractRaceLogTrackingTest {
|
||||
private final Competitor competitor = new CompetitorImpl("comp", "Comp", null, null, null);
|
||||
|
||||
+27
-1
@@ -4,7 +4,33 @@ import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Identifies any kind of tracking device. Should be implemented accordingly for different tracking
|
||||
* adapters, e.g. for smartphones, Igtimi trackers etc.
|
||||
* adapters, e.g. for smartphones, Igtimi trackers etc.<p>
|
||||
*
|
||||
* Device identifiers are integrated in such a way, that a third party wishing to use their own
|
||||
* types of device identifiers can do so without touching the existing code base. Instead, handlers
|
||||
* for serializing device identifiers can be registered via the OSGi service registry. When adding a
|
||||
* new device identifier, the following handlers <b>have to</b> be implemented and registered:
|
||||
* <ul>
|
||||
* <li>{@code DeviceIdentifierMongoHandler}</li>
|
||||
* </ul>
|
||||
* The following handlers are optional:
|
||||
* <ul>
|
||||
* <li>{@code DeviceIdentifierJsonHandler}:
|
||||
* Enables managing such identifiers from a smartphone or tablet through the {@link RaceLog}.</li>
|
||||
* <li>{@code DeviceIdentifierStringSerializationHandler}:
|
||||
* Enables device identifiers to be created and managed in the admin console.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* Refer to {@link SmartphoneUUIDIdentifier} and the related handlers as an implementation example.
|
||||
* An example on how to register the handlers in the OSGi service registry is given in
|
||||
* {@link DeviceIdentifierSerializationHandler}.<p>
|
||||
*
|
||||
* The handler is chosen based on the {@code identifier type} of the device identifier. This identifier
|
||||
* type should be unique, consider using a fully qualified class name.<p>
|
||||
*
|
||||
* The {@link #getStringRepresentation() string representation} of a device identifier is used to generate
|
||||
* a {@link PlaceHolderDeviceIdentifier} in case an appropriate handler is missing.<p>
|
||||
*
|
||||
* {@link Object#equals(Object)} and {@link Object#hashCode()} should be implemented so that multiple
|
||||
* deserializations of same device identifier (conceptually) result in objects that are be identified
|
||||
|
||||
+12
-2
@@ -4,9 +4,19 @@ import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
|
||||
/**
|
||||
* Handles serialization and deserialization of {@link DeviceIdentifier}s.
|
||||
* Base interface for handlers of serialization and deserialization of {@link DeviceIdentifier}s.
|
||||
* Additional information is passed around to enable fallback mechanisms (see {@link PlaceHolderDeviceIdentifier})
|
||||
* in case no appropriate handler for a {@code type} is registered.
|
||||
* in case no appropriate handler for a {@code type} is registered.<p>
|
||||
*
|
||||
* Handlers that implement child-interfaces (e.g. {@link DeviceIdentifierStringSerializationHandler} have to be
|
||||
* registered in the OSGi service registry for the respective child-interface.Also, the device identifier type has to be
|
||||
* added as a property to that service registration, as in this example:<p>
|
||||
*
|
||||
* <pre>
|
||||
* Dictionary<String, String> properties = new Hashtable<String, String>();
|
||||
* properties.put(TypeBasedServiceFinder.TYPE, type);
|
||||
* context.registerService(DeviceIdentifierMongoHandler.class, new SmartphoneUUIDMongoHandler(), properties)}.
|
||||
* </pre><p>
|
||||
*
|
||||
* @author Fredrik Teschke
|
||||
*
|
||||
|
||||
+2
-1
@@ -3,7 +3,8 @@ package com.sap.sailing.domain.racelog.tracking;
|
||||
|
||||
|
||||
/**
|
||||
* If the proper identifier cannot be resolved, for example because the OSGi context is not available
|
||||
* If the proper identifier cannot be resolved (with an approriate {@link DeviceIdentifierSerializationHandler}),
|
||||
* for example because the OSGi context is not available
|
||||
* on the smartphone receiving the {@code DevicieIdentifier} via its {@code RaceLog}, then this
|
||||
* class can be used as a placeholder, that will at least offer the {@code type} and {@code string representation}
|
||||
* of the original identifier.
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.sap.sailing.domain.racelog.tracking;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
public interface SmartphoneUUIDIdentifier extends DeviceIdentifier {
|
||||
String TYPE = "smartphoneUUID";
|
||||
|
||||
UUID getUUID();
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.sap.sailing.domain.racelog.tracking;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.tracking.impl.SmartphoneUUIDIdentifierImpl;
|
||||
|
||||
public class SmartphoneUUIDSerializationHandler {
|
||||
private SmartphoneUUIDIdentifier castIdentifier(DeviceIdentifier identifier) throws TransformationException {
|
||||
if (!(identifier instanceof SmartphoneUUIDIdentifier))
|
||||
throw new TransformationException("Expected a SmartphoneUUIDIdentifier, got instead: " + identifier);
|
||||
return (SmartphoneUUIDIdentifier) identifier;
|
||||
}
|
||||
|
||||
public Pair<String, String> serialize(DeviceIdentifier deviceIdentifier) throws TransformationException {
|
||||
return new Pair<String, String>(castIdentifier(deviceIdentifier).getUUID().toString(), SmartphoneUUIDIdentifier.TYPE);
|
||||
}
|
||||
|
||||
public DeviceIdentifier deserialize(String input, String type, String stringRep) {
|
||||
return new SmartphoneUUIDIdentifierImpl(UUID.fromString(input));
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.sap.sailing.domain.racelog.tracking.impl;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDIdentifier;
|
||||
|
||||
|
||||
public class SmartphoneUUIDIdentifierImpl implements SmartphoneUUIDIdentifier {
|
||||
private static final long serialVersionUID = -1747763242191049428L;
|
||||
|
||||
private final UUID uuid;
|
||||
|
||||
public SmartphoneUUIDIdentifierImpl(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public UUID getUUID() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifierType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UUID " + uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof SmartphoneUUIDIdentifier) {
|
||||
return ((SmartphoneUUIDIdentifier) obj).getUUID().equals(uuid);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return uuid.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStringRepresentation() {
|
||||
return uuid.toString();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -33,9 +33,9 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.PlaceHolderDeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockEmptyServiceFinderFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneImeiServiceFinderFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
|
||||
public class StoreAndLoadDeviceIdentifierTest extends AbstractMongoDBTest {
|
||||
public StoreAndLoadDeviceIdentifierTest() throws UnknownHostException, MongoException {
|
||||
|
||||
+1
-1
@@ -50,8 +50,8 @@ import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneImeiServiceFinderFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
|
||||
public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
||||
|
||||
|
||||
+1
-1
@@ -34,8 +34,8 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
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.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicGPSFixMovingTrackImpl;
|
||||
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer;
|
||||
|
||||
public class SmartphoneImeiIdentifierJsonDeserializer extends TypeBasedJsonDeserializer<SmartphoneImeiIdentifier> {
|
||||
public static final String FIELD_IMEI = "imei";
|
||||
|
||||
@Override
|
||||
protected String getType() {
|
||||
return SmartphoneImeiIdentifier.TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SmartphoneImeiIdentifier deserializeAfterCheckingType(JSONObject object)
|
||||
throws JsonDeserializationException {
|
||||
String imei = (String) object.get(FIELD_IMEI);
|
||||
return (SmartphoneImeiIdentifier) new SmartphoneImeiIdentifier(imei);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -6,7 +6,7 @@ import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDIdentifier;
|
||||
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.ControlPointDeserializer;
|
||||
@@ -40,13 +40,13 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartPro
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTimeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTrackingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogWindFixEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneUUIDJsonHandler;
|
||||
|
||||
public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent> {
|
||||
|
||||
public static RaceLogEventDeserializer create(SharedDomainFactory domainFactory) {
|
||||
JsonDeserializer<DeviceIdentifier> deviceDeserializer = DeviceIdentifierJsonDeserializer.create(
|
||||
new SmartphoneImeiJsonHandler(), SmartphoneImeiIdentifier.TYPE);
|
||||
new SmartphoneUUIDJsonHandler(), SmartphoneUUIDIdentifier.TYPE);
|
||||
return create(domainFactory, deviceDeserializer);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer;
|
||||
@@ -37,12 +37,12 @@ import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJson
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneUUIDJsonHandler;
|
||||
|
||||
public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, RaceLogEventVisitor {
|
||||
public static JsonSerializer<RaceLogEvent> create(JsonSerializer<Competitor> competitorSerializer) {
|
||||
return create(competitorSerializer, DeviceIdentifierJsonSerializer.create(
|
||||
new SmartphoneImeiJsonHandler(), SmartphoneImeiIdentifier.TYPE));
|
||||
new SmartphoneUUIDJsonHandler(), SmartphoneUUIDIdentifier.TYPE));
|
||||
}
|
||||
|
||||
public static JsonSerializer<RaceLogEvent> create(JsonSerializer<Competitor> competitorSerializer,
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.tracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneUUIDSerializationHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
|
||||
|
||||
public class SmartphoneUUIDJsonHandler extends SmartphoneUUIDSerializationHandler
|
||||
implements DeviceIdentifierJsonHandler {
|
||||
|
||||
@Override
|
||||
public DeviceIdentifier deserialize(Object serialized, String type, String stringRepresentation)
|
||||
throws TransformationException {
|
||||
return deserialize((String) serialized, type, stringRepresentation);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -28,8 +28,9 @@ import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.PlaceHolderDeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockEmptyServiceFinder;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiJsonHandler;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DeviceIdentifierJsonDeserializer;
|
||||
@@ -40,7 +41,6 @@ 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.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandler;
|
||||
|
||||
public class RaceLogSerializationTest {
|
||||
private JsonSerializer<RaceLogEvent> serializer;
|
||||
|
||||
+3
-1
@@ -30,6 +30,7 @@ import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEventDeserializer;
|
||||
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.DeviceIdentifierJsonSerializer;
|
||||
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;
|
||||
@@ -142,7 +143,8 @@ public class AddEntryToRaceLogJsonPostServlet extends AbstractJsonHttpServlet {
|
||||
|
||||
protected void sendResponse(HttpServletResponse response, final UUID clientUuid, RaceLog raceLog,
|
||||
Iterable<RaceLogEvent> eventsToSendBackToClient) throws IOException {
|
||||
JsonSerializer<RaceLogEvent> serializer = RaceLogEventSerializer.create(new CompetitorJsonSerializer());
|
||||
JsonSerializer<RaceLogEvent> serializer = RaceLogEventSerializer.create(new CompetitorJsonSerializer(),
|
||||
new DeviceIdentifierJsonSerializer(deviceJsonServiceFinder));
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
boolean first = true;
|
||||
outputStream.write('[');
|
||||
|
||||
Reference in new issue
Block a user