mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-09 13:50:57 +00:00
Regattas can now be created without replication
important for master data import as it itself is a replication operation
This commit is contained in:
1 parent
31760a3902
commit
29ce40b930
3 files changed
+41
-26
No files matched your search
@@ -537,4 +537,8 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
|
||||
void reloadRaceLog(String selectedLeaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet);
|
||||
|
||||
Pair<Regatta, Boolean> createRegattaWithoutReplication(String baseRegattaName, String boatClassName, Serializable id,
|
||||
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
|
||||
Serializable defaultCourseAreaId);
|
||||
|
||||
}
|
||||
+36
-25
@@ -701,18 +701,39 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
@Override
|
||||
public Regatta createRegatta(String baseRegattaName, String boatClassName,
|
||||
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId) {
|
||||
Pair<Regatta, Boolean> regattaWithCreatedFlag = createRegattaWithoutReplication(baseRegattaName, boatClassName, id, series, persistent,
|
||||
scoringScheme, defaultCourseAreaId);
|
||||
Regatta regatta = regattaWithCreatedFlag.getA();
|
||||
if (regattaWithCreatedFlag.getB()) {
|
||||
replicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||
}
|
||||
return regatta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<Regatta, Boolean> createRegattaWithoutReplication(String baseRegattaName, String boatClassName, Serializable id,
|
||||
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
|
||||
Serializable defaultCourseAreaId) {
|
||||
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);
|
||||
boolean wasCreated = false;
|
||||
if (!regattasByName.containsKey(regatta.getName())) {
|
||||
wasCreated = true;
|
||||
logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this);
|
||||
regattasByName.put(regatta.getName(), regatta);
|
||||
regatta.addRegattaListener(this);
|
||||
regatta.addRaceColumnListener(raceLogReplicator);
|
||||
regatta.addRaceColumnListener(raceLogScoringReplicator);
|
||||
}
|
||||
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this);
|
||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||
if (persistent) {
|
||||
updateStoredRegatta(regatta);
|
||||
}
|
||||
return regatta;
|
||||
return new Pair<Regatta, Boolean>(regatta, wasCreated);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -835,35 +856,25 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
/**
|
||||
* If <code>regatta</code> is not yet in {@link #regattasByName}, it is added, this service is
|
||||
* {@link Regatta#addRegattaListener(RegattaListener) added} as regatta listener, and the regatta and all its
|
||||
* The regatta and all its
|
||||
* contained {@link Regatta#getAllRaces() races} are replicated to all replica.
|
||||
*
|
||||
* @param regatta
|
||||
* the series of this regatta must not have any {@link Series#getRaceColumns() race columns associated
|
||||
* (yet)}.
|
||||
*/
|
||||
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta) {
|
||||
if (!regattasByName.containsKey(regatta.getName())) {
|
||||
logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this);
|
||||
regattasByName.put(regatta.getName(), regatta);
|
||||
regatta.addRegattaListener(this);
|
||||
regatta.addRaceColumnListener(raceLogReplicator);
|
||||
regatta.addRaceColumnListener(raceLogScoringReplicator);
|
||||
|
||||
Serializable courseAreaId = null;
|
||||
if (regatta.getDefaultCourseArea() != null) {
|
||||
courseAreaId = regatta.getDefaultCourseArea().getId();
|
||||
}
|
||||
|
||||
replicate(new AddSpecificRegatta(
|
||||
regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
||||
.getBoatClass().getName(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta),
|
||||
regatta.isPersistent(), regatta.getScoringScheme(), courseAreaId));
|
||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||
}
|
||||
private void replicateSpecificRegattaWithoutRaceColumns(Regatta regatta) {
|
||||
Serializable courseAreaId = null;
|
||||
if (regatta.getDefaultCourseArea() != null) {
|
||||
courseAreaId = regatta.getDefaultCourseArea().getId();
|
||||
}
|
||||
replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
||||
.getBoatClass().getName(), regatta.getId(),
|
||||
getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(),
|
||||
regatta.getScoringScheme(), courseAreaId));
|
||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -237,7 +237,7 @@ public class ImportMasterDataOperation extends AbstractRacingEventServiceOperati
|
||||
String defaultCourseAreaId = singleRegattaData.getDefaultCourseAreaId();
|
||||
String scoringSchemeType = singleRegattaData.getScoringSchemeType();
|
||||
boolean isPersistent = singleRegattaData.isPersistent();
|
||||
toState.createRegatta(baseName, boatClassName, UUID.fromString(id), series, isPersistent,
|
||||
toState.createRegattaWithoutReplication(baseName, boatClassName, UUID.fromString(id), series, isPersistent,
|
||||
domainFactory.createScoringScheme(ScoringSchemeType.valueOf(scoringSchemeType)),
|
||||
UUID.fromString(defaultCourseAreaId));
|
||||
creationCount.addOneRegatta();
|
||||
|
||||
Reference in new issue
Block a user