diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/RacingProcedureType.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/RacingProcedureType.java index 564bf38584b..f512eefb023 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/RacingProcedureType.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/RacingProcedureType.java @@ -16,7 +16,8 @@ public enum RacingProcedureType { ESS("\"Extreme Sailing Series\"-Start"), BASIC("Basic Countdown Start"), LEAGUE("League Start"), - RRS26_3MIN("Fix Line Start with 3min Sequence (RRS26/3)"); + RRS26_3MIN("Fix Line Start with 3min Sequence (RRS26/3)"), + SWC_4MIN("Sailing World Cup Start with 4min Sequence (Kites, Surfers)"); private String displayName; diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RacingProceduresWithStartModeFlagTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RacingProceduresWithStartModeFlagTest.java new file mode 100644 index 00000000000..7532f6efe73 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RacingProceduresWithStartModeFlagTest.java @@ -0,0 +1,39 @@ +package com.sap.sailing.domain.racelog.test; + +import static org.junit.Assert.assertEquals; + +import java.util.UUID; + +import org.junit.Before; +import org.junit.Test; + +import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureFactoryImpl; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.ConfigurableStartModeFlagRacingProcedure; +import com.sap.sailing.domain.base.configuration.impl.EmptyRegattaConfiguration; +import com.sap.sailing.domain.common.racelog.RacingProcedureType; + +public class RacingProceduresWithStartModeFlagTest { + private RacingProcedureFactoryImpl racingProcedureFactory; + private RaceLogImpl raceLog; + + @Before + public void setUp() { + this.racingProcedureFactory = new RacingProcedureFactoryImpl(/* author */ null, new EmptyRegattaConfiguration()); + this.raceLog = new RaceLogImpl(UUID.randomUUID()); + } + + @Test + public void testRacingProcedureWithStartModeFlagDetection() { + for (final RacingProcedureType type : RacingProcedureType.values()) { + if (type != RacingProcedureType.UNKNOWN) { + final ReadonlyRacingProcedure racingProcedure = racingProcedureFactory.createRacingProcedure(type, raceLog, /* raceLogResolver */ null); + assertEquals("Racing procedure type "+type.name()+" was "+((racingProcedure instanceof ConfigurableStartModeFlagRacingProcedure) ? "" : "not ")+ + "considered one with configurable start mode flag but should have", + RacingProcedureType.RRS26.equals(type) || RacingProcedureType.RRS26_3MIN.equals(type) || RacingProcedureType.SWC.equals(type) || RacingProcedureType.SWC_4MIN.equals(type), + racingProcedure instanceof ConfigurableStartModeFlagRacingProcedure); + } + } + } +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartModeFlagFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartModeFlagFinder.java index 4931ff63b56..f8e624fdba8 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartModeFlagFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/StartModeFlagFinder.java @@ -1,10 +1,15 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import java.util.List; +import java.util.UUID; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; +import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureFactoryImpl; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.ConfigurableStartModeFlagRacingProcedure; +import com.sap.sailing.domain.base.configuration.impl.EmptyRegattaConfiguration; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -32,7 +37,9 @@ public class StartModeFlagFinder extends RaceLogAnalyzer { @Override protected Flags performAnalysis() { RacingProcedureType type = procedureAnalyzer.analyze(); - if (!(RacingProcedureType.RRS26.equals(type) || RacingProcedureType.RRS26_3MIN.equals(type) || RacingProcedureType.SWC.equals(type))) { + if (type == RacingProcedureType.UNKNOWN || + !(new RacingProcedureFactoryImpl(/* author */ null, new EmptyRegattaConfiguration()).createRacingProcedure(type, new RaceLogImpl(UUID.randomUUID()), /* raceLogResolver */ null) + instanceof ConfigurableStartModeFlagRacingProcedure)) { return null; } for (RaceLogEvent event : getPassEventsDescending()) { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java index 71781c9ff0f..92b9d109a67 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java @@ -15,6 +15,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.league.impl import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.impl.RRS26RacingProcedureImpl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.impl.RRS26ThreeMinutesRacingProcedureImpl; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.impl.SWCRacingProcedureImpl; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.impl.ShortSWCRacingProcedureImpl; import com.sap.sailing.domain.base.configuration.ConfigurationLoader; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.common.racelog.RacingProcedureType; @@ -53,6 +54,8 @@ public class ReadonlyRacingProcedureFactory implements RacingProcedureFactory { return new RRS26ThreeMinutesRacingProcedureImpl(raceLog, author, loadedConfiguration.getRRS26Configuration(), raceLogResolver); case SWC: return new SWCRacingProcedureImpl(raceLog, author, loadedConfiguration.getSWCStartConfiguration(), raceLogResolver); + case SWC_4MIN: + return new ShortSWCRacingProcedureImpl(raceLog, author, loadedConfiguration.getSWCStartConfiguration(), raceLogResolver); case BASIC: return new BasicRacingProcedureImpl(raceLog, author, loadedConfiguration.getBasicConfiguration(), raceLogResolver); case LEAGUE: diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/SWCRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/SWCRacingProcedureImpl.java index b0446005735..425d00d47dd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/SWCRacingProcedureImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/SWCRacingProcedureImpl.java @@ -23,12 +23,12 @@ import java.util.List; public class SWCRacingProcedureImpl extends ConfigurableStartModeFlagRacingProcedureImpl implements SWCRacingProcedure { private final static Duration CLASS_AND_STARTMODE_UP_INTERVAL = Duration.ONE_MINUTE.times(6); // 6 minutes before start - private final static Duration CLASS_AND_STARTMODE_DOWN_INTERVAL = Duration.ONE_MINUTE; // 1 minute after start - private final static Duration FIVE_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(5); // 5 minutes before start - private final static Duration FOUR_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(4); // 4 minutes before start - private final static Duration THREE_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(3); // 3 minutes before start - private final static Duration TWO_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(2); // 2 minutes before start - private final static Duration ONE_MINUTE_FLAG_UP_INTERVAL = Duration.ONE_MINUTE; // 1 minutes before start + protected final static Duration CLASS_AND_STARTMODE_DOWN_INTERVAL = Duration.ONE_MINUTE; // 1 minute after start + protected final static Duration FIVE_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(5); // 5 minutes before start + protected final static Duration FOUR_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(4); // 4 minutes before start + protected final static Duration THREE_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(3); // 3 minutes before start + protected final static Duration TWO_MINUTES_FLAG_UP_INTERVAL = Duration.ONE_MINUTE.times(2); // 2 minutes before start + protected final static Duration ONE_MINUTE_FLAG_UP_INTERVAL = Duration.ONE_MINUTE; // 1 minutes before start public SWCRacingProcedureImpl(RaceLog raceLog, AbstractLogEventAuthor author, SWCStartConfiguration configuration, RaceLogResolver raceLogResolver) { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/ShortSWCRacingProcedureImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/ShortSWCRacingProcedureImpl.java new file mode 100644 index 00000000000..508f0b1f6fd --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/racingprocedure/line/impl/ShortSWCRacingProcedureImpl.java @@ -0,0 +1,70 @@ +package com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.impl; + +import java.util.Arrays; +import java.util.Collections; + +import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; +import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver; +import com.sap.sailing.domain.abstractlog.race.state.RaceStateEvent; +import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEventImpl; +import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEvents; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.FlagPoleState; +import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.SWCRacingProcedure; +import com.sap.sailing.domain.base.configuration.procedures.SWCStartConfiguration; +import com.sap.sailing.domain.common.racelog.FlagPole; +import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.domain.common.racelog.RacingProcedureType; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; + +public class ShortSWCRacingProcedureImpl extends SWCRacingProcedureImpl implements SWCRacingProcedure { + + private final static Duration CLASS_AND_STARTMODE_UP_INTERVAL_4MIN = Duration.ONE_MINUTE.times(4); // 6 minutes before start + + public ShortSWCRacingProcedureImpl(RaceLog raceLog, AbstractLogEventAuthor author, + SWCStartConfiguration configuration, RaceLogResolver raceLogResolver) { + super(raceLog, author, configuration, raceLogResolver); + } + + @Override + protected Duration getStartPhaseStartModeUpInterval() { + return CLASS_AND_STARTMODE_UP_INTERVAL_4MIN; + } + + @Override + public RacingProcedureType getType() { + return RacingProcedureType.SWC_4MIN; + } + + @Override + public Iterable createStartStateEvents(TimePoint startTime) { + return Arrays.asList( + new RaceStateEventImpl(startTime.minus(CLASS_AND_STARTMODE_UP_INTERVAL_4MIN), RaceStateEvents.SWC_CLASS_AND_STARTMODE_UP), + new RaceStateEventImpl(startTime.minus(THREE_MINUTES_FLAG_UP_INTERVAL), RaceStateEvents.SWC_THREE_UP), + new RaceStateEventImpl(startTime.minus(TWO_MINUTES_FLAG_UP_INTERVAL), RaceStateEvents.SWC_TWO_UP), + new RaceStateEventImpl(startTime.minus(ONE_MINUTE_FLAG_UP_INTERVAL), RaceStateEvents.SWC_ONE_UP), + new RaceStateEventImpl(startTime, RaceStateEvents.START), + new RaceStateEventImpl(startTime, RaceStateEvents.SWC_GREEN_UP), + new RaceStateEventImpl(startTime.plus(CLASS_AND_STARTMODE_DOWN_INTERVAL), RaceStateEvents.SWC_CLASS_AND_STARTMODE_DOWN)); + } + + @Override + public FlagPoleState getActiveFlags(TimePoint startTime, TimePoint now) { + if (now.before(startTime.minus(CLASS_AND_STARTMODE_UP_INTERVAL_4MIN))) { + return new FlagPoleState( + Collections.singletonList(new FlagPole(cachedStartmodeFlag, false)), + null, + Collections.singletonList(new FlagPole(cachedStartmodeFlag, true)), + startTime.minus(CLASS_AND_STARTMODE_UP_INTERVAL_4MIN)); + } else if (now.before(startTime.minus(THREE_MINUTES_FLAG_UP_INTERVAL))) { + return new FlagPoleState( + Arrays.asList(new FlagPole(cachedStartmodeFlag, true), new FlagPole(Flags.SWC_THREE, false)), + startTime.minus(CLASS_AND_STARTMODE_UP_INTERVAL_4MIN), + Arrays.asList(new FlagPole(cachedStartmodeFlag, true), new FlagPole(Flags.SWC_THREE, true)), + startTime.minus(THREE_MINUTES_FLAG_UP_INTERVAL)); + } else { + return super.getActiveFlags(startTime, now); + } + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/RaceCommitteeAppNotes.html b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/RaceCommitteeAppNotes.html index 4d6b1ca0d30..b3d3ccc438d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/RaceCommitteeAppNotes.html +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/RaceCommitteeAppNotes.html @@ -4,6 +4,11 @@

What's New - SAP Sailing Race Manager

+
August 2023
+
    +
  • Added a new racing procedure SWC_4MIN for kites and windsurfers with a shortened four-minute + start sequence with green flag for one minute after start.
  • +
July 2023
  • Added "SCA" as an invalid result marker (IRM) / redress code.
  • diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RaceDetailPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RaceDetailPanel.java index e9eb684e3aa..0b8add74bb5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RaceDetailPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RaceDetailPanel.java @@ -210,7 +210,8 @@ public class RaceDetailPanel extends SimplePanel { switch (data.raceInfo.startProcedure) { case RRS26: case RRS26_3MIN: - case SWC: + case SWC: + case SWC_4MIN: LineStartInfoDTO rrsInfo = (LineStartInfoDTO) data.raceInfo.startProcedureDTO; if (rrsInfo != null) { if (rrsInfo.startModeFlag != null) { 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 4e9e001eee3..0691b6aebd3 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 @@ -1123,6 +1123,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet case RRS26: case RRS26_3MIN: case SWC: + case SWC_4MIN: ConfigurableStartModeFlagRacingProcedure linestart = state.getTypedReadonlyRacingProcedure(); info = new LineStartInfoDTO(linestart.getStartModeFlag()); case UNKNOWN: diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index ccbf0650470..92afc783d89 100755 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -23,6 +23,11 @@

    Release Notes - Administration Console

    +

    August 2023

    +
      +
    • Added a new racing procedure SWC_4MIN for kites and windsurfers with a shortened four-minute + start sequence with green flag for one minute after start.
    • +

    July 2023

    • Score updates received through the race log, e.g., from the SAP Sailing Race Manager app or from the diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java b/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java index dafe56f9130..4d6d1ed0dc0 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java @@ -85,6 +85,7 @@ public class SecuredServerImpl implements SecuredServer { final int statusCode = response.getStatusLine().getStatusCode(); Object jsonParseResult; if (statusCode == Response.Status.NO_CONTENT.getStatusCode() + || Response.Status.fromStatusCode(statusCode) == null || Response.Status.fromStatusCode(statusCode).getFamily() != Family.SUCCESSFUL) { jsonParseResult = null; } else { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/AppPreferences.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/AppPreferences.java index 7a59ba533ae..76f88cf545d 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/AppPreferences.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/AppPreferences.java @@ -234,6 +234,7 @@ public class AppPreferences { case RRS26_3MIN: return key(R.string.preference_racing_procedure_rrs26_classflag_key); case SWC: + case SWC_4MIN: return key(R.string.preference_racing_procedure_swc_classflag_key); case GateStart: return key(R.string.preference_racing_procedure_gatestart_classflag_key); @@ -259,6 +260,7 @@ public class AppPreferences { case RRS26_3MIN: return key(R.string.preference_racing_procedure_rrs26_hasxray_key); case SWC: + case SWC_4MIN: return key(R.string.preference_racing_procedure_swc_hasxray_key); case GateStart: return key(R.string.preference_racing_procedure_gatestart_hasxray_key); @@ -284,6 +286,7 @@ public class AppPreferences { case RRS26_3MIN: return key(R.string.preference_racing_procedure_rrs26_resultentryenabled_key); case SWC: + case SWC_4MIN: return key(R.string.preference_racing_procedure_swc_resultentryenabled_key); case GateStart: return key(R.string.preference_racing_procedure_gatestart_resultentryenabled_key); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/configuration/impl/PreferencesRegattaConfigurationLoader.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/configuration/impl/PreferencesRegattaConfigurationLoader.java index 6761a04c23a..abe95fc6f68 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/configuration/impl/PreferencesRegattaConfigurationLoader.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/configuration/impl/PreferencesRegattaConfigurationLoader.java @@ -47,26 +47,26 @@ public class PreferencesRegattaConfigurationLoader implements ConfigurationLoade @Override public RegattaConfiguration load() { - + // Default configuration.setDefaultRacingProcedureType(preferences.getDefaultRacingProcedureType()); configuration.setDefaultCourseDesignerMode(preferences.getDefaultCourseDesignerMode()); configuration.setDefaultProtestTimeDuration( Duration.ONE_MINUTE.times(preferences.getProtestTimeDurationInMinutes())); - + // RRS26 RRS26ConfigurationImpl rrs26 = new RRS26ConfigurationImpl(); rrs26.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.RRS26)); rrs26.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.RRS26)); rrs26.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.RRS26)); rrs26.setStartModeFlags(new ArrayList<>(preferences.getRRS26StartmodeFlags())); configuration.setRRS26Configuration(rrs26); - + // SWC SWCStartConfigurationImpl swcStart = new SWCStartConfigurationImpl(); swcStart.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.SWC)); swcStart.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.SWC)); swcStart.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.SWC)); swcStart.setStartModeFlags(new ArrayList<>(preferences.getSWCStartmodeFlags())); configuration.setSWCStartConfiguration(swcStart); - + // Gate Start GateStartConfigurationImpl gateStart = new GateStartConfigurationImpl(); gateStart.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.GateStart)); gateStart.setHasIndividualRecall( @@ -76,25 +76,25 @@ public class PreferencesRegattaConfigurationLoader implements ConfigurationLoade gateStart.setHasPathfinder(preferences.getGateStartHasPathfinder()); gateStart.setHasAdditionalGolfDownTime(preferences.getGateStartHasAdditionalGolfDownTime()); configuration.setGateStartConfiguration(gateStart); - + // Extreme Sailing Series ESSConfigurationImpl ess = new ESSConfigurationImpl(); ess.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.ESS)); ess.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.ESS)); ess.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.ESS)); configuration.setESSConfiguration(ess); - + // Basic RacingProcedureConfigurationImpl basic = new RacingProcedureConfigurationImpl(); basic.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.BASIC)); basic.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.BASIC)); basic.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.BASIC)); configuration.setBasicConfiguration(basic); - + // League Start LeagueConfigurationImpl league = new LeagueConfigurationImpl(); league.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.LEAGUE)); league.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.LEAGUE)); league.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.LEAGUE)); configuration.setLeagueConfiguration(league); - + // clone the result return configuration.clone(); }