diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java index 04798b95115..7e9b5f929d7 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java @@ -36,7 +36,7 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver; import com.sap.sailing.domain.leaderboard.LeaderboardRegistry; import com.sap.sailing.domain.leaderboard.RegattaLeaderboardWithEliminations; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.regattalike.RegattaLikeIdentifier; import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; @@ -226,5 +226,5 @@ public interface DomainObjectFactory { Wind loadWind(Document windDocument); - HashMap loadFingerprintsForMarkPassingHashes(); + HashMap loadFingerprintsForMarkPassingHashes(); } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java index 67dca7d11f2..9d647063896 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java @@ -27,7 +27,7 @@ import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.dto.AnniversaryType; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.regattalike.RegattaLikeIdentifier; import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; @@ -231,5 +231,5 @@ public interface MongoObjectFactory { Document storeWind(Wind wind); - void storeFingerprintForMarkPassingHash(TrackedRaceHashFingerprint fingerprint, RaceIdentifier raceIdentification); + void storeFingerprintForMarkPassingHash(MarkPassingHashFingerprint fingerprint, RaceIdentifier raceIdentification); } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java index 06e4c3c9fa8..b65a82ad6d9 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java @@ -123,7 +123,7 @@ public enum CollectionNames { ANNIVERSARIES, /** - * Contains the Hashes for the {@link TrackedRaceHashFingerprint} + * Contains the Hashes for the {@link MarkPassingHashFingerprint} */ MARKPASSINGHASHES; 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 e4dc1657ddc..ece290b3c65 100644 --- 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 @@ -235,8 +235,8 @@ import com.sap.sailing.domain.leaderboard.impl.LeaderboardGroupImpl; import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl; import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; -import com.sap.sailing.domain.markpassinghash.impl.TrackedRaceHashFingerprintImpl; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.markpassinghash.impl.MarkPassingHashFingerprintImpl; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.FieldNames; import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; @@ -3150,10 +3150,10 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } @Override - public HashMap loadFingerprintsForMarkPassingHashes() { + public HashMap loadFingerprintsForMarkPassingHashes() { MongoCollection mongoCollection = database.getCollection(CollectionNames.MARKPASSINGHASHES.name()); MongoCursor cursor = mongoCollection.find().iterator(); - HashMap fingerprintHashMap = new HashMap(); + HashMap fingerprintHashMap = new HashMap(); while (cursor.hasNext()) { Document currentDocument = cursor.next(); RaceIdentifier raceIdentifier = loadRaceIdentifier(currentDocument); @@ -3166,7 +3166,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } catch (ParseException e) { e.printStackTrace(); } - TrackedRaceHashFingerprint result = new TrackedRaceHashFingerprintImpl(json); //hier entsteht fehler + MarkPassingHashFingerprint result = new MarkPassingHashFingerprintImpl(json); //hier entsteht fehler fingerprintHashMap.put(raceIdentifier, result); } return fingerprintHashMap; 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 4427caa7720..dc22eb11618 100644 --- 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 @@ -125,7 +125,7 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboardWithEliminations; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; import com.sap.sailing.domain.persistence.FieldNames; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.racelog.RaceLogIdentifier; @@ -1960,7 +1960,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { return storeRegattaLogEvent(regattaLikeIdentifier, document); } - public void storeFingerprintForMarkPassingHash(TrackedRaceHashFingerprint fingerprint, RaceIdentifier raceIdentification) { + public void storeFingerprintForMarkPassingHash(MarkPassingHashFingerprint fingerprint, RaceIdentifier raceIdentification) { MongoCollection markPassingCollection = database.getCollection(CollectionNames.MARKPASSINGHASHES.name()); JSONObject fingerprintjson = fingerprint.toJson(); Document result = Document.parse(fingerprintjson.toString()); diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassinghash/MarkPassingHashJsonSerializationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassinghash/MarkPassingHashJsonSerializationTest.java index dc5b9c8e183..2d86812fb04 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassinghash/MarkPassingHashJsonSerializationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassinghash/MarkPassingHashJsonSerializationTest.java @@ -29,8 +29,8 @@ import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl; import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashForMaskPassingCalculationFactory; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashCalculationFactory; import com.sap.sailing.domain.test.OnlineTracTracBasedTest; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tractracadapter.ReceiverType; @@ -71,20 +71,20 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes // @Test public void testJsonSerialization() { - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; - TrackedRaceHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1, calculator1.getCalculatorVersion()); - assertTrue(fingerprint1.matches(trackedRace1, calculator1.getCalculatorVersion())); + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; + MarkPassingHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1); + assertTrue(fingerprint1.matches(trackedRace1)); JSONObject json1 = fingerprint1.toJson(); - TrackedRaceHashFingerprint output1 = factory.fromJson(json1); - assertTrue("Original and de-serialized copy are equal", output1.matches(trackedRace1, calculator1.getCalculatorVersion())); + MarkPassingHashFingerprint output1 = factory.fromJson(json1); + assertTrue("Original and de-serialized copy are equal", output1.matches(trackedRace1)); } // @Test public void testJsonSerializationWithChangesInMarkFixes() { DynamicTrackedRaceImpl testRace = trackedRace2; - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; - TrackedRaceHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1, calculator1.getCalculatorVersion()); - assertTrue(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; + MarkPassingHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1); + assertTrue(fingerprint1.matches(trackedRace2)); // Change of the race should result in a different hash TimePoint epoch = new MillisecondsTimePoint(0l); TimePoint now = MillisecondsTimePoint.now(); @@ -100,9 +100,9 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes testRace.getOrCreateTrack(mark).addGPSFix(new GPSFixImpl(markPositions.get(mark.getName()), now)); } } - assertFalse(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); - TrackedRaceHashFingerprint fingerprint2 = factory.createFingerprint(testRace, calculator2.getCalculatorVersion()); - assertFalse(fingerprint2.matches(trackedRace1, calculator1.getCalculatorVersion())); + assertFalse(fingerprint1.matches(trackedRace2)); + MarkPassingHashFingerprint fingerprint2 = factory.createFingerprint(testRace); + assertFalse(fingerprint2.matches(trackedRace1)); JSONObject json1 = fingerprint1.toJson(); JSONObject json2 = fingerprint2.toJson(); assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2); @@ -110,17 +110,17 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes // @Test public void testWaypointChangePassingInstruction() { - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; - TrackedRaceHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1, calculator1.getCalculatorVersion()); - assertTrue(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; + MarkPassingHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1); + assertTrue(fingerprint1.matches(trackedRace2)); Waypoint wp = trackedRace2.getRace().getCourse().getFirstWaypoint(); ControlPoint cP = wp.getControlPoint(); WaypointImpl wpNew = new WaypointImpl(cP, PassingInstruction.Gate); trackedRace2.getRace().getCourse().removeWaypoint(0); trackedRace2.getRace().getCourse().addWaypoint(0, wpNew); - TrackedRaceHashFingerprint fingerprint2 = factory.createFingerprint(trackedRace2, calculator2.getCalculatorVersion()); - assertFalse(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); - assertFalse(fingerprint2.matches(trackedRace1, calculator1.getCalculatorVersion())); + MarkPassingHashFingerprint fingerprint2 = factory.createFingerprint(trackedRace2); + assertFalse(fingerprint1.matches(trackedRace2)); + assertFalse(fingerprint2.matches(trackedRace1)); JSONObject json1 = fingerprint1.toJson(); JSONObject json2 = fingerprint2.toJson(); assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2); @@ -128,18 +128,18 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes // @Test public void testControlPointChange() { - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; - TrackedRaceHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1, calculator1.getCalculatorVersion()); - assertTrue(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; + MarkPassingHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1); + assertTrue(fingerprint1.matches(trackedRace2)); Mark gate1 = new MarkImpl("Gate1"); Mark gate2 = new MarkImpl("Gate2"); ControlPointWithTwoMarks cp = new ControlPointWithTwoMarksImpl(gate1, gate2, "cp", ""); Waypoint wpNew = new WaypointImpl(cp, PassingInstruction.None); trackedRace2.getRace().getCourse().removeWaypoint(0); trackedRace2.getRace().getCourse().addWaypoint(0, wpNew); - TrackedRaceHashFingerprint fingerprint2 = factory.createFingerprint(trackedRace2, calculator2.getCalculatorVersion()); - assertFalse(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); - assertFalse(fingerprint2.matches(trackedRace1, calculator1.getCalculatorVersion())); + MarkPassingHashFingerprint fingerprint2 = factory.createFingerprint(trackedRace2); + assertFalse(fingerprint1.matches(trackedRace2)); + assertFalse(fingerprint2.matches(trackedRace1)); JSONObject json1 = fingerprint1.toJson(); JSONObject json2 = fingerprint2.toJson(); assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2); @@ -149,9 +149,9 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes public void testCompetitorFixChange() { DynamicTrackedRaceImpl testRace = trackedRace2; final DynamicTrackedRaceImpl secureRace = trackedRace2; - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; - TrackedRaceHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1, calculator1.getCalculatorVersion()); - assertTrue(fingerprint1.matches(trackedRace2, calculator2.getCalculatorVersion())); + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; + MarkPassingHashFingerprint fingerprint1 = factory.createFingerprint(trackedRace1); + assertTrue(fingerprint1.matches(trackedRace2)); Competitor firstCompetitor = trackedRace2.getRace().getCompetitors().iterator().next(); secureRace.getTrack(firstCompetitor).lockForRead(); GPSFixMoving firstFix; @@ -166,9 +166,9 @@ public class MarkPassingHashJsonSerializationTest extends OnlineTracTracBasedTes DegreePosition degPos = new DegreePosition(pos.getLatDeg() + 0.05, pos.getLngDeg() + 0.05); GPSFixMoving gpsM = new GPSFixMovingImpl(degPos, tp, speed); testRace.getTrack(firstCompetitor).add(gpsM, true); - TrackedRaceHashFingerprint fingerprint2 = factory.createFingerprint(testRace, calculator2.getCalculatorVersion()); - assertFalse(fingerprint1.matches(testRace, calculator1.getCalculatorVersion())); - assertFalse(fingerprint2.matches(trackedRace1, calculator2.getCalculatorVersion())); + MarkPassingHashFingerprint fingerprint2 = factory.createFingerprint(testRace); + assertFalse(fingerprint1.matches(testRace)); + assertFalse(fingerprint2.matches(trackedRace1)); JSONObject json1 = fingerprint1.toJson(); JSONObject json2 = fingerprint2.toJson(); assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2); 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 d6e46043441..fdb2b69d872 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 @@ -59,8 +59,8 @@ public class MarkPassingCalculator { private final static ExecutorService executor = ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor(); private final LinkedBlockingQueue queue; /** - * This variable indicates the Version of the {@link MarkPassingCalculator} and must be changed manually when changing the calculator. - * It should be changed by adding 1; + * This calculatorVersion variable indicates the Version of the {@link MarkPassingCalculator} and must be changed manually when changing the calculator. + * It should be changed by adding +1; */ private final int calculatorVersion = 1; @@ -101,7 +101,9 @@ public class MarkPassingCalculator { */ private boolean listenerThreadStarted; - //Rember to change the version when editing the MarkPassingCalculator + /** + * Remember to change the {@link calculatorVersion} when changing the MarkPassingCalculator + */ public MarkPassingCalculator(DynamicTrackedRace race, boolean doListen, boolean waitForInitialMarkPassingCalculation) { if (doListen) { queue = new LinkedBlockingQueue<>(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashCalculationFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashCalculationFactory.java new file mode 100644 index 00000000000..a3db3e9c3c0 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashCalculationFactory.java @@ -0,0 +1,14 @@ +package com.sap.sailing.domain.markpassinghash; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.markpassinghash.impl.MarkPassingHashCalculationFactoryImpl; +import com.sap.sailing.domain.tracking.TrackedRace; + +public interface MarkPassingHashCalculationFactory { + MarkPassingHashCalculationFactory INSTANCE = new MarkPassingHashCalculationFactoryImpl(); + + MarkPassingHashFingerprint createFingerprint(TrackedRace trackedRace); + + MarkPassingHashFingerprint fromJson(JSONObject json); +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashFingerprint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashFingerprint.java similarity index 59% rename from java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashFingerprint.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashFingerprint.java index 0c7f83e9734..123f82c26db 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashFingerprint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/MarkPassingHashFingerprint.java @@ -4,8 +4,8 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.tracking.TrackedRace; -public interface TrackedRaceHashFingerprint { +public interface MarkPassingHashFingerprint { JSONObject toJson(); - boolean matches(TrackedRace trackedRace, int calculatorVersion); + boolean matches(TrackedRace trackedRace); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashForMaskPassingCalculationFactory.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashForMaskPassingCalculationFactory.java deleted file mode 100644 index 4784af3c0ec..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/TrackedRaceHashForMaskPassingCalculationFactory.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.sap.sailing.domain.markpassinghash; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.markpassinghash.impl.TrackedRaceHashForMarkPassingCalculationFactoryImpl; -import com.sap.sailing.domain.tracking.TrackedRace; - -public interface TrackedRaceHashForMaskPassingCalculationFactory { - TrackedRaceHashForMaskPassingCalculationFactory INSTANCE = new TrackedRaceHashForMarkPassingCalculationFactoryImpl(); - - TrackedRaceHashFingerprint createFingerprint(TrackedRace trackedRace, int calculatorVersion); - - TrackedRaceHashFingerprint fromJson(JSONObject json); -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashCalculationFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashCalculationFactoryImpl.java new file mode 100644 index 00000000000..c998fa6ffce --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashCalculationFactoryImpl.java @@ -0,0 +1,20 @@ +package com.sap.sailing.domain.markpassinghash.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashCalculationFactory; +import com.sap.sailing.domain.tracking.TrackedRace; + +public class MarkPassingHashCalculationFactoryImpl + implements MarkPassingHashCalculationFactory { + @Override + public MarkPassingHashFingerprint createFingerprint(TrackedRace trackedRace) { + return new MarkPassingHashFingerprintImpl(trackedRace); + } + + @Override + public MarkPassingHashFingerprint fromJson(JSONObject json) { + return new MarkPassingHashFingerprintImpl(json); + } +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashFingerprintImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashFingerprintImpl.java similarity index 90% rename from java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashFingerprintImpl.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashFingerprintImpl.java index c863fc1b106..210c0103eea 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashFingerprintImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/MarkPassingHashFingerprintImpl.java @@ -7,14 +7,16 @@ import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.tracking.GPSFix; import com.sap.sailing.domain.common.tracking.GPSFixMoving; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; +import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.tracking.DynamicTrackedRace; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; -public class TrackedRaceHashFingerprintImpl implements TrackedRaceHashFingerprint { +public class MarkPassingHashFingerprintImpl implements MarkPassingHashFingerprint { private final int calculatorVersion; private final int competitorHash; private final TimePoint startOfTracking; @@ -31,8 +33,8 @@ public class TrackedRaceHashFingerprintImpl implements TrackedRaceHashFingerprin FINISH_TIME_FROM_RACE_LOG_AS_MILLIS, WAYPOINTS_HASH, NUMBEROFGPSFIXES, GPSFIXES_HASH, RACE_ID, CALCULATOR_VERSION }; - public TrackedRaceHashFingerprintImpl(TrackedRace trackedRace, int calculatorVersion) { - this.calculatorVersion = calculatorVersion; + public MarkPassingHashFingerprintImpl(TrackedRace trackedRace) { + this.calculatorVersion = getCalculatorVersion(trackedRace); this.competitorHash = calculateHashForCompetitors(trackedRace); this.startOfTracking = trackedRace.getStartOfTracking(); this.endOfTracking = trackedRace.getEndOfTracking(); @@ -45,7 +47,7 @@ public class TrackedRaceHashFingerprintImpl implements TrackedRaceHashFingerprin this.gpsFixesHash = calculateHashForGPSFixes(trackedRace); } - public TrackedRaceHashFingerprintImpl(JSONObject json) { + public MarkPassingHashFingerprintImpl(JSONObject json) { this.calculatorVersion = ((Number) json.get(JSON_FIELDS.CALCULATOR_VERSION.toString())).intValue(); this.competitorHash = ((Number) json.get(JSON_FIELDS.COMPETITOR_HASH.toString())).intValue(); final Number startOfTrackingAsNumber = (Number) json.get(JSON_FIELDS.START_OF_TRACKING_AS_MILLIS.toString()); @@ -80,9 +82,9 @@ public class TrackedRaceHashFingerprintImpl implements TrackedRaceHashFingerprin } @Override - public boolean matches(TrackedRace trackedRace, int calculatorVersion) { + public boolean matches(TrackedRace trackedRace) { final boolean result; - if (!Util.equalsWithNull(this.calculatorVersion, calculatorVersion)) { + if (!Util.equalsWithNull(calculatorVersion, getCalculatorVersion(trackedRace))) { result = false; } else if (!Util.equalsWithNull(startOfTracking, trackedRace.getStartOfTracking())) { result = false; @@ -111,6 +113,12 @@ public class TrackedRaceHashFingerprintImpl implements TrackedRaceHashFingerprin return result; } + private int getCalculatorVersion(TrackedRace trackedRace) { + MarkPassingCalculator calculator = new MarkPassingCalculator((DynamicTrackedRace) trackedRace, false, false); + int result = calculator.getCalculatorVersion(); + return result; + } + private int calculateHashForCompetitors(TrackedRace trackedRace) { int hashForCompetitors = 1023; for (Competitor c : trackedRace.getRace().getCompetitors()) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashForMarkPassingCalculationFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashForMarkPassingCalculationFactoryImpl.java deleted file mode 100644 index f6215040eaa..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassinghash/impl/TrackedRaceHashForMarkPassingCalculationFactoryImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.sap.sailing.domain.markpassinghash.impl; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashForMaskPassingCalculationFactory; -import com.sap.sailing.domain.tracking.TrackedRace; - -public class TrackedRaceHashForMarkPassingCalculationFactoryImpl - implements TrackedRaceHashForMaskPassingCalculationFactory { - @Override - public TrackedRaceHashFingerprint createFingerprint(TrackedRace trackedRace, int calculatorVersion) { - return new TrackedRaceHashFingerprintImpl(trackedRace, calculatorVersion); - } - - @Override - public TrackedRaceHashFingerprint fromJson(JSONObject json) { - return new TrackedRaceHashFingerprintImpl(json); - } -} diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/MarkPassingHashConversionTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/MarkPassingHashConversionTest.java index dbd622e2ebf..4ae5322b512 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/MarkPassingHashConversionTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/MarkPassingHashConversionTest.java @@ -18,8 +18,8 @@ import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashForMaskPassingCalculationFactory; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashCalculationFactory; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; @@ -64,16 +64,16 @@ public class MarkPassingHashConversionTest extends OnlineTracTracBasedTest { @Test public void testLoadingToMongo() throws UnknownHostException, MongoException { - TrackedRaceHashForMaskPassingCalculationFactory factory = TrackedRaceHashForMaskPassingCalculationFactory.INSTANCE; + MarkPassingHashCalculationFactory factory = MarkPassingHashCalculationFactory.INSTANCE; MarkPassingCalculator calculator = new MarkPassingCalculator(trackedRace1, false, false); - TrackedRaceHashFingerprint fingerprint = factory.createFingerprint(trackedRace1, calculator.getCalculatorVersion()); + MarkPassingHashFingerprint fingerprint = factory.createFingerprint(trackedRace1); MongoClient myFirstMongo = newMongo(); MongoDatabase firstDatabase = myFirstMongo.getDatabase(dbConfiguration.getDatabaseName()); RaceIdentifier raceIdentifier = trackedRace1.getRaceIdentifier(); new MongoObjectFactoryImpl(firstDatabase).storeFingerprintForMarkPassingHash(fingerprint, raceIdentifier); DomainObjectFactory dF = PersistenceFactory.INSTANCE.getDefaultDomainObjectFactory(); - HashMap fingerprintHashMap = dF.loadFingerprintsForMarkPassingHashes(); - TrackedRaceHashFingerprint fingerprintAfterDB = fingerprintHashMap.get(trackedRace1.getRaceIdentifier()); - assertTrue("Original and de-serialized copy are equal", fingerprintAfterDB.matches(trackedRace1, calculator.getCalculatorVersion())); + HashMap fingerprintHashMap = dF.loadFingerprintsForMarkPassingHashes(); + MarkPassingHashFingerprint fingerprintAfterDB = fingerprintHashMap.get(trackedRace1.getRaceIdentifier()); + assertTrue("Original and de-serialized copy are equal", fingerprintAfterDB.matches(trackedRace1)); } } \ No newline at end of file diff --git a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/HashFingerprintRegistry.java b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/HashFingerprintRegistry.java deleted file mode 100644 index 3453a6fb352..00000000000 --- a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/HashFingerprintRegistry.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.sap.sailing.server.interfaces; - -import com.sap.sailing.domain.common.RaceIdentifier; -import com.sap.sailing.domain.markpassinghash.TrackedRaceHashFingerprint; -import com.sap.sailing.domain.tracking.TrackedRace; - -public interface HashFingerprintRegistry { - void storeFingerprint(RaceIdentifier raceIdentifier, TrackedRaceHashFingerprint fingerprint); - - TrackedRaceHashFingerprint loadFingerprint(TrackedRace trackedRace); -} \ No newline at end of file diff --git a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/MarkPassingHashFingerprintRegistry.java b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/MarkPassingHashFingerprintRegistry.java new file mode 100644 index 00000000000..e4857e499ad --- /dev/null +++ b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/interfaces/MarkPassingHashFingerprintRegistry.java @@ -0,0 +1,11 @@ +package com.sap.sailing.server.interfaces; + +import com.sap.sailing.domain.common.RaceIdentifier; +import com.sap.sailing.domain.markpassinghash.MarkPassingHashFingerprint; +import com.sap.sailing.domain.tracking.TrackedRace; + +public interface MarkPassingHashFingerprintRegistry { + void storeFingerprint(RaceIdentifier raceIdentifier, MarkPassingHashFingerprint fingerprint); + + MarkPassingHashFingerprint loadFingerprint(TrackedRace trackedRace); +} \ No newline at end of file