diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java index 5158ab9a7f5..7889f355b7e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java @@ -1,21 +1,12 @@ package com.sap.sailing.domain.base.configuration.impl; -import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; public class ESSConfigurationImpl extends RacingProcedureConfigurationImpl implements ESSConfiguration { private static final long serialVersionUID = 5406098147408723197L; - protected ESSConfiguration copy() { - ESSConfigurationImpl copy = (ESSConfigurationImpl) super.copy(new ESSConfigurationImpl()); - return copy; + protected ESSConfigurationImpl newInstance() { + return new ESSConfigurationImpl(); } - - @Override - public RacingProcedureConfiguration merge(RacingProcedureConfiguration update) { - ESSConfigurationImpl target = (ESSConfigurationImpl) super.merge(update); - return target; - } - } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java index 920afbd413e..cb739148d29 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java @@ -41,12 +41,16 @@ public class GateStartConfigurationImpl extends RacingProcedureConfigurationImpl return target; } + + @Override + protected GateStartConfigurationImpl newInstance() { + return new GateStartConfigurationImpl(); + } + protected GateStartConfiguration copy() { - GateStartConfigurationImpl copy = (GateStartConfigurationImpl) super.copy(new GateStartConfigurationImpl()); + GateStartConfigurationImpl copy = (GateStartConfigurationImpl) super.copy(); copy.setHasPathfinder(hasPathfinder); copy.setHasAdditionalGolfDownTime(hasAdditionalGolfDownTime); return copy; } - - } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/LeagueConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/LeagueConfigurationImpl.java index 1b18ffa2b8f..9fd86a264c2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/LeagueConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/LeagueConfigurationImpl.java @@ -1,20 +1,11 @@ package com.sap.sailing.domain.base.configuration.impl; -import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; import com.sap.sailing.domain.base.configuration.procedures.LeagueConfiguration; public class LeagueConfigurationImpl extends RacingProcedureConfigurationImpl implements LeagueConfiguration { private static final long serialVersionUID = 3625803505541394766L; - protected LeagueConfigurationImpl copy() { - LeagueConfigurationImpl copy = (LeagueConfigurationImpl) super.copy(new LeagueConfigurationImpl()); - return copy; + protected LeagueConfigurationImpl newInstance() { + return new LeagueConfigurationImpl(); } - - @Override - public RacingProcedureConfiguration merge(RacingProcedureConfiguration update) { - LeagueConfigurationImpl target = (LeagueConfigurationImpl) super.merge(update); - return target; - } - } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java index f620c8d0531..8f34da13acd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java @@ -1,27 +1,13 @@ package com.sap.sailing.domain.base.configuration.impl; -import java.util.List; - import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; -import com.sap.sailing.domain.common.racelog.Flags; -public class RRS26ConfigurationImpl extends RacingProcedureConfigurationImpl implements - RRS26Configuration { +public class RRS26ConfigurationImpl extends RacingProcedureWithConfigurableStartModeFlagConfigurationImpl + implements RRS26Configuration { private static final long serialVersionUID = 260941807346644026L; - private List startModeFlags; - - @Override - public List getStartModeFlags() { - return startModeFlags; - } - - public void setStartModeFlags(List flags) { - this.startModeFlags = flags; - } - @Override public RacingProcedureConfiguration merge(RacingProcedureConfiguration value) { RRS26Configuration update = (RRS26Configuration) value; @@ -32,10 +18,8 @@ public class RRS26ConfigurationImpl extends RacingProcedureConfigurationImpl imp return target; } - protected RRS26Configuration copy() { - RRS26ConfigurationImpl copy = (RRS26ConfigurationImpl) super.copy(new RRS26ConfigurationImpl()); - copy.setStartModeFlags(startModeFlags); - return copy; + protected RRS26ConfigurationImpl newInstance() { + return new RRS26ConfigurationImpl(); } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java index 555d501bea6..023fc09d865 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java @@ -49,8 +49,12 @@ public class RacingProcedureConfigurationImpl implements RacingProcedureConfigur this.isResultEntryEnabled = isResultEntryEnabled; } + protected RacingProcedureConfigurationImpl newInstance() { + return new RacingProcedureConfigurationImpl(); + } + protected RacingProcedureConfiguration copy() { - return copy(new RacingProcedureConfigurationImpl()); + return copy(newInstance()); } protected RacingProcedureConfiguration copy(RacingProcedureConfigurationImpl target) { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureWithConfigurableStartModeFlagConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureWithConfigurableStartModeFlagConfigurationImpl.java new file mode 100644 index 00000000000..3ac674b4215 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureWithConfigurableStartModeFlagConfigurationImpl.java @@ -0,0 +1,40 @@ +package com.sap.sailing.domain.base.configuration.impl; + +import java.util.List; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.LineStartConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.SWCConfiguration; +import com.sap.sailing.domain.common.racelog.Flags; + +public abstract class RacingProcedureWithConfigurableStartModeFlagConfigurationImpl extends RacingProcedureConfigurationImpl implements LineStartConfiguration { + + private static final long serialVersionUID = 5141617199229598965L; + + private List startModeFlags; + + @Override + public List getStartModeFlags() { + return startModeFlags; + } + + public void setStartModeFlags(List flags) { + this.startModeFlags = flags; + } + + @Override + public RacingProcedureConfiguration merge(RacingProcedureConfiguration value) { + SWCConfiguration update = (SWCConfiguration) value; + RacingProcedureWithConfigurableStartModeFlagConfigurationImpl target = (RacingProcedureWithConfigurableStartModeFlagConfigurationImpl) super.merge(update); + if (update.getStartModeFlags() != null) { + target.setStartModeFlags(update.getStartModeFlags()); + } + return target; + } + + protected LineStartConfiguration copy() { + RacingProcedureWithConfigurableStartModeFlagConfigurationImpl copy = (RacingProcedureWithConfigurableStartModeFlagConfigurationImpl) super.copy(); + copy.setStartModeFlags(startModeFlags); + return copy; + } +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/SWCConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/SWCConfigurationImpl.java index ec8c83baf52..7e304fa5f35 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/SWCConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/SWCConfigurationImpl.java @@ -1,27 +1,13 @@ package com.sap.sailing.domain.base.configuration.impl; -import java.util.List; - import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; import com.sap.sailing.domain.base.configuration.procedures.SWCConfiguration; -import com.sap.sailing.domain.common.racelog.Flags; -public class SWCConfigurationImpl extends RacingProcedureConfigurationImpl implements - SWCConfiguration { +public class SWCConfigurationImpl extends RacingProcedureWithConfigurableStartModeFlagConfigurationImpl + implements SWCConfiguration { private static final long serialVersionUID = 5141617199229598965L; - private List startModeFlags; - - @Override - public List getStartModeFlags() { - return startModeFlags; - } - - public void setStartModeFlags(List flags) { - this.startModeFlags = flags; - } - @Override public RacingProcedureConfiguration merge(RacingProcedureConfiguration value) { SWCConfiguration update = (SWCConfiguration) value; @@ -31,11 +17,4 @@ public class SWCConfigurationImpl extends RacingProcedureConfigurationImpl imple } return target; } - - protected SWCConfiguration copy() { - SWCConfigurationImpl copy = (SWCConfigurationImpl) super.copy(new SWCConfigurationImpl()); - copy.setStartModeFlags(startModeFlags); - return copy; - } - } 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 05d2df4ef21..8f3489be167 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 @@ -127,6 +127,7 @@ import com.sap.sailing.domain.base.configuration.impl.GateStartConfigurationImpl import com.sap.sailing.domain.base.configuration.impl.LeagueConfigurationImpl; import com.sap.sailing.domain.base.configuration.impl.RRS26ConfigurationImpl; import com.sap.sailing.domain.base.configuration.impl.RacingProcedureConfigurationImpl; +import com.sap.sailing.domain.base.configuration.impl.RacingProcedureWithConfigurableStartModeFlagConfigurationImpl; import com.sap.sailing.domain.base.configuration.impl.RegattaConfigurationImpl; import com.sap.sailing.domain.base.configuration.impl.SWCConfigurationImpl; import com.sap.sailing.domain.base.configuration.procedures.LineStartConfiguration; @@ -4913,13 +4914,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S if (dto.rrs26Configuration != null) { RRS26ConfigurationImpl config = new RRS26ConfigurationImpl(); applyGeneralRacingProcedureConfigProperties(dto.rrs26Configuration, config); - config.setStartModeFlags(dto.rrs26Configuration.startModeFlags); + applyRacingProcedureWithConfigurableStartModeFlagConfigProperties(dto.rrs26Configuration, config); configuration.setRRS26Configuration(config); } if (dto.swcStartConfiguration != null) { SWCConfigurationImpl config = new SWCConfigurationImpl(); applyGeneralRacingProcedureConfigProperties(dto.swcStartConfiguration, config); - config.setStartModeFlags(dto.swcStartConfiguration.startModeFlags); + applyRacingProcedureWithConfigurableStartModeFlagConfigProperties(dto.swcStartConfiguration, config); configuration.setSWCConfiguration(config); } if (dto.gateStartConfiguration != null) { @@ -4954,6 +4955,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S config.setResultEntryEnabled(racingProcedureConfigurationDTO.isResultEntryEnabled); } + private void applyRacingProcedureWithConfigurableStartModeFlagConfigProperties( + RacingProcedureWithConfigurableStartModeFlagConfigurationDTO racingProcedureConfigurationDTO, + RacingProcedureWithConfigurableStartModeFlagConfigurationImpl config) { + config.setStartModeFlags(racingProcedureConfigurationDTO.startModeFlags); + } + @Override public boolean setStartTimeAndProcedure(RaceLogSetStartTimeAndProcedureDTO dto) { TimePoint newStartTime = getService().setStartTimeAndProcedure(dto.leaderboardName, dto.raceColumnName,