mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-11 06:40:53 +00:00
introduced a manageable flag "useStartTimeInference" on Regatta that is evaluated by TrackedRaceImpl.getStartOfRace(), solving bug 1994
This commit is contained in:
1 parent
2c7db98c06
commit
4f15a562b3
41 files changed
+170
-116
No files matched your search
@@ -274,10 +274,11 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
|
||||
/**
|
||||
* @param series the series must not have any {@link RaceColumn}s yet
|
||||
* @param useStartTimeInference TODO
|
||||
*/
|
||||
Regatta createRegatta(String regattaBaseName, String boatClassName, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId);
|
||||
Regatta createRegatta(String regattaBaseName, String boatClassName, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, boolean useStartTimeInference);
|
||||
|
||||
Regatta updateRegatta(RegattaIdentifier regattaIdentifier, Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration, Iterable<? extends Series> series);
|
||||
Regatta updateRegatta(RegattaIdentifier regattaIdentifier, Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration, Iterable<? extends Series> series, boolean useStartTimeInference);
|
||||
|
||||
/**
|
||||
* Adds <code>raceDefinition</code> to the {@link Regatta} such that it will appear in {@link Regatta#getAllRaces()}
|
||||
@@ -444,12 +445,13 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
RaceLog getRaceLog(String leaderboardName, String raceColumnName, String fleetName);
|
||||
|
||||
/**
|
||||
* @param useStartTimeInference TODO
|
||||
* @return a pair with the found or created regatta, and a boolean that tells whether the regatta was created during
|
||||
* the call
|
||||
*/
|
||||
Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String baseRegattaName, String boatClassName, Serializable id,
|
||||
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
|
||||
Serializable defaultCourseAreaId);
|
||||
Serializable defaultCourseAreaId, boolean useStartTimeInference);
|
||||
|
||||
/**
|
||||
* @return map where keys are the toString() representation of the {@link RaceDefinition#getId() IDs} of races passed to
|
||||
|
||||
+9
-6
@@ -975,9 +975,9 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport
|
||||
@Override
|
||||
public Regatta createRegatta(String baseRegattaName, String boatClassName, Serializable id,
|
||||
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
|
||||
Serializable defaultCourseAreaId) {
|
||||
Serializable defaultCourseAreaId, boolean useStartTimeInference) {
|
||||
com.sap.sse.common.Util.Pair<Regatta, Boolean> regattaWithCreatedFlag = getOrCreateRegattaWithoutReplication(baseRegattaName,
|
||||
boatClassName, id, series, persistent, scoringScheme, defaultCourseAreaId);
|
||||
boatClassName, id, series, persistent, scoringScheme, defaultCourseAreaId, useStartTimeInference);
|
||||
Regatta regatta = regattaWithCreatedFlag.getA();
|
||||
if (regattaWithCreatedFlag.getB()) {
|
||||
replicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||
@@ -1000,12 +1000,12 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport
|
||||
@Override
|
||||
public com.sap.sse.common.Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String baseRegattaName, String boatClassName,
|
||||
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
|
||||
Serializable defaultCourseAreaId) {
|
||||
Serializable defaultCourseAreaId, boolean useStartTimeInference) {
|
||||
RaceLogStore raceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory,
|
||||
domainObjectFactory);
|
||||
CourseArea courseArea = getCourseArea(defaultCourseAreaId);
|
||||
Regatta regatta = new RegattaImpl(raceLogStore, baseRegattaName, getBaseDomainFactory().getOrCreateBoatClass(
|
||||
boatClassName), series, persistent, scoringScheme, id, courseArea);
|
||||
boatClassName), series, persistent, scoringScheme, id, courseArea, /* useStartTimeInference */ true);
|
||||
boolean wasCreated = addAndConnectRegatta(persistent, defaultCourseAreaId, regatta);
|
||||
if (wasCreated) {
|
||||
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on " + this);
|
||||
@@ -1186,7 +1186,7 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport
|
||||
replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
||||
.getBoatClass().getName(), regatta.getId(),
|
||||
getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(),
|
||||
regatta.getScoringScheme(), courseAreaId));
|
||||
regatta.getScoringScheme(), courseAreaId, regatta.useStartTimeInference()));
|
||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||
@@ -1600,13 +1600,16 @@ public class RacingEventServiceImpl implements RacingEventServiceWithTestSupport
|
||||
|
||||
@Override
|
||||
public Regatta updateRegatta(RegattaIdentifier regattaIdentifier, Serializable newDefaultCourseAreaId,
|
||||
RegattaConfiguration newRegattaConfiguration, Iterable<? extends Series> series) {
|
||||
RegattaConfiguration newRegattaConfiguration, Iterable<? extends Series> series, boolean useStartTimeInference) {
|
||||
// We're not doing any renaming of the regatta itself, therefore we don't have to sync on the maps.
|
||||
Regatta regatta = getRegatta(regattaIdentifier);
|
||||
CourseArea newCourseArea = getCourseArea(newDefaultCourseAreaId);
|
||||
if (newCourseArea != regatta.getDefaultCourseArea()) {
|
||||
regatta.setDefaultCourseArea(newCourseArea);
|
||||
}
|
||||
if (regatta.useStartTimeInference() != useStartTimeInference) {
|
||||
regatta.setUseStartTimeInference(useStartTimeInference);
|
||||
}
|
||||
regatta.setRegattaConfiguration(newRegattaConfiguration);
|
||||
if (series != null) {
|
||||
for (Series seriesObj : series) {
|
||||
|
||||
+4
-2
@@ -26,21 +26,23 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation {
|
||||
private final boolean persistent;
|
||||
private final ScoringScheme scoringScheme;
|
||||
private final Serializable defaultCourseAreaId;
|
||||
private final boolean useStartTimeInference;
|
||||
|
||||
public AddSpecificRegatta(String regattaName, String boatClassName, Serializable id,
|
||||
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds,
|
||||
boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId) {
|
||||
boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, boolean useStartTimeInference) {
|
||||
super(regattaName, boatClassName, id);
|
||||
this.seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndStartsWithZeroScoreAndDiscardingThresholds = seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds;
|
||||
this.persistent = persistent;
|
||||
this.scoringScheme = scoringScheme;
|
||||
this.defaultCourseAreaId = defaultCourseAreaId;
|
||||
this.useStartTimeInference = useStartTimeInference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
||||
Regatta regatta = toState.createRegatta(getBaseRegattaName(), getBoatClassName(), getId(), createSeries(toState),
|
||||
persistent, scoringScheme, defaultCourseAreaId);
|
||||
persistent, scoringScheme, defaultCourseAreaId, useStartTimeInference);
|
||||
return regatta;
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -14,17 +14,19 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation<R
|
||||
private final RegattaIdentifier regattaIdentifier;
|
||||
private final UUID newDefaultCourseAreaId;
|
||||
private final RegattaConfiguration newConfiguration;
|
||||
private final boolean useStartTimeInference;
|
||||
|
||||
public UpdateSpecificRegatta(RegattaIdentifier regattaIdentifier, UUID newDefaultCourseAreaId,
|
||||
RegattaConfiguration newConfiguration) {
|
||||
RegattaConfiguration newConfiguration, boolean useStartTimeInference) {
|
||||
this.regattaIdentifier = regattaIdentifier;
|
||||
this.newDefaultCourseAreaId = newDefaultCourseAreaId;
|
||||
this.newConfiguration = newConfiguration;
|
||||
this.useStartTimeInference = useStartTimeInference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
||||
Regatta regatta = toState.updateRegatta(regattaIdentifier, newDefaultCourseAreaId, newConfiguration, null);
|
||||
Regatta regatta = toState.updateRegatta(regattaIdentifier, newDefaultCourseAreaId, newConfiguration, null, useStartTimeInference);
|
||||
return regatta;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user