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 63f4230650b..98e1d528dcb 100755 --- 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 @@ -806,7 +806,10 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } BasicDBList dbSeries = (BasicDBList) dbRegatta.get(FieldNames.REGATTA_SERIES.name()); Iterable series = loadSeries(dbSeries, trackedRegattaRegistry); - result = new RegattaImpl(baseName, boatClass, series, /* persistent */ true, loadScoringScheme(dbRegatta), id); + RaceLogStore raceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore( + new MongoObjectFactoryImpl(database), + this); + result = new RegattaImpl(raceLogStore, baseName, boatClass, series, /* persistent */ true, loadScoringScheme(dbRegatta), id); } return result; } @@ -840,8 +843,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { BasicDBList dbRaceColumns = (BasicDBList) dbSeries.get(FieldNames.SERIES_RACE_COLUMNS.name()); Iterable raceColumnNames = loadRaceColumnNames(dbRaceColumns, fleetsByName); Series series = new SeriesImpl( - MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore( - new MongoObjectFactoryImpl(database), this), name, isMedal, fleetsByName.values(), diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java index 475cb305288..f7199930d98 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java @@ -4,7 +4,9 @@ import com.sap.sailing.domain.common.Named; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.common.impl.Util.Pair; +import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.util.impl.RaceColumnListeners; @@ -27,8 +29,15 @@ import com.sap.sailing.util.impl.RaceColumnListeners; */ public interface RaceColumn extends Named { + /** - * Gets the race column's race log of passed fleet. + * Sets the information object used to access the race column's race logs. + * @param information + */ + void setRaceLogInformation(RaceLogInformation information); + + /** + * Gets the race column's race log associated to the passed fleet. * * @param fleet * @return the race log. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 6fdaad0c0f2..29778d0e357 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -9,6 +9,7 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.tracking.TrackedRace; public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implements RaceColumn { @@ -18,10 +19,18 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem private final Map raceIdentifiers; private final Map raceLogs; - public AbstractRaceColumn(Map raceLogs) { + public AbstractRaceColumn() { this.trackedRaces = new HashMap(); this.raceIdentifiers = new HashMap(); - this.raceLogs = raceLogs; + this.raceLogs = new HashMap(); + } + + @Override + public void setRaceLogInformation(RaceLogInformation information) { + raceLogs.clear(); + for (Fleet fleet : getFleets()) { + raceLogs.put(fleet, information.getRaceLog(this, fleet)); + } } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnInSeriesImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnInSeriesImpl.java index e7455115956..f748dc4492a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnInSeriesImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnInSeriesImpl.java @@ -6,7 +6,6 @@ import com.sap.sailing.domain.base.RaceColumnInSeries; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; @@ -36,8 +35,8 @@ public class RaceColumnInSeriesImpl extends AbstractRaceColumn implements RaceCo * this column's series {@link Regatta}, respectively. If null, the re-association won't be * carried out. */ - public RaceColumnInSeriesImpl(RaceLogInformation raceLogInformation, String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry) { - super(raceLogInformation.getStore().getRaceLogs(raceLogInformation.getIdentifierTemplate(), series.getFleets())); + public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry) { + super(); this.name = name; this.series = series; this.trackedRegattaRegistry = trackedRegattaRegistry; 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 3c3a140f2cd..54006917441 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 @@ -25,6 +25,9 @@ import com.sap.sailing.domain.common.impl.NamedImpl; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLogStore; +import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; +import com.sap.sailing.domain.racelog.impl.RaceLogInformationImpl; +import com.sap.sailing.domain.racelog.impl.RaceLogOnRegattaIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; @@ -40,6 +43,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene private final RaceColumnListeners raceColumnListeners; private final ScoringScheme scoringScheme; private final Serializable id; + private transient RaceLogStore raceLogStore; /** * Regattas may be constructed as implicit default regattas in which case they won't need to be stored @@ -51,6 +55,20 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene */ private final boolean persistent; + /** + * Constructs a regatta with an empty {@link RaceLogStore}. + */ + public RegattaImpl(String baseName, BoatClass boatClass, TrackedRegattaRegistry trackedRegattaRegistry, ScoringScheme scoringScheme, Serializable id) { + this(EmptyRaceLogStore.INSTANCE, baseName, boatClass, trackedRegattaRegistry, scoringScheme, id); + } + + /** + * Constructs a regatta with an empty {@link RaceLogStore}. + */ + public RegattaImpl(String baseName, BoatClass boatClass, Iterable series, boolean persistent, ScoringScheme scoringScheme, Serializable id) { + this(EmptyRaceLogStore.INSTANCE, baseName, boatClass, series, persistent, scoringScheme, id); + } + /** * Constructs a regatta with a single default series with empty race column list, and a single default fleet which * is not {@link #isPersistent() marked for persistence}. @@ -62,7 +80,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene * carried out. */ public RegattaImpl(RaceLogStore raceLogStore, String baseName, BoatClass boatClass, TrackedRegattaRegistry trackedRegattaRegistry, ScoringScheme scoringScheme, Serializable id) { - this(baseName, boatClass, Collections.singletonList(new SeriesImpl(raceLogStore, "Default", /* isMedal */false, Collections + this(raceLogStore, baseName, boatClass, Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections .singletonList(new FleetImpl("Default")), /* race column names */new ArrayList(), trackedRegattaRegistry)), /* persistent */false, scoringScheme, id); } @@ -72,9 +90,10 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene * all {@link Series} in this iterable will have their {@link Series#setRegatta(Regatta) regatta set} to * this new regatta. */ - public RegattaImpl(String baseName, BoatClass boatClass, Iterable series, boolean persistent, ScoringScheme scoringScheme, Serializable id) { + public RegattaImpl(RaceLogStore raceLogStore, String baseName, BoatClass boatClass, Iterable series, boolean persistent, ScoringScheme scoringScheme, Serializable id) { super(getFullName(baseName, boatClass==null?null:boatClass.getName())); this.id = id; + this.raceLogStore = raceLogStore; races = new HashSet(); regattaListeners = new HashSet(); raceColumnListeners = new RaceColumnListeners(); @@ -115,6 +134,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); + raceLogStore = EmptyRaceLogStore.INSTANCE; regattaListeners = new HashSet(); } @@ -236,6 +256,11 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene @Override public void raceColumnAddedToContainer(RaceColumn raceColumn) { + raceColumn.setRaceLogInformation( + new RaceLogInformationImpl( + raceLogStore, + new RaceLogOnRegattaIdentifier(this, raceColumn.getName()))); + raceColumnListeners.notifyListenersAboutRaceColumnAddedToContainer(raceColumn); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java index cc1cc2245b5..4dfde54f467 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java @@ -1,14 +1,11 @@ package com.sap.sailing.domain.base.impl; -import java.io.IOException; -import java.io.ObjectInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; - import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -20,10 +17,6 @@ import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.common.impl.NamedImpl; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.racelog.RaceLogStore; -import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; -import com.sap.sailing.domain.racelog.impl.RaceLogInformationImpl; -import com.sap.sailing.domain.racelog.impl.RaceLogOnRegattaIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; @@ -37,7 +30,6 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener private boolean isMedal; private Regatta regatta; private final RaceColumnListeners raceColumnListeners; - private transient RaceLogStore raceLogStore; /** * @param fleets @@ -49,7 +41,7 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener * this column's series {@link Regatta}, respectively. If null, the re-association won't be * carried out. */ - public SeriesImpl(RaceLogStore raceLogStore, String name, boolean isMedal, Iterable fleets, Iterable raceColumnNames, + public SeriesImpl(String name, boolean isMedal, Iterable fleets, Iterable raceColumnNames, TrackedRegattaRegistry trackedRegattaRegistry) { super(name); if (fleets == null || Util.isEmpty(fleets)) { @@ -68,22 +60,6 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener for (String raceColumnName : raceColumnNames) { addRaceColumn(raceColumnName, trackedRegattaRegistry); } - this.raceLogStore = raceLogStore; - } - - public SeriesImpl(String name, boolean isMedal, Iterable fleets, Iterable raceColumnNames, - TrackedRegattaRegistry trackedRegattaRegistry) { - this(EmptyRaceLogStore.INSTANCE, name, isMedal, fleets, raceColumnNames, trackedRegattaRegistry); - } - - /** - * Deserialization has to be maintained in lock-step with {@link #writeObject(ObjectOutputStream) serialization}. - * When de-serializing, a possibly remote {@link #raceLogStore} is ignored because it is transient. Instead, an - * {@link EmptyRaceLogStore} is used for the de-serialized instance. - */ - private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { - ois.defaultReadObject(); - raceLogStore = EmptyRaceLogStore.INSTANCE; } @Override @@ -151,9 +127,6 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener */ private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) { return new RaceColumnInSeriesImpl( - new RaceLogInformationImpl( - raceLogStore, - new RaceLogOnRegattaIdentifier(regatta, raceColumnName)), raceColumnName, this, trackedRegattaRegistry); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java index 9a0cc62bdf1..98787cc1bdd 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java @@ -145,9 +145,6 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements protected RaceColumnImpl createRaceColumn(String column, boolean medalRace, Fleet... fleets) { return new RaceColumnImpl( - new RaceLogInformationImpl( - raceLogStore, - new RaceLogOnLeaderboardIdentifier(this, column)), column, medalRace, turnNullOrEmptyFleetsIntoDefaultFleet(fleets)); @@ -221,5 +218,14 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements public ScoringScheme getScoringScheme() { return scoringScheme; } + + @Override + public void raceColumnAddedToContainer(RaceColumn raceColumn) { + raceColumn.setRaceLogInformation( + new RaceLogInformationImpl( + raceLogStore, + new RaceLogOnLeaderboardIdentifier(this, raceColumn.getName()))); + super.raceColumnAddedToContainer(raceColumn); + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/RaceColumnImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/RaceColumnImpl.java index bbfe3739129..941f051b805 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/RaceColumnImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/RaceColumnImpl.java @@ -4,11 +4,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; - import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.impl.AbstractRaceColumn; import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn; -import com.sap.sailing.domain.racelog.RaceLogInformation; public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceColumn { private static final long serialVersionUID = -7801617988982540470L; @@ -21,8 +19,8 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo private final Iterable fleets; private boolean medalRace; - public RaceColumnImpl(RaceLogInformation raceLogInformation, String name, boolean medalRace, Iterable fleets) { - super(raceLogInformation.getStore().getRaceLogs(raceLogInformation.getIdentifierTemplate(), fleets)); + public RaceColumnImpl(String name, boolean medalRace, Iterable fleets) { + super(); this.name = name; this.medalRace = medalRace; List myFleets = new ArrayList(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java index d4247dbb0e2..456acff018c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java @@ -11,6 +11,7 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.tracking.TrackedRace; /** @@ -32,6 +33,11 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R leaderboard.addRaceColumnListener(this); } + @Override + public void setRaceLogInformation(RaceLogInformation information) { + return; + } + @Override public RaceLog getRaceLog(Fleet fleet) { return null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogInformation.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogInformation.java index 40aaf078ec8..5203ca391df 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogInformation.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogInformation.java @@ -1,9 +1,13 @@ package com.sap.sailing.domain.racelog; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; + public interface RaceLogInformation { RaceLogStore getStore(); RaceLogIdentifierTemplate getIdentifierTemplate(); + RaceLog getRaceLog(RaceColumn raceColumn, Fleet fleet); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/RaceLogInformationImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/RaceLogInformationImpl.java index 05a22c8a76f..b2d0790c8ba 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/RaceLogInformationImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/RaceLogInformationImpl.java @@ -1,5 +1,8 @@ package com.sap.sailing.domain.racelog.impl; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogIdentifierTemplate; import com.sap.sailing.domain.racelog.RaceLogInformation; import com.sap.sailing.domain.racelog.RaceLogStore; @@ -25,4 +28,9 @@ public class RaceLogInformationImpl implements RaceLogInformation { return identifierTemplate; } + @Override + public RaceLog getRaceLog(RaceColumn raceColumn, Fleet fleet) { + return store.getRaceLog(identifierTemplate.compile(fleet)); + } + } 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 477b46193f5..fdf22b5941b 100755 --- 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 @@ -2465,8 +2465,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S boatClass.trim(), RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class), Collections.singletonList(new SeriesImpl( - MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory), - "Default", + "Default", /* isMedal */false, Collections.singletonList(new FleetImpl("Default")), /* race column names */ new ArrayList(), getService())), @@ -3029,7 +3028,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S boolean persistent, ScoringSchemeType scoringSchemeType) { Regatta regatta = getService().apply( new AddSpecificRegatta( - MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory), regattaName, boatClassName, UUID.randomUUID(), seriesNamesWithFleetNamesAndFleetOrderingAndMedal, persistent, baseDomainFactory.createScoringScheme(scoringSchemeType))); diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java index bc89772a4bb..1a7735703cc 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java @@ -25,7 +25,6 @@ import com.sap.sailing.domain.base.racegroup.impl.RaceRowImpl; import com.sap.sailing.domain.base.racegroup.impl.SeriesWithRowsImpl; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; -import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; public class RaceGroupFactory { @@ -93,7 +92,7 @@ public class RaceGroupFactory { private Series createDefaultSeries() { Series defaultSeries; - defaultSeries = new SeriesImpl(EmptyRaceLogStore.INSTANCE, "Default", false, + defaultSeries = new SeriesImpl("Default", false, Collections. singleton(new FleetImpl("Default")), Collections. emptyList(), null); return defaultSeries; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 48f26cd575d..14dda5befff 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -642,7 +642,10 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen @Override public Regatta createRegatta(String baseEventName, String boatClassName, Serializable id, Iterable series, boolean persistent, ScoringScheme scoringScheme) { - Regatta regatta = new RegattaImpl(baseEventName, + RaceLogStore raceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore( + mongoObjectFactory, + domainObjectFactory); + Regatta regatta = new RegattaImpl(raceLogStore, baseEventName, getBaseDomainFactory().getOrCreateBoatClass(boatClassName), series, persistent, scoringScheme, id); logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this); cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta); @@ -785,7 +788,6 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen regattasByName.put(regatta.getName(), regatta); regatta.addRegattaListener(this); replicate(new AddSpecificRegatta( - MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory), regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta .getBoatClass().getName(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(), regatta.getScoringScheme())); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java index 2520c321a44..3f3ac46cdfe 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java @@ -15,7 +15,6 @@ import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.domain.common.impl.Util.Triple; import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; @@ -25,16 +24,14 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { private final Map>, Boolean>> seriesNamesWithFleetNamesAndFleetOrderingAndMedal; private final boolean persistent; private final ScoringScheme scoringScheme; - private final RaceLogStore raceLogStore; - public AddSpecificRegatta(RaceLogStore raceLogStore, String regattaName, String boatClassName, Serializable id, + public AddSpecificRegatta(String regattaName, String boatClassName, Serializable id, Map>, Boolean>> seriesNamesWithFleetNamesAndFleetOrdering, boolean persistent, ScoringScheme scoringScheme) { super(regattaName, boatClassName, id); this.seriesNamesWithFleetNamesAndFleetOrderingAndMedal = seriesNamesWithFleetNamesAndFleetOrdering; this.persistent = persistent; this.scoringScheme = scoringScheme; - this.raceLogStore = raceLogStore; } @Override @@ -47,7 +44,7 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { List result = new ArrayList(); for (Map.Entry>, Boolean>> e : seriesNamesWithFleetNamesAndFleetOrderingAndMedal.entrySet()) { final List emptyRaceColumnNamesList = Collections.emptyList(); - Series s = new SeriesImpl(raceLogStore, e.getKey(), /* isMedal */e.getValue().getB(), createFleets(e.getValue().getA()), + Series s = new SeriesImpl(e.getKey(), /* isMedal */e.getValue().getB(), createFleets(e.getValue().getA()), emptyRaceColumnNamesList, trackedRegattaRegistry); result.add(s); }