mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-25 06:58:39 +00:00
major refacoring and cleanup of RaceLog and RegattaLog events needed for the new way of registering boats and competitors as separate entities -> UI is still not ready for it.
This commit is contained in:
+39
-6
@@ -2,10 +2,12 @@ package com.sap.sailing.mongodb.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -15,20 +17,51 @@ import com.mongodb.DB;
|
||||
import com.mongodb.DBCollection;
|
||||
import com.mongodb.MongoException;
|
||||
import com.mongodb.WriteConcern;
|
||||
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.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorWithBoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.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.sailing.domain.test.AbstractLeaderboardTest;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class StoreAndLoadCompetitorsTest extends AbstractMongoDBTest {
|
||||
private DomainFactory domainFactory;
|
||||
|
||||
private final static BoatClass boatClass = new BoatClassImpl("505", /* typicallyStartsUpwind */ true);
|
||||
|
||||
public static Competitor createCompetitor(String competitorName) {
|
||||
return createCompetitor(competitorName, competitorName);
|
||||
}
|
||||
|
||||
public static Competitor createCompetitor(String competitorName, Serializable id) {
|
||||
return new CompetitorImpl(id, competitorName, "KYC", Color.RED, null, null, new TeamImpl("STG", Collections.singleton(
|
||||
new PersonImpl(competitorName, new NationalityImpl("GER"),
|
||||
/* dateOfBirth */ null, "This is famous "+competitorName)),
|
||||
new PersonImpl("Rigo van Maas", new NationalityImpl("NED"),
|
||||
/* dateOfBirth */null, "This is Rigo, the coach")),
|
||||
/* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null);
|
||||
}
|
||||
|
||||
public static CompetitorWithBoat createCompetitorWithBoat(String competitorName) {
|
||||
Competitor c = createCompetitor(competitorName);
|
||||
DynamicBoat b = new BoatImpl("id12345", competitorName + "'s boat", boatClass, /* sailID */ null);
|
||||
return new CompetitorWithBoatImpl(c, b);
|
||||
}
|
||||
|
||||
public StoreAndLoadCompetitorsTest() throws UnknownHostException, MongoException {
|
||||
super();
|
||||
}
|
||||
@@ -59,12 +92,12 @@ public class StoreAndLoadCompetitorsTest extends AbstractMongoDBTest {
|
||||
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), domainFactory);
|
||||
dropCompetitorCollection();
|
||||
|
||||
DynamicCompetitor c = (DynamicCompetitor) AbstractLeaderboardTest.createCompetitorAndBoat(competitorName1).getCompetitor();
|
||||
DynamicCompetitor c = (DynamicCompetitor) createCompetitor(competitorName1);
|
||||
c.setShortName(competitorShortName1);
|
||||
c.setFlagImage(flagImageURI1);
|
||||
mongoObjectFactory.storeCompetitor(c);
|
||||
|
||||
Collection<CompetitorWithBoat> allCompetitors = domainObjectFactory.loadAllCompetitors();
|
||||
Collection<Competitor> allCompetitors = domainObjectFactory.loadAllCompetitors();
|
||||
assertEquals(1, Util.size(allCompetitors));
|
||||
DynamicCompetitor loadedCompetitor = (DynamicCompetitor) allCompetitors.iterator().next();
|
||||
assertEquals(flagImageURI1, loadedCompetitor.getFlagImage());
|
||||
@@ -90,7 +123,7 @@ public class StoreAndLoadCompetitorsTest extends AbstractMongoDBTest {
|
||||
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), domainFactory);
|
||||
dropCompetitorCollection();
|
||||
|
||||
DynamicCompetitor c = (DynamicCompetitor) AbstractLeaderboardTest.createCompetitorAndBoat("Hasso", UUID.randomUUID()).getCompetitor();
|
||||
DynamicCompetitor c = (DynamicCompetitor) createCompetitor("Hasso", UUID.randomUUID());
|
||||
mongoObjectFactory.storeCompetitor(c);
|
||||
assertEquals(1, Util.size(domainObjectFactory.loadAllCompetitors()));
|
||||
c.setName("Hasso Plattner");
|
||||
@@ -104,7 +137,7 @@ public class StoreAndLoadCompetitorsTest extends AbstractMongoDBTest {
|
||||
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), domainFactory);
|
||||
dropCompetitorCollection();
|
||||
|
||||
DynamicCompetitor c = (DynamicCompetitor) AbstractLeaderboardTest.createCompetitorAndBoat("Hasso").getCompetitor();
|
||||
DynamicCompetitor c = (DynamicCompetitor) createCompetitor("Hasso");
|
||||
mongoObjectFactory.storeCompetitor(c);
|
||||
assertEquals(1, Util.size(domainObjectFactory.loadAllCompetitors()));
|
||||
|
||||
@@ -118,7 +151,7 @@ public class StoreAndLoadCompetitorsTest extends AbstractMongoDBTest {
|
||||
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), domainFactory);
|
||||
dropCompetitorCollection();
|
||||
|
||||
DynamicCompetitor c = (DynamicCompetitor) AbstractLeaderboardTest.createCompetitorAndBoat("Hasso", UUID.randomUUID()).getCompetitor();
|
||||
DynamicCompetitor c = (DynamicCompetitor) createCompetitor("Hasso", UUID.randomUUID());
|
||||
mongoObjectFactory.storeCompetitor(c);
|
||||
assertEquals(1, Util.size(domainObjectFactory.loadAllCompetitors()));
|
||||
|
||||
|
||||
+10
-7
@@ -34,12 +34,13 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogRaceStatusEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogRevokeEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogStartTimeEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorAndBoatEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogDenoteForTrackingEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterCompetitorAndBoatEventImpl;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
@@ -53,6 +54,7 @@ import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
||||
private final static BoatClass boatClass = new BoatClassImpl("505", /* typicallyStartsUpwind */ true);
|
||||
|
||||
protected MongoObjectFactoryImpl mongoFactory = (MongoObjectFactoryImpl) PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(getMongoService(), new MockSmartphoneImeiServiceFinderFactory());
|
||||
@@ -84,7 +86,7 @@ public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
||||
assertEquals(expectedEvent.getCreatedAt(), actualEvent.getCreatedAt());
|
||||
assertEquals(expectedEvent.getLogicalTimePoint(), actualEvent.getLogicalTimePoint());
|
||||
assertEquals(expectedEvent.getId(), actualEvent.getId());
|
||||
assertEquals(expectedEvent.getInvolvedBoats().size(), Util.size(actualEvent.getInvolvedBoats()));
|
||||
assertEquals(expectedEvent.getInvolvedCompetitors().size(), Util.size(actualEvent.getInvolvedCompetitors()));
|
||||
assertEquals(expectedEvent.getPassId(), actualEvent.getPassId());
|
||||
}
|
||||
|
||||
@@ -209,14 +211,15 @@ public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStoreAndLoadRegisterCompetitorEvent() {
|
||||
RaceLogRegisterCompetitorEvent expectedEvent = new RaceLogRegisterCompetitorEventImpl(expectedEventTime,
|
||||
public void testStoreAndLoadRegisterCompetitorAndBoatEvent() {
|
||||
RaceLogRegisterCompetitorAndBoatEvent expectedEvent = new RaceLogRegisterCompetitorAndBoatEventImpl(expectedEventTime,
|
||||
expectedEventTime, author, expectedId, expectedPassId, DomainFactory.INSTANCE.getOrCreateCompetitor(
|
||||
"comp", "comp", "c", null, null, null, null,
|
||||
/* timeOnTimeFactor */null, /* timeOnDistanceAllowancePerNauticalMile */null, null));
|
||||
/* timeOnTimeFactor */null, /* timeOnDistanceAllowancePerNauticalMile */null, null),
|
||||
DomainFactory.INSTANCE.getOrCreateBoat("boat", "b", boatClass, null, null));
|
||||
|
||||
DBObject dbObject = mongoFactory.storeRaceLogEntry(logIdentifier, expectedEvent);
|
||||
RaceLogRegisterCompetitorEvent actualEvent = loadEvent(dbObject);
|
||||
RaceLogRegisterCompetitorAndBoatEvent actualEvent = loadEvent(dbObject);
|
||||
|
||||
assertBaseFields(expectedEvent, actualEvent);
|
||||
assertEquals(expectedEvent.getCompetitor(), actualEvent.getCompetitor());
|
||||
|
||||
+12
-12
@@ -27,9 +27,9 @@ import java.util.logging.Logger;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterEntryEventImpl;
|
||||
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.CompetitorAndBoat;
|
||||
@@ -418,18 +418,18 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
/* defaultCourseAreaId */ null, /*buoyZoneRadiusInHullLengths*/ 2.0, /* useStartTimeInference */ true,
|
||||
/* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
|
||||
CompetitorAndBoat competitorAndBoat1 = AbstractLeaderboardTest.createCompetitorAndBoat("Humba1");
|
||||
CompetitorAndBoat competitorAndBoat2 = AbstractLeaderboardTest.createCompetitorAndBoat("Humba2");
|
||||
res.getCompetitorStore().addCompetitors(Arrays.asList(competitorAndBoat1.getCompetitor(), competitorAndBoat2.getCompetitor()));
|
||||
regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitorAndBoat1.getCompetitor()));
|
||||
regatta.getRegattaLog().add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitorAndBoat2.getCompetitor()));
|
||||
assertTrue(Util.contains(regatta.getAllCompetitors(), competitorAndBoat1));
|
||||
assertTrue(Util.contains(regatta.getAllCompetitors(), competitorAndBoat2));
|
||||
Competitor competitor1 = AbstractLeaderboardTest.createCompetitor("Humba1");
|
||||
Competitor competitor2 = AbstractLeaderboardTest.createCompetitor("Humba2");
|
||||
res.getCompetitorStore().addCompetitors(Arrays.asList(competitor1, competitor2));
|
||||
regatta.getRegattaLog().add(new RegattaLogRegisterEntryEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor1));
|
||||
regatta.getRegattaLog().add(new RegattaLogRegisterEntryEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Axel", 0), competitor2));
|
||||
assertTrue(Util.contains(regatta.getAllCompetitors(), competitor1));
|
||||
assertTrue(Util.contains(regatta.getAllCompetitors(), competitor2));
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
RegattaLeaderboard fullLeaderboard = res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 });
|
||||
// use the set-up and add a regatta leaderboard with eliminations that wraps the regatta leaderboard
|
||||
RegattaLeaderboardWithEliminations withEliminations = res.addRegattaLeaderboardWithEliminations("U16", /* leaderboardDisplayName */ "Display Name", fullLeaderboard);
|
||||
res.apply(new UpdateEliminatedCompetitorsInLeaderboard(withEliminations.getName(), Collections.singleton(competitorAndBoat1.getCompetitor())));
|
||||
res.apply(new UpdateEliminatedCompetitorsInLeaderboard(withEliminations.getName(), Collections.singleton(competitor1)));
|
||||
|
||||
DomainObjectFactory dof = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE);
|
||||
Regatta loadedRegatta = dof.loadRegatta(regatta.getName(), /* trackedRegattaRegistry */ null);
|
||||
@@ -451,8 +451,8 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
assertTrue(loadedLeaderboardWithEliminations instanceof RegattaLeaderboardWithEliminations);
|
||||
assertEquals("Display Name", loadedLeaderboardWithEliminations.getDisplayName());
|
||||
assertEquals(withEliminations.getAllCompetitors(), loadedLeaderboardWithEliminations.getAllCompetitors());
|
||||
assertTrue(((RegattaLeaderboardWithEliminations) loadedLeaderboardWithEliminations).isEliminated(competitorAndBoat1.getCompetitor()));
|
||||
assertFalse(((RegattaLeaderboardWithEliminations) loadedLeaderboardWithEliminations).isEliminated(competitorAndBoat2.getCompetitor()));
|
||||
assertTrue(((RegattaLeaderboardWithEliminations) loadedLeaderboardWithEliminations).isEliminated(competitor1));
|
||||
assertFalse(((RegattaLeaderboardWithEliminations) loadedLeaderboardWithEliminations).isEliminated(competitor2));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+2
-2
@@ -369,7 +369,7 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD
|
||||
RaceLogFinishPositioningConfirmedEvent loadedConfirmedEvent = (RaceLogFinishPositioningConfirmedEvent) loadedEvent;
|
||||
assertEquals(now, loadedConfirmedEvent.getLogicalTimePoint());
|
||||
assertEquals(0, loadedConfirmedEvent.getPassId());
|
||||
assertEquals(0, loadedConfirmedEvent.getInvolvedBoats().size());
|
||||
assertEquals(0, loadedConfirmedEvent.getInvolvedCompetitors().size());
|
||||
assertNull(event.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertNull(loadedConfirmedEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
|
||||
@@ -419,7 +419,7 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD
|
||||
assertEquals(event.getLogicalTimePoint(), loadedPositioningEvent.getLogicalTimePoint());
|
||||
assertEquals(event.getPassId(), loadedPositioningEvent.getPassId());
|
||||
assertEquals(event.getId(), loadedPositioningEvent.getId());
|
||||
assertEquals(event.getInvolvedBoats().size(), loadedPositioningEvent.getInvolvedBoats().size());
|
||||
assertEquals(event.getInvolvedCompetitors().size(), loadedPositioningEvent.getInvolvedCompetitors().size());
|
||||
final CompetitorResults expectedCompetiorResults = event.getPositionedCompetitorsIDsNamesMaxPointsReasons();
|
||||
final CompetitorResults loadedCompetitorResults = loadedPositioningEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons();
|
||||
assertCompetitorResultsEqual(expectedCompetiorResults, loadedCompetitorResults);
|
||||
|
||||
+3
-3
@@ -221,7 +221,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin
|
||||
assertEquals(event.getLogicalTimePoint(), loadedPositioningEvent.getLogicalTimePoint());
|
||||
assertEquals(event.getPassId(), loadedPositioningEvent.getPassId());
|
||||
assertEquals(event.getId(), loadedPositioningEvent.getId());
|
||||
assertEquals(event.getInvolvedBoats().size(), loadedPositioningEvent.getInvolvedBoats().size());
|
||||
assertEquals(event.getInvolvedCompetitors().size(), loadedPositioningEvent.getInvolvedCompetitors().size());
|
||||
assertCompetitorResultsEqual(event.getPositionedCompetitorsIDsNamesMaxPointsReasons(), loadedPositioningEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
|
||||
} finally {
|
||||
@@ -245,7 +245,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin
|
||||
assertEquals(event.getLogicalTimePoint(), loadedConfirmedEvent.getLogicalTimePoint());
|
||||
assertEquals(event.getPassId(), loadedConfirmedEvent.getPassId());
|
||||
assertEquals(event.getId(), loadedConfirmedEvent.getId());
|
||||
assertEquals(event.getInvolvedBoats().size(), loadedConfirmedEvent.getInvolvedBoats().size());
|
||||
assertEquals(event.getInvolvedCompetitors().size(), loadedConfirmedEvent.getInvolvedCompetitors().size());
|
||||
assertCompetitorResultsEqual(event.getPositionedCompetitorsIDsNamesMaxPointsReasons(), loadedConfirmedEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
|
||||
} finally {
|
||||
@@ -267,7 +267,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin
|
||||
RaceLogFinishPositioningConfirmedEvent loadedConfirmedEvent = (RaceLogFinishPositioningConfirmedEvent) loadedEvent;
|
||||
assertEquals(now, loadedConfirmedEvent.getLogicalTimePoint());
|
||||
assertEquals(0, loadedConfirmedEvent.getPassId());
|
||||
assertEquals(0, loadedConfirmedEvent.getInvolvedBoats().size());
|
||||
assertEquals(0, loadedConfirmedEvent.getInvolvedCompetitors().size());
|
||||
assertNull(event.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertNull(loadedConfirmedEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons());
|
||||
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
|
||||
|
||||
Reference in New Issue
Block a user