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 1bd49c6a10f..e12f3c5a3db 100755 --- 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 @@ -132,7 +132,12 @@ public interface DomainObjectFactory { RegattaLog loadRegattaLog(RegattaLikeIdentifier identifier); - Collection renameCompetitorsCollectionAndloadAllLegacyCompetitors(); + /** + * Migrates the old COMPETITORS collection and the new BOATS collection. + * The old COLLECTION is will be renamed to COMPETITORS_BAK for deveopment and test purposes + * @return a collection of the old type where all competitors contain their boats or null if migration was not required. + */ + Collection migrateLegacyCompetitorsIfRequired(); /** * Loads all competitors (with and without embedded boats) and resolves them via the domain factory. 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 f3762ad0114..d1ac5bafeaf 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 @@ -109,7 +109,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorSensorDataMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -123,7 +122,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCo import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceMarkMappingEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterBoatEventImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRevokeEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEventImpl; @@ -1951,8 +1949,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { return loadRegattaLogRegisterBoatEvent(createdAt, author, logicalTimePoint, id, dbObject); } else if (eventClass.equals(RegattaLogRegisterCompetitorEvent.class.getSimpleName())) { return loadRegattaLogRegisterCompetitorEvent(createdAt, author, logicalTimePoint, id, dbObject); - } else if (eventClass.equals(RegattaLogRegisterCompetitorAndBoatEvent.class.getSimpleName())) { - return loadRegattaLogRegisterCompetitorAndBoatEvent(createdAt, author, logicalTimePoint, id, dbObject); } else if (eventClass.equals(RegattaLogSetCompetitorTimeOnTimeFactorEvent.class.getSimpleName())) { return loadRegattaLogSetCompetitorTimeOnTimeFactorEvent(createdAt, author, logicalTimePoint, id, dbObject); } else if (eventClass @@ -2051,31 +2047,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { return result; } - private RegattaLogRegisterCompetitorAndBoatEvent loadRegattaLogRegisterCompetitorAndBoatEvent(TimePoint createdAt, - AbstractLogEventAuthor author, TimePoint logicalTimePoint, Serializable id, DBObject dbObject) { - Competitor comp = getCompetitorByID(dbObject); - Boat boat = getBoatByID(dbObject); - final RegattaLogRegisterCompetitorAndBoatEvent result; - if (comp == null || boat == null) { - result = null; - if (comp == null) { - logger.log(Level.SEVERE, "Couldn't resolve competitor with ID " - + dbObject.get(FieldNames.REGATTA_LOG_COMPETITOR_ID.name()) - + " from registration event with ID " + id + ". Skipping this competitor registration."); - } - if (boat == null) { - logger.log(Level.SEVERE, - "Couldn't resolve boat with ID " + dbObject.get(FieldNames.REGATTA_LOG_BOAT_ID.name()) - + " from registration event with ID " + id - + ". Skipping this competitor registration."); - } - } else { - result = new RegattaLogRegisterCompetitorAndBoatEventImpl(createdAt, logicalTimePoint, author, id, comp, - boat); - } - return result; - } - private RegattaLogCloseOpenEndedDeviceMappingEvent loadRegattaLogCloseOpenEndedDeviceMappingEvent( TimePoint createdAt, AbstractLogEventAuthor author, TimePoint logicalTimePoint, Serializable id, DBObject dbObject) { @@ -2400,21 +2371,40 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } @Override - public Collection renameCompetitorsCollectionAndloadAllLegacyCompetitors() { + public Collection migrateLegacyCompetitorsIfRequired() { + ArrayList result = null; + + boolean competitorsCollectionExist = database.collectionExists(CollectionNames.COMPETITORS.name()); + boolean boatsCollectionCollectionExist = database.collectionExists(CollectionNames.BOATS.name()); DBCollection orginalCompetitorCollection = database.getCollection(CollectionNames.COMPETITORS.name()); - orginalCompetitorCollection.rename(CollectionNames.COMPETITORS_BAK.name(), /* dropTarget */ true); - DBCollection collection = database.getCollection(CollectionNames.COMPETITORS_BAK.name()); - ArrayList result = new ArrayList<>(); - try { - for (DBObject o : collection.find()) { - JSONObject json = Helpers.toJSONObjectSafe(new JSONParser().parse(JSON.serialize(o))); - CompetitorWithBoat c = legacyCompetitorWithBoatDeserializer.deserialize(json); - result.add(c); - } - } catch (Exception e) { - logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load competitors."); - logger.log(Level.SEVERE, "renameCompetitorsCollectionAndloadAllLegacyCompetitors", e); - } + + // there is a corner case where tests can create just one competitor without boat + // before we migrate we need to check if this case + if (competitorsCollectionExist && !boatsCollectionCollectionExist) { + long competitorCount = orginalCompetitorCollection.count(); + if (competitorCount > 0) { + DBObject oneCompetitorDbObject = orginalCompetitorCollection.findOne(); + Object boatObject = oneCompetitorDbObject.get("boat"); + // only in case such a boat object exist we need a migration, because the new type stores only a boatID or no boat at all + if (boatObject != null) { + result = new ArrayList<>(); + + orginalCompetitorCollection.rename(CollectionNames.COMPETITORS_BAK.name(), /* dropTarget */ true); + DBCollection collection = database.getCollection(CollectionNames.COMPETITORS_BAK.name()); + try { + for (DBObject o : collection.find()) { + JSONObject json = Helpers.toJSONObjectSafe(new JSONParser().parse(JSON.serialize(o))); + CompetitorWithBoat c = legacyCompetitorWithBoatDeserializer.deserialize(json); + result.add(c); + } + } catch (Exception e) { + logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load competitors."); + logger.log(Level.SEVERE, "renameCompetitorsCollectionAndloadAllLegacyCompetitors", e); + } + } + } + } + return result; } 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 146e66d2194..9e18d77f5ef 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 @@ -62,7 +62,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -1345,7 +1344,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { @Override public void storeCompetitor(Competitor competitor) { if (competitor instanceof CompetitorWithBoat) { - storeCompetitorWithBoat((CompetitorWithBoat) competitor); + storeCompetitorWithBoat((CompetitorWithBoat) competitor); } else { storeCompetitorWithoutBoat(competitor); } @@ -1640,14 +1639,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { storeRegattaLogEvent(regattaLikeId, result); } - public void storeRegattaLogEvent(RegattaLikeIdentifier regattaLikeId, RegattaLogRegisterCompetitorAndBoatEvent event) { - DBObject result = createBasicRegattaLogEventDBObject(event); - result.put(FieldNames.REGATTA_LOG_EVENT_CLASS.name(), RegattaLogRegisterCompetitorAndBoatEvent.class.getSimpleName()); - result.put(FieldNames.REGATTA_LOG_COMPETITOR_ID.name(), event.getCompetitor().getId()); - result.put(FieldNames.REGATTA_LOG_BOAT_ID.name(), event.getBoat().getId()); - storeRegattaLogEvent(regattaLikeId, result); - } - public void storeRegattaLogEvent(RegattaLikeIdentifier regattaLikeId, RegattaLogCloseOpenEndedDeviceMappingEvent event) { DBObject result = createBasicRegattaLogEventDBObject(event); result.put(FieldNames.REGATTA_LOG_EVENT_CLASS.name(), RegattaLogCloseOpenEndedDeviceMappingEvent.class.getSimpleName()); diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRegattaLogStoreVisitor.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRegattaLogStoreVisitor.java index 2a3d97d0671..dc340eda400 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRegattaLogStoreVisitor.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRegattaLogStoreVisitor.java @@ -9,7 +9,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorSensorDataMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -64,11 +63,6 @@ public class MongoRegattaLogStoreVisitor implements RegattaLogEventVisitor { mongoObjectFactory.storeRegattaLogEvent(regattaLikeIdentifier, event); } - @Override - public void visit(RegattaLogRegisterCompetitorAndBoatEvent event) { - mongoObjectFactory.storeRegattaLogEvent(regattaLikeIdentifier, event); - } - @Override public void visit(RegattaLogSetCompetitorTimeOnTimeFactorEvent event) { mongoObjectFactory.storeRegattaLogEvent(regattaLikeIdentifier, event); 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 55a514de88b..27f975493f5 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java @@ -26,10 +26,11 @@ import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterComp import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogUseCompetitorsAndBoatsFromRaceLogEventImpl; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.CompetitorWithBoat; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -37,6 +38,7 @@ import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.base.impl.BoatClassImpl; import com.sap.sailing.domain.base.impl.BoatImpl; +import com.sap.sailing.domain.base.impl.DynamicBoat; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; @@ -267,13 +269,13 @@ public class CreateAndTrackWithRaceLogTest extends RaceLogTrackingTestHelper { // add a mapping and one fix in, one out of mapping Boat boat1 = new BoatImpl("id12345", "boat1", boatClass, /* sailID */ null); - Competitor comp1 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp1", "comp1", "c1", null, null, null, null, - /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); + CompetitorWithBoat comp1 = DomainFactory.INSTANCE.getOrCreateCompetitorWithBoat("comp1", "comp1", "c1", null, null, null, null, + /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null, (DynamicBoat) boat1); DeviceIdentifier dev1 = new SmartphoneImeiIdentifier("dev1"); regattaLog.add(new RegattaLogDeviceCompetitorMappingEventImpl(t(), t(), author, UUID.randomUUID(), comp1, dev1, t(0), t(10))); addFixes0(dev1); - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(t(), t(), author, UUID.randomUUID(), comp1, boat1)); + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(t(), t(), author, UUID.randomUUID(), comp1)); raceLog.add(new RaceLogStartOfTrackingEventImpl(t(0), author, /* passId */ 0)); // start tracking diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorAndBoatEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorAndBoatEvent.java index 4c48ba84796..35a60ed3c31 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorAndBoatEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorAndBoatEvent.java @@ -4,6 +4,12 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorAndBoatEvent; +/** + * The event registers a {@link Competitor} or {@link CompetitorWithBoat} on a race. + * The competitor type is determined by the {@link Regatta} attribute 'canBoatsOfCompetitorsChangePerRace' + * If 'canBoatsOfCompetitorsChangePerRace' is true the type must be {@link Competitor} + * If 'canBoatsOfCompetitorsChangePerRace' is false the type must be {@link CompetitorWithBoat} + */ public interface RaceLogRegisterCompetitorAndBoatEvent extends RaceLogEvent, RegisterCompetitorAndBoatEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorEvent.java index 5d526694b96..6a40cc049e0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/RaceLogRegisterCompetitorEvent.java @@ -5,8 +5,10 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent; /** - * ATTENTION: This is the old legacy race log event for a competitor registration from the time before bug2822 - * DON'T delete or rename for backward compatibility + * The event registers a {@link Competitor} or {@link CompetitorWithBoat} on a race. + * The competitor type is determined by the {@link Regatta} attribute 'canBoatsOfCompetitorsChangePerRace' + * If 'canBoatsOfCompetitorsChangePerRace' is true the type must be {@link Competitor} + * If 'canBoatsOfCompetitorsChangePerRace' is false the type must be {@link CompetitorWithBoat} */ public interface RaceLogRegisterCompetitorEvent extends RaceLogEvent, RegisterCompetitorEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventVisitor.java index 86d9f917ecc..d4dd4a63a61 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/RegattaLogEventVisitor.java @@ -6,7 +6,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorSensorDataMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -27,8 +26,6 @@ public interface RegattaLogEventVisitor { void visit(RegattaLogRegisterCompetitorEvent event); - void visit(RegattaLogRegisterCompetitorAndBoatEvent event); - void visit(RegattaLogSetCompetitorTimeOnTimeFactorEvent event); void visit(RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent event); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterBoatEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterBoatEvent.java index 5135c57e4ea..65aed03c3b6 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterBoatEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterBoatEvent.java @@ -4,6 +4,9 @@ import com.sap.sailing.domain.abstractlog.Revokable; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.base.Boat; +/** +* The event registers a standalone {@link Boat} on a regatta. +*/ public interface RegattaLogRegisterBoatEvent extends RegattaLogEvent, Revokable { Boat getBoat(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorAndBoatEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorAndBoatEvent.java deleted file mode 100644 index 0f9ba9f3e91..00000000000 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorAndBoatEvent.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.sap.sailing.domain.abstractlog.regatta.events; - -import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; -import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; -import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorAndBoatEvent; - -/** - * Registers a competitor together with a boat for {@link RegattaLog} tracked regattas. - * @author Frank Mittag - * - */ -public interface RegattaLogRegisterCompetitorAndBoatEvent - extends RegattaLogEvent, RegisterCompetitorAndBoatEvent { - -} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorEvent.java index 29374f85624..4c253bf9c85 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/RegattaLogRegisterCompetitorEvent.java @@ -3,11 +3,15 @@ package com.sap.sailing.domain.abstractlog.regatta.events; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent; +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.CompetitorWithBoat; /** - * ATTENTION: This is the old legacy regatta log event for a competitor registration from the time before bug2822 - * DON'T delete or rename for backward compatibility - */ +* The event registers a {@link Competitor} or {@link CompetitorWithBoat} on a regatta. +* The competitor type is determined by the {@link Regatta} attribute 'canBoatsOfCompetitorsChangePerRace' +* If 'canBoatsOfCompetitorsChangePerRace' is true the type must be {@link Competitor} +* If 'canBoatsOfCompetitorsChangePerRace' is false the type must be {@link CompetitorWithBoat} +*/ public interface RegattaLogRegisterCompetitorEvent extends RegattaLogEvent, RegisterCompetitorEvent { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorAndBoatEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorAndBoatEventImpl.java deleted file mode 100644 index b264687eb85..00000000000 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorAndBoatEventImpl.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sap.sailing.domain.abstractlog.regatta.events.impl; - -import java.io.Serializable; - -import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; -import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; -import com.sap.sailing.domain.abstractlog.shared.events.impl.BaseRegisterCompetitorAndBoatEventImpl; -import com.sap.sailing.domain.base.Boat; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sse.common.TimePoint; - -public class RegattaLogRegisterCompetitorAndBoatEventImpl extends BaseRegisterCompetitorAndBoatEventImpl - implements RegattaLogRegisterCompetitorAndBoatEvent { - private static final long serialVersionUID = 3577775910921730978L; - - /** - * @throws IllegalArgumentException - * if {@code competitor} is null - */ - public RegattaLogRegisterCompetitorAndBoatEventImpl(TimePoint createdAt, TimePoint logicalTimePoint, - AbstractLogEventAuthor author, Serializable id, Competitor competitor, Boat boat) throws IllegalArgumentException { - super(createdAt, logicalTimePoint, author, id, competitor, boat); - } - - /** - * @throws IllegalArgumentException - * if {@code competitor} is null - */ - public RegattaLogRegisterCompetitorAndBoatEventImpl(TimePoint logicalTimePoint, - AbstractLogEventAuthor author, Competitor competitor, Boat boat) throws IllegalArgumentException { - super(logicalTimePoint, author, competitor, boat); - } - - @Override - public void accept(RegattaLogEventVisitor visitor) { - visitor.visit(this); - } -} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorEventImpl.java index ffdb74f0e90..988642ebe66 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/events/impl/RegattaLogRegisterCompetitorEventImpl.java @@ -6,9 +6,17 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.shared.events.impl.BaseRegisterCompetitorEventImpl; +import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorWithBoat; import com.sap.sse.common.TimePoint; +/** + * This event can be used for 2 kinds of competitor registrations. + * If 'canBoatsOfCompetitorsChangePerRace' is true for a regatta the event registers a standalone {@link Competitor} without a boat. + * If 'canBoatsOfCompetitorsChangePerRace' is false the event registers a {@link CompetitorWithBoat}. + * @author Frank Mittag + * + */ public class RegattaLogRegisterCompetitorEventImpl extends BaseRegisterCompetitorEventImpl implements RegattaLogRegisterCompetitorEvent { private static final long serialVersionUID = -5114645637316367845L; @@ -18,7 +26,7 @@ public class RegattaLogRegisterCompetitorEventImpl extends BaseRegisterCompetito * if {@code competitor} is null */ public RegattaLogRegisterCompetitorEventImpl(TimePoint createdAt, TimePoint logicalTimePoint, - AbstractLogEventAuthor author, Serializable id, CompetitorWithBoat competitor) throws IllegalArgumentException { + AbstractLogEventAuthor author, Serializable id, Competitor competitor) throws IllegalArgumentException { super(createdAt, logicalTimePoint, author, id, competitor); } @@ -27,7 +35,7 @@ public class RegattaLogRegisterCompetitorEventImpl extends BaseRegisterCompetito * if {@code competitor} is null */ public RegattaLogRegisterCompetitorEventImpl(TimePoint logicalTimePoint, - AbstractLogEventAuthor author, CompetitorWithBoat competitor) throws IllegalArgumentException { + AbstractLogEventAuthor author, Competitor competitor) throws IllegalArgumentException { super(logicalTimePoint, author, competitor); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/BaseRegattaLogEventVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/BaseRegattaLogEventVisitor.java index 409064f0827..0b98c112dbc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/BaseRegattaLogEventVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/BaseRegattaLogEventVisitor.java @@ -7,7 +7,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorSensorDataMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -43,10 +42,6 @@ public class BaseRegattaLogEventVisitor implements RegattaLogEventVisitor { public void visit(RegattaLogRegisterCompetitorEvent event) { } - @Override - public void visit(RegattaLogRegisterCompetitorAndBoatEvent event) { - } - @Override public void visit(RegattaLogSetCompetitorTimeOnTimeFactorEvent event) { } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventListener.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventListener.java index 7f4ae3f34ca..6ce93260a00 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventListener.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/regatta/impl/RegattaLogEventListener.java @@ -8,7 +8,6 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorSensorDataMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMarkMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogSetCompetitorTimeOnDistanceAllowancePerNauticalMileEvent; @@ -47,11 +46,6 @@ public abstract class RegattaLogEventListener implements RegattaLogEventVisitor eventAdded(event); } - @Override - public void visit(RegattaLogRegisterCompetitorAndBoatEvent event) { - eventAdded(event); - } - @Override public void visit(RegattaLogSetCompetitorTimeOnTimeFactorEvent event) { eventAdded(event); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/RegisterCompetitorEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/RegisterCompetitorEvent.java index 66f6de6c905..95897699c6c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/RegisterCompetitorEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/RegisterCompetitorEvent.java @@ -5,13 +5,9 @@ import com.sap.sailing.domain.abstractlog.Revokable; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.CompetitorWithBoat; import com.sap.sse.common.IsManagedByCache; /** - * ATTENTION: This is the old legacy log event for a competitor registration from the time before bug2822 - * DON'T delete or rename for backward compatibility - * * Register a competitor for {@link RaceLog} and {@link RegattaLog} tracked races and regattas. * * A dummy {@link Competitor} implementation with only an {@link Competitor#getId() id} may be used, @@ -22,5 +18,5 @@ import com.sap.sse.common.IsManagedByCache; * */ public interface RegisterCompetitorEvent extends AbstractLogEvent, Revokable { - CompetitorWithBoat getCompetitor(); + Competitor getCompetitor(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/impl/BaseRegisterCompetitorEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/impl/BaseRegisterCompetitorEventImpl.java index d317da64a5e..ac71017500e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/impl/BaseRegisterCompetitorEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/impl/BaseRegisterCompetitorEventImpl.java @@ -5,20 +5,20 @@ import java.io.Serializable; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.impl.AbstractLogEventImpl; import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent; -import com.sap.sailing.domain.base.CompetitorWithBoat; +import com.sap.sailing.domain.base.Competitor; import com.sap.sse.common.TimePoint; public abstract class BaseRegisterCompetitorEventImpl extends AbstractLogEventImpl implements RegisterCompetitorEvent { private static final long serialVersionUID = -30864810737555657L; - private final CompetitorWithBoat competitor; + private final Competitor competitor; /** * @throws IllegalArgumentException * if {@code competitor} is null */ public BaseRegisterCompetitorEventImpl(TimePoint createdAt, TimePoint logicalTimePoint, - AbstractLogEventAuthor author, Serializable pId, CompetitorWithBoat competitor) throws IllegalArgumentException { + AbstractLogEventAuthor author, Serializable pId, Competitor competitor) throws IllegalArgumentException { super(createdAt, logicalTimePoint, author, pId); checkCompetitor(competitor); this.competitor = competitor; @@ -29,21 +29,18 @@ public abstract class BaseRegisterCompetitorEventImpl extends Abstract * if {@code competitor} is null */ public BaseRegisterCompetitorEventImpl(TimePoint logicalTimePoint, AbstractLogEventAuthor author, - CompetitorWithBoat competitor) throws IllegalArgumentException { + Competitor competitor) throws IllegalArgumentException { this(now(), logicalTimePoint, author, randId(), competitor); } - private static void checkCompetitor(CompetitorWithBoat competitor) throws IllegalArgumentException { + private static void checkCompetitor(Competitor competitor) throws IllegalArgumentException { if (competitor == null) { throw new IllegalArgumentException("Competitor may not be null"); } - if (competitor.getBoat() == null) { - throw new IllegalArgumentException("BoaCompetitor may not be null"); - } } @Override - public CompetitorWithBoat getCompetitor() { + public Competitor getCompetitor() { return competitor; } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java index 0c5bddaeee7..571ae1ba998 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -24,8 +24,8 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsAnd import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterCompetitorAndBoatEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogUseCompetitorsAndBoatsFromRaceLogEventImpl; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Series; @@ -105,10 +105,10 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard regatta.removeSeries(seriesToRemove); } RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); - final Map competitorOnRegattaLogRegistrationEvents = new HashMap<>(); + final Map competitorOnRegattaLogRegistrationEvents = new HashMap<>(); final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); for (Competitor c : compLists[0]) { - final RegattaLogRegisterCompetitorAndBoatEvent registerCompetitorEvent = new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c, boats.get(c)); + final RegattaLogRegisterCompetitorEvent registerCompetitorEvent = new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c); regattaLog.add(registerCompetitorEvent); competitorOnRegattaLogRegistrationEvents.put(c, registerCompetitorEvent); } @@ -185,7 +185,7 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); RegattaLog regattaLog = flexibleLeaderboard.getRegattaLog(); for (Competitor c : compLists[0]) { - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), UUID.randomUUID(), c, boats.get(c))); + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), UUID.randomUUID(), c)); } Set expected = new HashSet<>(compLists[0]); Set actual = new HashSet<>(); @@ -203,7 +203,7 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); RegattaLog regattaLog = flexibleLeaderboard.getRegattaLog(); for (Competitor c : compLists[0]) { - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), UUID.randomUUID(), c, boats.get(c))); + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), UUID.randomUUID(), c)); } RaceLog raceLog = flexibleLeaderboard.getRacelog("R1", LeaderboardNameConstants.DEFAULT_FLEET_NAME); final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); @@ -326,10 +326,10 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard @Test public void testSimpleCompetitorListOnRegattaLogInRegattaLeaderboard() throws NotRevokableException { RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); - final Map competitorOnRegattaLogRegistrationEvents = new HashMap<>(); + final Map competitorOnRegattaLogRegistrationEvents = new HashMap<>(); final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); for (Competitor c : compLists[0]) { - final RegattaLogRegisterCompetitorAndBoatEvent registerCompetitorEvent = new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c, boats.get(c)); + final RegattaLogRegisterCompetitorEvent registerCompetitorEvent = new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c); regattaLog.add(registerCompetitorEvent); competitorOnRegattaLogRegistrationEvents.put(c, registerCompetitorEvent); } @@ -362,7 +362,7 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard final RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); for (Competitor c : compLists[0]) { - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c, boats.get(c))); + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), author, UUID.randomUUID(), c)); } final RaceLog raceLog = regattaLeaderboard.getRacelog("R1", "Yellow"); final int passId = 1; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RegattaLogEventNotificationForwardingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RegattaLogEventNotificationForwardingTest.java index 56601d39313..724ca4f9615 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RegattaLogEventNotificationForwardingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/RegattaLogEventNotificationForwardingTest.java @@ -15,8 +15,8 @@ import org.junit.Test; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.Regatta; @@ -74,7 +74,7 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa receivedRegattaLogEvent[0] = event; } }); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); leaderboard.getRegattaLog().add(event); assertSame(event, receivedRegattaLogEvent[0]); } @@ -96,14 +96,14 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa receivedRegattaLogEvent[0] = event; } }); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); deserializedLeaderboard.getRegattaLog().add(event); assertSame(event, receivedRegattaLogEvent[0]); } - private RegattaLogRegisterCompetitorAndBoatEvent createRegattaLogEvent() { - final RegattaLogRegisterCompetitorAndBoatEvent event = new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), /* author */ null, - AbstractLeaderboardTest.createCompetitor("Someone"), AbstractLeaderboardTest.createBoat("Some boat")); + private RegattaLogRegisterCompetitorEvent createRegattaLogEvent() { + final RegattaLogRegisterCompetitorEvent event = new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), /* author */ null, + AbstractLeaderboardTest.createCompetitor("Someone")); return event; } @@ -129,7 +129,7 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa receivedRegattaLogEvent[0] = event; } }); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); regatta.getRegattaLog().add(event); assertSame(event, receivedRegattaLogEvent[0]); } @@ -151,7 +151,7 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa receivedRegattaLogEvent[0] = event; } }); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); deserializedRegatta.getRegattaLog().add(event); assertSame(event, receivedRegattaLogEvent[0]); } @@ -165,7 +165,7 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa LeaderboardDTO dto = leaderboard.getLeaderboardDTO(now.plus(10), Collections.emptySet(), /* addOverallDetails */ false, /* trackedRegattaRegistry */ null, DomainFactory.INSTANCE, /* fillTotalPointsUncorrected */ false); assertTrue(dto.competitors.isEmpty()); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); regatta.getRegattaLog().add(event); LeaderboardDTO dto2 = leaderboard.computeDTO(now.plus(20), Collections.emptySet(), /* addOverallDetails */ false, /* waitForLatestAnalyses */ false, /* trackedRegattaRegistry */ null, DomainFactory.INSTANCE, /* fillTotalPointsUncorrected */ false); @@ -197,7 +197,7 @@ public class RegattaLogEventNotificationForwardingTest extends AbstractSerializa LeaderboardDTO dto = deserializedLeaderboard.getLeaderboardDTO(now.plus(10), Collections.emptySet(), /* addOverallDetails */ false, /* trackedRegattaRegistry */ null, DomainFactory.INSTANCE, /* fillTotalPointsUncorrected */ false); assertTrue(dto.competitors.isEmpty()); - final RegattaLogRegisterCompetitorAndBoatEvent event = createRegattaLogEvent(); + final RegattaLogRegisterCompetitorEvent event = createRegattaLogEvent(); deserializedLeaderboard.getRegatta().getRegattaLog().add(event); LeaderboardDTO dto2 = deserializedLeaderboard.computeDTO(now.plus(20), Collections.emptySet(), /* addOverallDetails */ false, /* waitForLatestAnalyses */ false, /* trackedRegattaRegistry */ null, DomainFactory.INSTANCE, /* fillTotalPointsUncorrected */ false); 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 470fc65d9b5..59665f1fba8 100644 --- 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 @@ -528,16 +528,16 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public Map getCompetitorsAndBoatsRegisteredInRegattaLog() { + public Iterable getCompetitorsRegisteredInRegattaLog() { return null; } @Override - public void registerCompetitorAndBoat(Competitor competitor, Boat boat) { + public void registerCompetitor(Competitor competitor) { } @Override - public void registerCompetitorsAndBoats(Map competitorsAndBoats) { + public void registerCompetitors(Iterable competitors) { } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java index aee24031634..8ae3b6788be 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java @@ -26,11 +26,12 @@ import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterBoatEventImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogBoatDeregistrator; import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogBoatsInLogAnalyzer; import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorDeregistrator; import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsAndBoatsInLogAnalyzer; +import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsInLogAnalyzer; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; @@ -865,26 +866,26 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene } @Override - public Map getCompetitorsAndBoatsRegisteredInRegattaLog() { + public Iterable getCompetitorsRegisteredInRegattaLog() { RegattaLog regattaLog = getRegattaLog(); - CompetitorsAndBoatsInLogAnalyzer analyzer = new CompetitorsAndBoatsInLogAnalyzer<>( + CompetitorsInLogAnalyzer analyzer = new CompetitorsInLogAnalyzer<>( regattaLog); return analyzer.analyze(); } @Override - public void registerCompetitorAndBoat(Competitor competitor, Boat boat) { - registerCompetitorsAndBoats(Collections.singletonMap(competitor, boat)); + public void registerCompetitor(Competitor competitor) { + registerCompetitors(Collections.singletonList(competitor)); } @Override - public void registerCompetitorsAndBoats(Map competitorsAndBoats) { + public void registerCompetitors(Iterable competitors) { RegattaLog regattaLog = getRegattaLike().getRegattaLog(); TimePoint now = MillisecondsTimePoint.now(); - for (Map.Entry competitorAndBoatEntry : competitorsAndBoats.entrySet()) { - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(now, now, regattaLogEventAuthorForRegatta, - UUID.randomUUID(), competitorAndBoatEntry.getKey(), competitorAndBoatEntry.getValue())); + for (Competitor competitor: competitors) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForRegatta, + UUID.randomUUID(), competitor)); } } 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 86ed2548a91..505f789896c 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 @@ -4,7 +4,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.UUID; @@ -15,11 +14,11 @@ import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterBoatEventImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogBoatDeregistrator; import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogBoatsInLogAnalyzer; import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorDeregistrator; -import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsAndBoatsInLogAnalyzer; +import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsInLogAnalyzer; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; @@ -207,29 +206,29 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI } @Override - public Map getCompetitorsAndBoatsRegisteredInRegattaLog() { + public Iterable getCompetitorsRegisteredInRegattaLog() { RegattaLog regattaLog = getRegattaLike().getRegattaLog(); - CompetitorsAndBoatsInLogAnalyzer analyzer = new CompetitorsAndBoatsInLogAnalyzer<>( + CompetitorsInLogAnalyzer analyzer = new CompetitorsInLogAnalyzer<>( regattaLog); return analyzer.analyze(); } - + @Override - public void registerCompetitorAndBoat(Competitor competitor, Boat boat) { - registerCompetitorsAndBoats(Collections.singletonMap(competitor, boat)); + public void registerCompetitor(Competitor competitor) { + registerCompetitors(Collections.singletonList(competitor)); } @Override - public void registerCompetitorsAndBoats(Map competitorsAndBoats) { + public void registerCompetitors(Iterable competitors) { RegattaLog regattaLog = getRegattaLike().getRegattaLog(); TimePoint now = MillisecondsTimePoint.now(); - for (Map.Entry competitorAndBoatEntry : competitorsAndBoats.entrySet()) { - regattaLog.add(new RegattaLogRegisterCompetitorAndBoatEventImpl(now, now, regattaLogEventAuthorForAbstractLeaderboard, - UUID.randomUUID(), competitorAndBoatEntry.getKey(), competitorAndBoatEntry.getValue())); + for (Competitor competitor: competitors) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForAbstractLeaderboard, + UUID.randomUUID(), competitor)); } } - + @Override public void deregisterCompetitor(Competitor competitor) { deregisterCompetitors(Collections.singleton(competitor)); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike.java index d513ec74a08..008bf7c41d1 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike.java @@ -17,7 +17,7 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsAnd import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsFromRaceLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.impl.BaseRegattaLogEventVisitor; @@ -83,7 +83,7 @@ public class CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike { invalidateAllCompetitorsAndBoatsCaches(); } - public void visit(RegattaLogRegisterCompetitorAndBoatEvent event) { + public void visit(RegattaLogRegisterBoatEvent event) { invalidateAllCompetitorsAndBoatsCaches(); } @@ -91,7 +91,7 @@ public class CompetitorAndBoatProviderFromRaceColumnsAndRegattaLike { public void visit(RegattaLogRevokeEvent event) { try { if (RegattaLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType())) || - RegattaLogRegisterCompetitorAndBoatEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { + RegattaLogRegisterBoatEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { invalidateAllCompetitorsAndBoatsCaches(); } } catch (ClassNotFoundException e) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java index 08cbef38ed5..957766bbe81 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -19,7 +19,7 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsAnd import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsFromRaceLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterBoatEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.impl.BaseRegattaLogEventVisitor; @@ -90,7 +90,7 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { invalidateAllCompetitorsCaches(); } - public void visit(RegattaLogRegisterCompetitorAndBoatEvent event) { + public void visit(RegattaLogRegisterBoatEvent event) { invalidateAllCompetitorsCaches(); } @@ -98,7 +98,7 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { public void visit(RegattaLogRevokeEvent event) { try { if (RegattaLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType())) || - RegattaLogRegisterCompetitorAndBoatEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { + RegattaLogRegisterBoatEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { invalidateAllCompetitorsCaches(); } } catch (ClassNotFoundException e) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelegatingRegattaLeaderboardWithCompetitorElimination.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelegatingRegattaLeaderboardWithCompetitorElimination.java index 05f3be1f67c..49dac7c5967 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelegatingRegattaLeaderboardWithCompetitorElimination.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/DelegatingRegattaLeaderboardWithCompetitorElimination.java @@ -190,8 +190,8 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr return getFullLeaderboard().getRegatta(); } - public Map getCompetitorsAndBoatsRegisteredInRegattaLog() { - return getFullLeaderboard().getCompetitorsAndBoatsRegisteredInRegattaLog(); + public Iterable getCompetitorsRegisteredInRegattaLog() { + return getFullLeaderboard().getCompetitorsRegisteredInRegattaLog(); } public IsRegattaLike getRegattaLike() { @@ -202,12 +202,12 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr return getFullLeaderboard().getRacelog(raceColumnName, fleetName); } - public void registerCompetitorAndBoat(Competitor competitor, Boat boat) { - getFullLeaderboard().registerCompetitorAndBoat(competitor, boat); + public void registerCompetitor(Competitor competitor) { + getFullLeaderboard().registerCompetitor(competitor); } - public void registerCompetitorsAndBoats(Map competitorsAndBoats) { - getFullLeaderboard().registerCompetitorsAndBoats(competitorsAndBoats); + public void registerCompetitors(Iterable competitors) { + getFullLeaderboard().registerCompetitors(competitors); } public void deregisterCompetitor(Competitor competitor) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/HasRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/HasRegattaLike.java index d235c92a0a7..02bfbf99c7e 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/HasRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/HasRegattaLike.java @@ -56,13 +56,13 @@ public interface HasRegattaLike { Iterable getAllCompetitors(); /** - * Determines the competitors and boats registered in the regatta log. Note that this is not necessarily the complete set of - * competitors and boats participating in this "regatta." For that, use {@link #getAllCompetitorsAndBoats()}. + * Determines the competitors registered in the regatta log. Note that this is not necessarily the complete set of + * competitors participating in this "regatta." For that, use {@link #getAllCompetitors()}. */ - Map getCompetitorsAndBoatsRegisteredInRegattaLog(); + Iterable getCompetitorsRegisteredInRegattaLog(); - void registerCompetitorAndBoat(Competitor competitor, Boat boat); - void registerCompetitorsAndBoats(Map competitorsAndBoats); + void registerCompetitor(Competitor competitor); + void registerCompetitors(Iterable competitors); void deregisterCompetitor(Competitor competitor); void deregisterCompetitors(Iterable competitors); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java index 5ab1a7a5265..a245e7d2f86 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java @@ -1,12 +1,9 @@ package com.sap.sailing.domain.regattalike; -import java.util.Map; - -import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.Leaderboard; public interface LeaderboardThatHasRegattaLike extends Leaderboard, HasRaceColumnsAndRegattaLike { - Map getCompetitorsAndBoatsRegisteredInRegattaLog(); + Iterable getCompetitorsRegisteredInRegattaLog(); } 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 56ceb385b19..8f62597995e 100644 --- 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 @@ -6545,7 +6545,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S throw new DoesNotHaveRegattaLogException(); } HasRegattaLike regattaLikeLeaderboard = ((HasRegattaLike) leaderboard); - return convertToCompetitorDTOs(regattaLikeLeaderboard.getCompetitorsAndBoatsRegisteredInRegattaLog().keySet()); + return convertToCompetitorDTOs(regattaLikeLeaderboard.getCompetitorsRegisteredInRegattaLog()); } @Override 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 4ae2f04f2c6..713e2b8327b 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 @@ -28,7 +28,7 @@ import org.junit.Test; import com.mongodb.MongoException; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; @@ -429,8 +429,8 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest Boat boat2 = AbstractLeaderboardTest.createBoat("Humba2 Boot"); res.getCompetitorStore().addNewCompetitors(Arrays.asList(competitor1, competitor2)); res.getCompetitorStore().addNewBoats(Arrays.asList(boat1, boat2)); - regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor1, boat1)); - regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorAndBoatEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor2, boat2)); + regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor1)); + regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor2)); assertTrue(Util.contains(regatta.getAllCompetitors(), competitor1)); assertTrue(Util.contains(regatta.getAllCompetitors(), competitor2)); assertTrue(Util.contains(regatta.getAllBoats(), boat1)); diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceCheckinAndOutTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceCheckinAndOutTest.java index c0a1544bb9b..d493d8da401 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceCheckinAndOutTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceCheckinAndOutTest.java @@ -23,8 +23,10 @@ import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsAndBoatsIn import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.CompetitorWithBoat; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.impl.BoatClassImpl; +import com.sap.sailing.domain.base.impl.DynamicBoat; import com.sap.sailing.domain.base.impl.DynamicTeam; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; @@ -40,7 +42,7 @@ import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource; import com.sap.sse.common.impl.MillisecondsTimePoint; public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest { - private Competitor competitor; + private CompetitorWithBoat competitor; private RegattaLog log; private RegattaLeaderboard leaderboard; private BoatClass boatClass = new BoatClassImpl("49er", false); @@ -50,16 +52,16 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest super.setUp(); Competitor c = createCompetitors(1).get(0); Boat boat = racingEventService.getBaseDomainFactory().getOrCreateBoat("boat", "boat", boatClass, "GER1", null); - competitor = racingEventService.getBaseDomainFactory().getOrCreateCompetitor(c.getId(), c.getName(), c.getShortName(), + competitor = racingEventService.getBaseDomainFactory().getOrCreateCompetitorWithBoat(c.getId(), c.getName(), c.getShortName(), c.getColor(), c.getEmail(), c.getFlagImage(), (DynamicTeam) c.getTeam(), - /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); + /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null, (DynamicBoat) boat); Regatta regatta = new RegattaImpl("regatta", boatClass, /* canBoatsOfCompetitorsChangePerRace */ true, MillisecondsTimePoint.now(), MillisecondsTimePoint.now(), Collections.singleton(new SeriesImpl("series", false, /* isFleetsCanRunInParallel */ true, Collections .singleton(new FleetImpl("fleet")), Arrays.asList("column"), racingEventService)), false, new HighPoint(), 0, null, OneDesignRankingMetric::new); racingEventService.addRegattaWithoutReplication(regatta); leaderboard = racingEventService.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "regatta", new int[] {}); - regatta.registerCompetitorAndBoat(competitor, boat); + regatta.registerCompetitor(competitor); log = leaderboard.getRegattaLike().getRegattaLog(); } 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 1b9a94d9310..f0dd9a955d7 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 @@ -296,11 +296,11 @@ public class RegattasResource extends AbstractSailingServerResource { competitorId = competitorIdAsString; } - final CompetitorWithBoat competitor = getService().getCompetitorStore().getExistingCompetitorWithBoatById(competitorId); + final Competitor competitor = getService().getCompetitorStore().getExistingCompetitorById(competitorId); if (competitor == null) { response = getBadCompetitorIdResponse(competitorId); } else { - regatta.registerCompetitorAndBoat(competitor, competitor.getBoat()); + regatta.registerCompetitor(competitor); response = Response.ok().build(); } } @@ -338,7 +338,7 @@ public class RegattasResource extends AbstractSailingServerResource { /* coach */ null), timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMileAsMillis == null ? null : new MillisecondsDurationImpl(timeOnDistanceAllowancePerNauticalMileAsMillis), searchTag, (DynamicBoat) boat); - regatta.registerCompetitorAndBoat(competitor, boat); + regatta.registerCompetitor(competitor); response = Response.ok(CompetitorWithBoatJsonSerializer.create().serialize(competitor).toJSONString()). header("Content-Type", MediaType.APPLICATION_JSON + ";charset=UTF-8").build(); } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaLogReplicationTest.java index ce190cd9259..517d9d584e6 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaLogReplicationTest.java @@ -10,7 +10,7 @@ import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.CompetitorAndBoat; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.impl.RegattaImpl; @@ -34,7 +34,7 @@ public class RegattaLogReplicationTest extends @Before public void createEvent() throws Exception { final CompetitorAndBoat competitorAndBoat = TrackBasedTest.createCompetitorAndBoat("Test Competitor"); - regattaLogEvent = new RegattaLogRegisterCompetitorAndBoatEventImpl(t(0), t(0), author, 0, competitorAndBoat.getCompetitor(), competitorAndBoat.getBoat()); + regattaLogEvent = new RegattaLogRegisterCompetitorEventImpl(t(0), t(0), author, 0, competitorAndBoat.getCompetitor()); // anotherRegattaLogEvent = new RegattaLogRegisterCompetitorEventImpl(t(1), author, t(1), 1, null); } 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 29b9fd3ff61..6776e0477ef 100644 --- 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 @@ -52,10 +52,10 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogStartTimeEventImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogWindFixEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorMappingEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMappingEvent; -import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorAndBoatEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorBravoMappingEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl; -import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorAndBoatEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; @@ -261,7 +261,6 @@ public class MasterDataImportTest { BoatClass boatClass = new BoatClassImpl("H16", true); CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", "KYC", Color.RED, null, null, team, /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */null, null); - Boat boat = new BoatImpl(competitorUUID, "Boat", boatClass, "GER1"); competitors.add(competitor); UUID competitorToSuppressUUID = UUID.randomUUID(); Set sailors2 = new HashSet(); @@ -294,8 +293,8 @@ public class MasterDataImportTest { // Set RegattaLog event TimePoint regattaLogTimepoint = new MillisecondsTimePoint(84392048L); - RegattaLogRegisterCompetitorAndBoatEvent registerEvent = new RegattaLogRegisterCompetitorAndBoatEventImpl( - regattaLogTimepoint, regattaLogTimepoint, author, UUID.randomUUID(), competitor, boat); + RegattaLogRegisterCompetitorEvent registerEvent = new RegattaLogRegisterCompetitorEventImpl( + regattaLogTimepoint, regattaLogTimepoint, author, UUID.randomUUID(), competitor); regatta.getRegattaLog().add(registerEvent); // Add some racelogtracking stuff @@ -458,7 +457,7 @@ public class MasterDataImportTest { raceColumnOnTarget.getRaceLog(fleet1OnTarget).add(postImportLogEvent); // Check for regatta log event - RegattaLogRegisterCompetitorAndBoatEvent registerEventOnTarget = (RegattaLogRegisterCompetitorAndBoatEvent) regattaOnTarget + RegattaLogRegisterCompetitorEvent registerEventOnTarget = (RegattaLogRegisterCompetitorEvent) regattaOnTarget .getRegattaLog().getFirstFixAtOrAfter(regattaLogTimepoint); Assert.assertNotNull(registerEventOnTarget); Assert.assertEquals(registerEvent.getId(), registerEventOnTarget.getId()); @@ -490,7 +489,7 @@ public class MasterDataImportTest { // Check for persisting of regatta log events Regatta regattaOnTarget2 = dest2.getRegattaByName(TEST_LEADERBOARD_NAME); - RegattaLogRegisterCompetitorAndBoatEvent registerEventOnTarget2 = (RegattaLogRegisterCompetitorAndBoatEvent) regattaOnTarget2 + RegattaLogRegisterCompetitorEvent registerEventOnTarget2 = (RegattaLogRegisterCompetitorEvent) regattaOnTarget2 .getRegattaLog().getFirstFixAtOrAfter(regattaLogTimepoint); Assert.assertNotNull(registerEventOnTarget2); Assert.assertEquals(registerEvent.getId(), registerEventOnTarget2.getId()); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/PersistentCompetitorStore.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/PersistentCompetitorStore.java index 468b34953d5..5bcc073338a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/PersistentCompetitorStore.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/PersistentCompetitorStore.java @@ -23,7 +23,6 @@ import com.sap.sailing.domain.base.impl.TransientCompetitorStoreImpl; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.persistence.PersistenceFactory; -import com.sap.sailing.domain.persistence.impl.CollectionNames; import com.sap.sse.common.Color; import com.sap.sse.common.Duration; import com.sap.sse.common.TypeBasedServiceFinderFactory; @@ -76,11 +75,8 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl * Migrate competitors with contained boats (before bug2822) to competitors with separate boats if required */ private void migrateCompetitorsIfRequired() { - boolean competitorsCollectionExist = storeTo.getDatabase().collectionExists(CollectionNames.COMPETITORS.name()); - boolean boatsCollectionCollectionExist = storeTo.getDatabase().collectionExists(CollectionNames.BOATS.name()); - boolean migrationRequired = competitorsCollectionExist && !boatsCollectionCollectionExist; - if (migrationRequired) { - Collection allLegacyCompetitorsWithBoat = loadFrom.renameCompetitorsCollectionAndloadAllLegacyCompetitors(); + Collection allLegacyCompetitorsWithBoat = loadFrom.migrateLegacyCompetitorsIfRequired(); + if (allLegacyCompetitorsWithBoat != null) { List newCompetitors = new ArrayList<>(); List newBoats = new ArrayList<>(); @@ -99,7 +95,6 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl } } - DomainObjectFactory getDomainObjectFactory() { return loadFrom; }