From 773670d6088b847dde0c9fe7ac71fd0ba3ce3512 Mon Sep 17 00:00:00 2001 From: Lukas Niemeier Date: Mon, 25 Nov 2013 00:01:25 +0100 Subject: [PATCH] # revamped the configuration system to support remote configuration of racing procedures --- .../sailing/domain/common/racelog/Flags.java | 15 +- .../RacingProceduresConfiguration.java | 7 +- .../impl/ESSConfigurationImpl.java | 14 ++ .../impl/GateStartConfigurationImpl.java | 14 ++ .../impl/RRS26ConfigurationImpl.java | 30 +++ .../RacingProcedureConfigurationImpl.java | 40 ++++ .../RacingProceduresConfigurationImpl.java | 53 +++-- .../domain/base/racegroup/RaceGroup.java | 11 +- .../base/racegroup/impl/RaceGroupImpl.java | 11 +- .../impl/ReadonlyRacingProcedureFactory.java | 6 +- .../RegattaRaceStatesComponent.java | 17 +- .../DeviceConfigurationJsonDeserializer.java | 43 ++-- .../ESSConfigurationJsonDeserializer.java | 36 ++++ ...ateStartConfigurationJsonDeserializer.java | 36 ++++ .../RRS26ConfigurationJsonDeserializer.java | 53 +++++ ...rocedureConfigurationJsonDeserializer.java | 47 +++++ ...oceduresConfigurationJsonDeserializer.java | 51 +++-- .../racegroup/impl/RaceGroupDeserializer.java | 55 ++++-- .../DeviceConfigurationJsonSerializer.java | 2 +- .../impl/ESSConfigurationJsonSerializer.java | 29 +++ .../GateStartConfigurationJsonSerializer.java | 29 +++ .../RRS26ConfigurationJsonSerializer.java | 40 ++++ ...gProcedureConfigurationJsonSerializer.java | 35 ++++ ...ProceduresConfigurationJsonSerializer.java | 45 +++-- .../impl/RaceGroupJsonSerializer.java | 5 + .../impl/RaceLogFlagEventSerializer.java | 4 +- .../gateway/impl/rc/RaceGroupFactory.java | 5 +- .../SailingServer (No Proxy).launch | 2 +- .../AndroidManifest.xml | 4 +- .../res/drawable/ic_menu_add.png | Bin 0 -> 1580 bytes .../res/drawable/ic_menu_delete_dark.png | Bin 0 -> 1247 bytes .../res/layout/array_remove_adapter.xml | 22 +++ .../res/layout/edit_set_preference.xml | 45 +++++ .../res/values/preferences.xml | 52 ++++- .../res/values/strings.xml | 11 ++ .../res/xml/preference_course_designer.xml | 6 +- .../res/xml/preference_general.xml | 10 +- .../res/xml/preference_racing_procedure.xml | 60 ++++-- .../racecommittee/app/AppPreferences.java | 187 ++++++++++++------ .../app/data/OfflineDataManager.java | 3 +- .../app/data/OnlineDataManager.java | 21 +- ...edDeviceConfigurationJsonDeserializer.java | 13 +- ...oceduresConfigurationJsonDeserializer.java | 13 +- .../data/parsers/ManagedRacesDataParser.java | 16 +- ...cesBasedRacingProceduresConfiguration.java | 71 +++++-- .../preference/BasePreferenceFragment.java | 30 ++- .../CourseDesignerPreferenceFragment.java | 16 +- .../preference/EditListPreference.java | 97 --------- .../preference/GeneralPreferenceFragment.java | 16 +- .../RacingProcedurePreferenceFragment.java | 55 +++++- .../app/ui/views/EditSetPreference.java | 153 ++++++++++++++ .../app/utils/ArrayRemoveAdapter.java | 65 ++++++ 52 files changed, 1316 insertions(+), 385 deletions(-) create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ESSConfigurationJsonDeserializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GateStartConfigurationJsonDeserializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RRS26ConfigurationJsonDeserializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProcedureConfigurationJsonDeserializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ESSConfigurationJsonSerializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/GateStartConfigurationJsonSerializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RRS26ConfigurationJsonSerializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProcedureConfigurationJsonSerializer.java create mode 100644 mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_add.png create mode 100644 mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_delete_dark.png create mode 100644 mobile/com.sap.sailing.racecommittee.app/res/layout/array_remove_adapter.xml create mode 100644 mobile/com.sap.sailing.racecommittee.app/res/layout/edit_set_preference.xml delete mode 100644 mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/preference/EditListPreference.java create mode 100644 mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/views/EditSetPreference.java create mode 100644 mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/ArrayRemoveAdapter.java diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/Flags.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/Flags.java index 3b2b0af452a..f4ca021f443 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/Flags.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/Flags.java @@ -1,5 +1,8 @@ package com.sap.sailing.domain.common.racelog; +import java.util.ArrayList; +import java.util.List; + public enum Flags { NONE, ALPHA, @@ -20,5 +23,15 @@ public enum Flags { AP, ESSONE, ESSTWO, - ESSTHREE + ESSTHREE; + + public static Flags[] validValues() { + List validValues = new ArrayList(); + for (Flags flag : values()) { + if (flag != NONE) { + validValues.add(flag); + } + } + return validValues.toArray(new Flags[validValues.size()]); + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/RacingProceduresConfiguration.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/RacingProceduresConfiguration.java index a39fb1b527d..d381ed2572b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/RacingProceduresConfiguration.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/RacingProceduresConfiguration.java @@ -10,7 +10,10 @@ import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; /** * Aggregate interface holding configuration options for all {@link RacingProcedure}s. */ -public interface RacingProceduresConfiguration extends RRS26Configuration, GateStartConfiguration, ESSConfiguration, - Serializable { +public interface RacingProceduresConfiguration extends Serializable { + + RRS26Configuration getRRS26Configuration(); + GateStartConfiguration getGateStartConfiguration(); + ESSConfiguration getESSConfiguration(); } 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 new file mode 100644 index 00000000000..368ca2f9131 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/ESSConfigurationImpl.java @@ -0,0 +1,14 @@ +package com.sap.sailing.domain.base.configuration.impl; + +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; + } + +} 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 new file mode 100644 index 00000000000..b2c5c5a6234 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/GateStartConfigurationImpl.java @@ -0,0 +1,14 @@ +package com.sap.sailing.domain.base.configuration.impl; + +import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; + +public class GateStartConfigurationImpl extends RacingProcedureConfigurationImpl implements GateStartConfiguration { + + private static final long serialVersionUID = 1862408542829215027L; + + protected GateStartConfiguration copy() { + GateStartConfigurationImpl copy = (GateStartConfigurationImpl) super.copy(new GateStartConfigurationImpl()); + return copy; + } + +} 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 new file mode 100644 index 00000000000..593eb3bd256 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RRS26ConfigurationImpl.java @@ -0,0 +1,30 @@ +package com.sap.sailing.domain.base.configuration.impl; + +import java.util.List; + +import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; +import com.sap.sailing.domain.common.racelog.Flags; + +public class RRS26ConfigurationImpl extends RacingProcedureConfigurationImpl 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; + } + + protected RRS26Configuration copy() { + RRS26ConfigurationImpl copy = (RRS26ConfigurationImpl) super.copy(new RRS26ConfigurationImpl()); + copy.setStartModeFlags(startModeFlags); + return copy; + } + +} 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 new file mode 100644 index 00000000000..d5ed1c0d0cd --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProcedureConfigurationImpl.java @@ -0,0 +1,40 @@ +package com.sap.sailing.domain.base.configuration.impl; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.common.racelog.Flags; + +public class RacingProcedureConfigurationImpl implements RacingProcedureConfiguration { + + private static final long serialVersionUID = 8501755084811977792L; + + private Flags classFlag; + private Boolean hasInidividualRecall;@Override + + public Flags getClassFlag() { + return classFlag; + } + + public void setClassFlag(Flags classFlag) { + this.classFlag = classFlag; + } + + @Override + public Boolean hasInidividualRecall() { + return hasInidividualRecall; + } + + public void setHasInidividualRecall(Boolean hasInidividualRecall) { + this.hasInidividualRecall = hasInidividualRecall; + } + + protected RacingProcedureConfiguration copy() { + return copy(new RacingProcedureConfigurationImpl()); + } + + protected RacingProcedureConfiguration copy(RacingProcedureConfigurationImpl target) { + target.setClassFlag(this.getClassFlag()); + target.setHasInidividualRecall(this.hasInidividualRecall()); + return target; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProceduresConfigurationImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProceduresConfigurationImpl.java index 29840923527..6a852605c16 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProceduresConfigurationImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/RacingProceduresConfigurationImpl.java @@ -1,55 +1,50 @@ package com.sap.sailing.domain.base.configuration.impl; -import java.util.List; - import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; -import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; public class RacingProceduresConfigurationImpl implements RacingProceduresConfiguration { private static final long serialVersionUID = 8501755084811977792L; - private Flags classFlag; - private Boolean hasInidividualRecall; - - private List startModeFlags; - - // GENERAL + private RRS26Configuration rrs26Configuration; + private GateStartConfiguration gateStartConfiguration; + private ESSConfiguration essConfiguration; @Override - public Flags getClassFlag() { - return classFlag; + public RRS26Configuration getRRS26Configuration() { + return rrs26Configuration; } - - public void setClassFlag(Flags classFlag) { - this.classFlag = classFlag; + + public void setRRS26Configuration(RRS26Configuration rrs26Configuration) { + this.rrs26Configuration = rrs26Configuration; } @Override - public Boolean hasInidividualRecall() { - return hasInidividualRecall; + public GateStartConfiguration getGateStartConfiguration() { + return gateStartConfiguration; } - public void setHasInidividualRecall(Boolean hasInidividualRecall) { - this.hasInidividualRecall = hasInidividualRecall; + public void setGateStartConfiguration(GateStartConfiguration gateStartConfiguration) { + this.gateStartConfiguration = gateStartConfiguration; } - - // RRS26 @Override - public List getStartModeFlags() { - return startModeFlags; - } - - public void setStartModeFlags(List flags) { - this.startModeFlags = flags; + public ESSConfiguration getESSConfiguration() { + return essConfiguration; } + public void setESSConfiguration(ESSConfiguration essConfiguration) { + this.essConfiguration = essConfiguration; + } + protected RacingProceduresConfiguration copy() { RacingProceduresConfigurationImpl copy = new RacingProceduresConfigurationImpl(); - copy.setClassFlag(classFlag); - copy.setHasInidividualRecall(hasInidividualRecall); - copy.setStartModeFlags(startModeFlags); + copy.setRRS26Configuration(rrs26Configuration); + copy.setGateStartConfiguration(gateStartConfiguration); + copy.setESSConfiguration(essConfiguration); return copy; } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceGroup.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceGroup.java index ace66567051..a959a89e04c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceGroup.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceGroup.java @@ -3,9 +3,11 @@ package com.sap.sailing.domain.base.racegroup; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; import com.sap.sailing.domain.common.CourseDesignerMode; import com.sap.sailing.domain.common.Named; import com.sap.sailing.domain.common.racelog.RacingProcedureType; +import com.sap.sailing.domain.racelog.state.racingprocedure.RacingProcedure; /** * A {@link RaceGroup} is an abstract representation of a set of races managed in fleets and series. @@ -44,12 +46,17 @@ public interface RaceGroup extends Named { public Iterable getSeries(); /** - * Gets the default {@link RacingProcedureType} of this RaceGroup's races. + * Gets the default {@link RacingProcedureType} of this {@link RaceGroup}'s races. */ public RacingProcedureType getDefaultRacingProcedureType(); /** - * Gets the default {@link CourseDesignerMode} of this RaceGroup's races. + * Gets the default {@link CourseDesignerMode} of this {@link RaceGroup}'s races. */ public CourseDesignerMode getDefaultCourseDesignerMode(); + + /** + * Gets configuration objects for {@link RacingProcedure}s of this {@link RaceGroup}'s races. + */ + public RacingProceduresConfiguration getRacingProceduresConfiguration(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceGroupImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceGroupImpl.java index 1c373891642..b317b6abeea 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceGroupImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceGroupImpl.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.base.racegroup.impl; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.CourseArea; +import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; import com.sap.sailing.domain.base.racegroup.RaceGroup; import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.domain.common.CourseDesignerMode; @@ -17,15 +18,18 @@ public class RaceGroupImpl extends NamedImpl implements RaceGroup { private final Iterable series; private final RacingProcedureType defaultRacingProcedureType; private final CourseDesignerMode defaultCourseDesignerMode; + private final RacingProceduresConfiguration proceduresConfiguration; public RaceGroupImpl(String name, BoatClass boatClass, CourseArea courseArea, Iterable series, - RacingProcedureType defaultRacingProcedureType, CourseDesignerMode defaultCourseDesignerMode) { + RacingProcedureType defaultRacingProcedureType, CourseDesignerMode defaultCourseDesignerMode, + RacingProceduresConfiguration proceduresConfiguration) { super(name); this.boatClass = boatClass; this.courseArea = courseArea; this.series = series; this.defaultRacingProcedureType = defaultRacingProcedureType; this.defaultCourseDesignerMode = defaultCourseDesignerMode; + this.proceduresConfiguration = proceduresConfiguration; } public CourseArea getDefaultCourseArea() { @@ -50,4 +54,9 @@ public class RaceGroupImpl extends NamedImpl implements RaceGroup { return defaultCourseDesignerMode; } + @Override + public RacingProceduresConfiguration getRacingProceduresConfiguration() { + return proceduresConfiguration; + } + } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java index 438097c53d6..9a9b74c28e3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/ReadonlyRacingProcedureFactory.java @@ -27,11 +27,11 @@ public class ReadonlyRacingProcedureFactory implements RacingProcedureFactory { RacingProceduresConfiguration loadedConfiguration = configuration.load(); switch (type) { case ESS: - return new ESSRacingProcedureImpl(raceLog, author, factory, loadedConfiguration); + return new ESSRacingProcedureImpl(raceLog, author, factory, loadedConfiguration.getESSConfiguration()); case GateStart: - return new GateStartRacingProcedureImpl(raceLog, author, factory, loadedConfiguration); + return new GateStartRacingProcedureImpl(raceLog, author, factory, loadedConfiguration.getGateStartConfiguration()); case RRS26: - return new RRS26RacingProcedureImpl(raceLog, author, factory, loadedConfiguration); + return new RRS26RacingProcedureImpl(raceLog, author, factory, loadedConfiguration.getRRS26Configuration()); default: throw new UnsupportedOperationException("Unknown racing procedure " + type.toString()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/regattaoverview/RegattaRaceStatesComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/regattaoverview/RegattaRaceStatesComponent.java index 69be231f3fd..8b0fff416a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/regattaoverview/RegattaRaceStatesComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/regattaoverview/RegattaRaceStatesComponent.java @@ -27,7 +27,6 @@ import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.ColumnSortEvent; import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; import com.google.gwt.user.cellview.client.TextColumn; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; @@ -417,26 +416,14 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component raceCourseColumn.setFieldUpdater(new FieldUpdater() { @Override public void update(int index, RegattaOverviewEntryDTO object, SafeHtml value) { - /*RaceCourseDTO courseDTO = object.raceInfo.lastCourseDesign; + RaceCourseDTO courseDTO = object.raceInfo.lastCourseDesign; if (courseDTO != null && courseDTO.waypoints.size() > 0) { DialogBox courseViewDialogBox = createCourseViewDialogBox(object.raceInfo); courseViewDialogBox.center(); courseViewDialogBox.setGlassEnabled(true); courseViewDialogBox.setAnimationEnabled(true); courseViewDialogBox.show(); - } */ - sailingService.fakeNewStartTime(object, new Date(), new AsyncCallback() { - - @Override - public void onSuccess(Void result) { - - } - - @Override - public void onFailure(Throwable caught) { - - } - }); + } } }); raceCourseColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/DeviceConfigurationJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/DeviceConfigurationJsonDeserializer.java index 08d787f780f..416ccf64e21 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/DeviceConfigurationJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/DeviceConfigurationJsonDeserializer.java @@ -16,32 +16,33 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.impl.DeviceConfigurationJsonSerializer; public class DeviceConfigurationJsonDeserializer implements JsonDeserializer { - + public static DeviceConfigurationJsonDeserializer create() { - return new DeviceConfigurationJsonDeserializer(new RacingProceduresConfigurationJsonDeserializer()); + return new DeviceConfigurationJsonDeserializer(RacingProceduresConfigurationJsonDeserializer.create()); } - private final JsonDeserializer proceduresDeserializer; - - public DeviceConfigurationJsonDeserializer(JsonDeserializer proceduresDeserializer) { + private final JsonDeserializer proceduresDeserializer; + + public DeviceConfigurationJsonDeserializer(JsonDeserializer proceduresDeserializer) { this.proceduresDeserializer = proceduresDeserializer; } - + @Override public DeviceConfiguration deserialize(JSONObject object) throws JsonDeserializationException { - + RacingProceduresConfiguration proceduresConfiguration = null; - + if (object.containsKey(DeviceConfigurationJsonSerializer.FIELD_PROCEDURES_CONFIGURATION)) { - JSONObject proceduresObject = - Helpers.getNestedObjectSafe(object, DeviceConfigurationJsonSerializer.FIELD_PROCEDURES_CONFIGURATION); + JSONObject proceduresObject = Helpers.getNestedObjectSafe(object, + DeviceConfigurationJsonSerializer.FIELD_PROCEDURES_CONFIGURATION); proceduresConfiguration = proceduresDeserializer.deserialize(proceduresObject); } - + DeviceConfigurationImpl configuration = createConfiguration(proceduresConfiguration); if (object.containsKey(DeviceConfigurationJsonSerializer.FIELD_COURSE_AREA_NAMES)) { - JSONArray courseAreaNames = Helpers.getNestedArraySafe(object, DeviceConfigurationJsonSerializer.FIELD_COURSE_AREA_NAMES); + JSONArray courseAreaNames = Helpers.getNestedArraySafe(object, + DeviceConfigurationJsonSerializer.FIELD_COURSE_AREA_NAMES); List allowedCourseAreaNames = new ArrayList(); for (Object name : courseAreaNames) { allowedCourseAreaNames.add(name.toString()); @@ -53,23 +54,23 @@ public class DeviceConfigurationJsonDeserializer implements JsonDeserializer names = new ArrayList(); for (Object name : namesArray) { names.add(name.toString()); @@ -79,7 +80,7 @@ public class DeviceConfigurationJsonDeserializer implements JsonDeserializer { + + public static ESSConfigurationJsonDeserializer create() { + return new ESSConfigurationJsonDeserializer(); + } + + public ESSConfigurationJsonDeserializer() { + super(); + } + + @Override + public ESSConfiguration deserialize(JSONObject object) throws JsonDeserializationException { + return (ESSConfiguration) super.deserialize(object); + } + + protected ESSConfiguration createResult(JSONObject object, Flags classFlag, Boolean inidividualRecall) + throws JsonDeserializationException { + ESSConfigurationImpl result = new ESSConfigurationImpl(); + result.setClassFlag(classFlag); + result.setHasInidividualRecall(inidividualRecall); + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GateStartConfigurationJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GateStartConfigurationJsonDeserializer.java new file mode 100644 index 00000000000..a44941d016c --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/GateStartConfigurationJsonDeserializer.java @@ -0,0 +1,36 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.base.configuration.impl.GateStartConfigurationImpl; +import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; +import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; + + +public class GateStartConfigurationJsonDeserializer extends RacingProcedureConfigurationJsonDeserializer implements JsonDeserializer { + + public static GateStartConfigurationJsonDeserializer create() { + return new GateStartConfigurationJsonDeserializer(); + } + + + public GateStartConfigurationJsonDeserializer() { + super(); + } + + @Override + public GateStartConfiguration deserialize(JSONObject object) throws JsonDeserializationException { + return (GateStartConfiguration) super.deserialize(object); + } + + protected GateStartConfiguration createResult(JSONObject object, Flags classFlag, Boolean inidividualRecall) throws JsonDeserializationException { + GateStartConfigurationImpl result = new GateStartConfigurationImpl(); + result.setClassFlag(classFlag); + result.setHasInidividualRecall(inidividualRecall); + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RRS26ConfigurationJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RRS26ConfigurationJsonDeserializer.java new file mode 100644 index 00000000000..3e95e9880b3 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RRS26ConfigurationJsonDeserializer.java @@ -0,0 +1,53 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +import com.sap.sailing.domain.base.configuration.impl.RRS26ConfigurationImpl; +import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.serialization.impl.RRS26ConfigurationJsonSerializer; + +public class RRS26ConfigurationJsonDeserializer extends RacingProcedureConfigurationJsonDeserializer implements + JsonDeserializer { + + public static RRS26ConfigurationJsonDeserializer create() { + return new RRS26ConfigurationJsonDeserializer(); + } + + public RRS26ConfigurationJsonDeserializer() { + super(); + } + + @Override + public RRS26Configuration deserialize(JSONObject object) throws JsonDeserializationException { + return (RRS26Configuration) super.deserialize(object); + } + + protected RRS26Configuration createResult(JSONObject object, Flags classFlag, Boolean inidividualRecall) + throws JsonDeserializationException { + List startModeFlags = null; + if (object.containsKey(RRS26ConfigurationJsonSerializer.FIELD_START_MODE_FLAGS)) { + startModeFlags = new ArrayList(); + JSONArray objects = Helpers.getNestedArraySafe(object, + RRS26ConfigurationJsonSerializer.FIELD_START_MODE_FLAGS); + for (Object value : objects) { + startModeFlags.add(Flags.valueOf(value.toString())); + } + + } + + RRS26ConfigurationImpl result = new RRS26ConfigurationImpl(); + result.setClassFlag(classFlag); + result.setHasInidividualRecall(inidividualRecall); + result.setStartModeFlags(startModeFlags); + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProcedureConfigurationJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProcedureConfigurationJsonDeserializer.java new file mode 100644 index 00000000000..d9d1d715ce2 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProcedureConfigurationJsonDeserializer.java @@ -0,0 +1,47 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.base.configuration.impl.RacingProcedureConfigurationImpl; +import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.RacingProcedureConfigurationJsonSerializer; + +public class RacingProcedureConfigurationJsonDeserializer implements JsonDeserializer { + + public static RacingProcedureConfigurationJsonDeserializer create() { + return new RacingProcedureConfigurationJsonDeserializer(); + } + + public RacingProcedureConfigurationJsonDeserializer() { + } + + @Override + public RacingProcedureConfiguration deserialize(JSONObject object) throws JsonDeserializationException { + + Boolean inidividualRecall = null; + if (object.containsKey(RacingProcedureConfigurationJsonSerializer.FIELD_INIDIVIDUAL_RECALL)) { + inidividualRecall = ((Boolean) object + .get(RacingProcedureConfigurationJsonSerializer.FIELD_INIDIVIDUAL_RECALL)); + } + + Flags classFlag = null; + if (object.containsKey(RacingProcedureConfigurationJsonSerializer.FIELD_CLASS_FLAG)) { + classFlag = Flags.valueOf(object.get(RacingProcedureConfigurationJsonSerializer.FIELD_CLASS_FLAG) + .toString()); + } + + return createResult(object, inidividualRecall, classFlag); + } + + protected RacingProcedureConfiguration createResult(JSONObject object, Boolean inidividualRecall, Flags classFlag) + throws JsonDeserializationException{ + RacingProcedureConfigurationImpl result = new RacingProcedureConfigurationImpl(); + result.setHasInidividualRecall(inidividualRecall); + result.setClassFlag(classFlag); + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProceduresConfigurationJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProceduresConfigurationJsonDeserializer.java index e5907ff4781..f5b7e41518c 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProceduresConfigurationJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/RacingProceduresConfigurationJsonDeserializer.java @@ -1,42 +1,55 @@ package com.sap.sailing.server.gateway.deserialization.impl; -import java.util.ArrayList; -import java.util.List; - -import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; import com.sap.sailing.domain.base.configuration.impl.RacingProceduresConfigurationImpl; -import com.sap.sailing.domain.common.racelog.Flags; +import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.impl.RacingProceduresConfigurationJsonSerializer; public class RacingProceduresConfigurationJsonDeserializer implements JsonDeserializer { + private RRS26ConfigurationJsonDeserializer rrs26Deserializer; + private GateStartConfigurationJsonDeserializer gateStartDeserializer; + private ESSConfigurationJsonDeserializer essDeserializer; + + public static RacingProceduresConfigurationJsonDeserializer create() { + return new RacingProceduresConfigurationJsonDeserializer(RRS26ConfigurationJsonDeserializer.create(), + GateStartConfigurationJsonDeserializer.create(), ESSConfigurationJsonDeserializer.create()); + } + + public RacingProceduresConfigurationJsonDeserializer(RRS26ConfigurationJsonDeserializer rrs26, + GateStartConfigurationJsonDeserializer gateStart, ESSConfigurationJsonDeserializer ess) { + this.rrs26Deserializer = rrs26; + this.gateStartDeserializer = gateStart; + this.essDeserializer = ess; + } + @Override public RacingProceduresConfiguration deserialize(JSONObject object) throws JsonDeserializationException { RacingProceduresConfigurationImpl configuration = createConfiguration(); - if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_HAS_XRAY)) { - Boolean hasIndividualRecall = (Boolean) object.get(RacingProceduresConfigurationJsonSerializer.FIELD_HAS_XRAY); - configuration.setHasInidividualRecall(hasIndividualRecall); + if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_RRS26)) { + RRS26Configuration rrs26Configuration = rrs26Deserializer.deserialize( + Helpers.getNestedObjectSafe(object, RacingProceduresConfigurationJsonSerializer.FIELD_RRS26)); + configuration.setRRS26Configuration(rrs26Configuration); } - if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_CLASS_FLAG)) { - Flags classFlag = Flags.valueOf(object.get(RacingProceduresConfigurationJsonSerializer.FIELD_CLASS_FLAG).toString()); - configuration.setClassFlag(classFlag); + if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_GATE_START)) { + GateStartConfiguration gateStartConfiguration = + gateStartDeserializer.deserialize( + Helpers.getNestedObjectSafe(object, RacingProceduresConfigurationJsonSerializer.FIELD_GATE_START)); + configuration.setGateStartConfiguration(gateStartConfiguration); } - if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_START_MODE_FLAGS)) { - List result = new ArrayList(); - JSONArray startModeFlags = Helpers.getNestedArraySafe(object, - RacingProceduresConfigurationJsonSerializer.FIELD_START_MODE_FLAGS); - for (Object startModeFlag : startModeFlags) { - result.add(Flags.valueOf(startModeFlag.toString())); - } - configuration.setStartModeFlags(result); + if (object.containsKey(RacingProceduresConfigurationJsonSerializer.FIELD_ESS)) { + ESSConfiguration essConfiguration = essDeserializer.deserialize( + Helpers.getNestedObjectSafe(object, RacingProceduresConfigurationJsonSerializer.FIELD_ESS)); + configuration.setESSConfiguration(essConfiguration); } return configuration; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java index 03ce9c8f8c6..cda1795ad62 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java @@ -7,6 +7,8 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.CourseArea; +import com.sap.sailing.domain.base.SharedDomainFactory; +import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; import com.sap.sailing.domain.base.racegroup.RaceGroup; import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.domain.base.racegroup.impl.RaceGroupImpl; @@ -14,19 +16,35 @@ import com.sap.sailing.domain.common.CourseDesignerMode; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.ColorDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.FleetDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogDeserializer; +import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEventDeserializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceGroupJsonSerializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.SeriesWithRowsOfRaceGroupSerializer; public class RaceGroupDeserializer implements JsonDeserializer { - private JsonDeserializer boatClassDeserializer; - private JsonDeserializer seriesDeserializer; + private final JsonDeserializer boatClassDeserializer; + private final JsonDeserializer seriesDeserializer; + private final JsonDeserializer proceduresDeserializer; + + public static RaceGroupDeserializer create(SharedDomainFactory domainFactory, + JsonDeserializer proceduresDeserializer) { + return new RaceGroupDeserializer(new BoatClassJsonDeserializer(domainFactory), new SeriesWithRowsDeserializer( + new RaceRowDeserializer(new FleetDeserializer(new ColorDeserializer()), new RaceCellDeserializer( + new RaceLogDeserializer(RaceLogEventDeserializer.create(domainFactory))))), + proceduresDeserializer); + } public RaceGroupDeserializer(JsonDeserializer boatClassDeserializer, - JsonDeserializer seriesDeserializer) { + JsonDeserializer seriesDeserializer, + JsonDeserializer proceduresDeserializer) { this.boatClassDeserializer = boatClassDeserializer; this.seriesDeserializer = seriesDeserializer; + this.proceduresDeserializer = proceduresDeserializer; } public RaceGroup deserialize(JSONObject object) throws JsonDeserializationException { @@ -35,32 +53,39 @@ public class RaceGroupDeserializer implements JsonDeserializer { CourseArea courseArea = null; RacingProcedureType procedure = RacingProcedureType.UNKNOWN; CourseDesignerMode designer = CourseDesignerMode.UNKNOWN; + RacingProceduresConfiguration proceduresConfiguration = null; if (object.containsKey(RaceGroupJsonSerializer.FIELD_COURSE_AREA)) { // TODO: deserialize CourseArea ... // WHY should I? } - + if (object.containsKey(RaceGroupJsonSerializer.FIELD_BOAT_CLASS)) { boatClass = boatClassDeserializer.deserialize(Helpers.getNestedObjectSafe(object, RaceGroupJsonSerializer.FIELD_BOAT_CLASS)); } - - if (object.containsKey(RaceGroupJsonSerializer.FIELD_DEFAULT_RACING_PROCEDURE)) { - procedure = RacingProcedureType.valueOf( - object.get(RaceGroupJsonSerializer.FIELD_DEFAULT_RACING_PROCEDURE).toString()); - } - - if (object.containsKey(RaceGroupJsonSerializer.FIELD_DEFAULT_COURSE_DESIGNER)) { - designer = CourseDesignerMode.valueOf( - object.get(RaceGroupJsonSerializer.FIELD_DEFAULT_COURSE_DESIGNER).toString()); - } Collection series = new ArrayList(); for (Object seriesObject : Helpers.getNestedArraySafe(object, SeriesWithRowsOfRaceGroupSerializer.FIELD_SERIES)) { JSONObject seriesJson = Helpers.toJSONObjectSafe(seriesObject); series.add(seriesDeserializer.deserialize(seriesJson)); } - return new RaceGroupImpl(name, boatClass, courseArea, series, procedure, designer); + + if (object.containsKey(RaceGroupJsonSerializer.FIELD_DEFAULT_RACING_PROCEDURE)) { + procedure = RacingProcedureType.valueOf(object.get(RaceGroupJsonSerializer.FIELD_DEFAULT_RACING_PROCEDURE) + .toString()); + } + + if (object.containsKey(RaceGroupJsonSerializer.FIELD_DEFAULT_COURSE_DESIGNER)) { + designer = CourseDesignerMode.valueOf(object.get(RaceGroupJsonSerializer.FIELD_DEFAULT_COURSE_DESIGNER) + .toString()); + } + + if (object.containsKey(RaceGroupJsonSerializer.FIELD_RACING_PROCEDURES_CONFIGURATION)) { + JSONObject value = Helpers.getNestedObjectSafe(object, RaceGroupJsonSerializer.FIELD_RACING_PROCEDURES_CONFIGURATION); + proceduresConfiguration = proceduresDeserializer.deserialize(value); + } + + return new RaceGroupImpl(name, boatClass, courseArea, series, procedure, designer, proceduresConfiguration); } } \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceConfigurationJsonSerializer.java index 7496c193da8..813c12d0db1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceConfigurationJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceConfigurationJsonSerializer.java @@ -17,7 +17,7 @@ public class DeviceConfigurationJsonSerializer implements JsonSerializer proceduresSerializer; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ESSConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ESSConfigurationJsonSerializer.java new file mode 100644 index 00000000000..e83facbdc13 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ESSConfigurationJsonSerializer.java @@ -0,0 +1,29 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class ESSConfigurationJsonSerializer extends RacingProcedureConfigurationJsonSerializer implements + JsonSerializer { + + public static ESSConfigurationJsonSerializer create() { + return new ESSConfigurationJsonSerializer(); + } + + public ESSConfigurationJsonSerializer() { + super(); + } + + @Override + public JSONObject serialize(RacingProcedureConfiguration baseObject) { + JSONObject result = super.serialize(baseObject); + @SuppressWarnings("unused") + ESSConfiguration object = (ESSConfiguration) baseObject; + + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/GateStartConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/GateStartConfigurationJsonSerializer.java new file mode 100644 index 00000000000..4afdb59f662 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/GateStartConfigurationJsonSerializer.java @@ -0,0 +1,29 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class GateStartConfigurationJsonSerializer extends RacingProcedureConfigurationJsonSerializer implements + JsonSerializer { + + public static GateStartConfigurationJsonSerializer create() { + return new GateStartConfigurationJsonSerializer(); + } + + public GateStartConfigurationJsonSerializer() { + super(); + } + + @Override + public JSONObject serialize(RacingProcedureConfiguration baseObject) { + JSONObject result = super.serialize(baseObject); + @SuppressWarnings("unused") + GateStartConfiguration object = (GateStartConfiguration) baseObject; + + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RRS26ConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RRS26ConfigurationJsonSerializer.java new file mode 100644 index 00000000000..c1510c21bea --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RRS26ConfigurationJsonSerializer.java @@ -0,0 +1,40 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +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; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class RRS26ConfigurationJsonSerializer extends RacingProcedureConfigurationJsonSerializer implements + JsonSerializer { + + public static RRS26ConfigurationJsonSerializer create() { + return new RRS26ConfigurationJsonSerializer(); + } + + public static final String FIELD_START_MODE_FLAGS = "startModeFlags"; + + public RRS26ConfigurationJsonSerializer() { + super(); + } + + @Override + public JSONObject serialize(RacingProcedureConfiguration baseObject) { + JSONObject result = super.serialize(baseObject); + RRS26Configuration object = (RRS26Configuration) baseObject; + + if (object.getStartModeFlags() != null) { + JSONArray startModeFlags = new JSONArray(); + for (Flags item : object.getStartModeFlags()) { + startModeFlags.add(item); + } + result.put(FIELD_START_MODE_FLAGS, startModeFlags); + } + + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProcedureConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProcedureConfigurationJsonSerializer.java new file mode 100644 index 00000000000..cb922278b66 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProcedureConfigurationJsonSerializer.java @@ -0,0 +1,35 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class RacingProcedureConfigurationJsonSerializer implements JsonSerializer { + + public static RacingProcedureConfigurationJsonSerializer create() { + return new RacingProcedureConfigurationJsonSerializer(); + } + + public static final String FIELD_INIDIVIDUAL_RECALL = "inidividualRecall"; + public static final String FIELD_CLASS_FLAG = "classFlag"; + + public RacingProcedureConfigurationJsonSerializer() { + } + + @Override + public JSONObject serialize(RacingProcedureConfiguration object) { + JSONObject result = new JSONObject(); + + if (object.hasInidividualRecall() != null) { + result.put(FIELD_INIDIVIDUAL_RECALL, object.hasInidividualRecall()); + } + + if (object.getClassFlag() != null) { + result.put(FIELD_CLASS_FLAG, object.getClassFlag().name()); + } + + return result; + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProceduresConfigurationJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProceduresConfigurationJsonSerializer.java index 967a0284c56..e567ae8457d 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProceduresConfigurationJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RacingProceduresConfigurationJsonSerializer.java @@ -1,34 +1,45 @@ package com.sap.sailing.server.gateway.serialization.impl; -import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import com.sap.sailing.domain.base.configuration.RacingProcedureConfiguration; import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; -import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.server.gateway.serialization.JsonSerializer; public class RacingProceduresConfigurationJsonSerializer implements JsonSerializer { - public static final String FIELD_CLASS_FLAG = "classFlag"; - public static final String FIELD_START_MODE_FLAGS = "startModeFlags"; - public static final String FIELD_HAS_XRAY = "hasIndividualRecall"; - + private JsonSerializer rrs26Serializer; + private JsonSerializer gateStartSerializer; + private JsonSerializer essSerializer; + + public static RacingProceduresConfigurationJsonSerializer create() { + return new RacingProceduresConfigurationJsonSerializer(RRS26ConfigurationJsonSerializer.create(), + GateStartConfigurationJsonSerializer.create(), ESSConfigurationJsonSerializer.create()); + } + + public RacingProceduresConfigurationJsonSerializer(JsonSerializer rrs26, + JsonSerializer gateStart, JsonSerializer ess) { + this.rrs26Serializer = rrs26; + this.gateStartSerializer = gateStart; + this.essSerializer = ess; + } + + public static final String FIELD_RRS26 = "rrs26"; + public static final String FIELD_GATE_START = "gateStart"; + public static final String FIELD_ESS = "ess"; + @Override public JSONObject serialize(RacingProceduresConfiguration object) { JSONObject result = new JSONObject(); - if (object.hasInidividualRecall() != null) { - result.put(FIELD_HAS_XRAY, object.hasInidividualRecall()); + if (object.getRRS26Configuration() != null) { + result.put(FIELD_RRS26, rrs26Serializer.serialize(object.getRRS26Configuration())); } - - if (object.getClassFlag() != null) { - result.put(FIELD_CLASS_FLAG, object.getClassFlag().name()); + + if (object.getGateStartConfiguration() != null) { + result.put(FIELD_GATE_START, gateStartSerializer.serialize(object.getGateStartConfiguration())); } - if (object.getStartModeFlags() != null) { - JSONArray startModeFlags = new JSONArray(); - for (Flags startModeFlag : object.getStartModeFlags()) { - startModeFlags.add(startModeFlag); - } - result.put(FIELD_START_MODE_FLAGS, startModeFlags); + if (object.getESSConfiguration() != null) { + result.put(FIELD_ESS, essSerializer.serialize(object.getESSConfiguration())); } return result; } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceGroupJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceGroupJsonSerializer.java index db4e24c3774..e65d6fcc601 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceGroupJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceGroupJsonSerializer.java @@ -15,6 +15,7 @@ public class RaceGroupJsonSerializer extends ExtendableJsonSerializer public static final String FIELD_BOAT_CLASS = "boatClass"; public static final String FIELD_DEFAULT_RACING_PROCEDURE = "defaultProcedure"; public static final String FIELD_DEFAULT_COURSE_DESIGNER = "defaultCourseDesigner"; + public static final String FIELD_RACING_PROCEDURES_CONFIGURATION = "proceduresConfiguration"; private JsonSerializer boatClassSerializer; private JsonSerializer courseAreaSerializer; @@ -49,6 +50,10 @@ public class RaceGroupJsonSerializer extends ExtendableJsonSerializer if (object.getDefaultCourseDesignerMode() != null) { result.put(FIELD_DEFAULT_COURSE_DESIGNER, object.getDefaultCourseDesignerMode().name()); } + + if (object.getRacingProceduresConfiguration() != null) { + result.put(FIELD_RACING_PROCEDURES_CONFIGURATION, object.getRacingProceduresConfiguration()); + } return result; } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogFlagEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogFlagEventSerializer.java index 10bd0c1c7a4..11249e4f085 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogFlagEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogFlagEventSerializer.java @@ -29,8 +29,8 @@ public class RaceLogFlagEventSerializer extends BaseRaceLogEventSerializer { RaceLogFlagEvent flagEvent = (RaceLogFlagEvent) object; JSONObject result = super.serialize(flagEvent); - result.put(FIELD_UPPER_FLAG, flagEvent.getUpperFlag().toString()); - result.put(FIELD_LOWER_FLAG, flagEvent.getLowerFlag().toString()); + result.put(FIELD_UPPER_FLAG, flagEvent.getUpperFlag().name()); + result.put(FIELD_LOWER_FLAG, flagEvent.getLowerFlag().name()); result.put(FIELD_DISPLAYED, flagEvent.isDisplayed()); return result; 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 07dca2a1be9..d8c4cb604c6 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 @@ -14,6 +14,7 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnInSeries; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; +import com.sap.sailing.domain.base.configuration.RacingProceduresConfiguration; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.base.racegroup.RaceCell; import com.sap.sailing.domain.base.racegroup.RaceGroup; @@ -46,18 +47,20 @@ public class RaceGroupFactory { BoatClass boatClass = null; RacingProcedureType defaultProcedureType = RacingProcedureType.UNKNOWN; CourseDesignerMode defaultCourseDesignerMode = CourseDesignerMode.UNKNOWN; + RacingProceduresConfiguration procedureConfiguration = null; if (leaderboard instanceof RegattaLeaderboard) { Regatta regatta = ((RegattaLeaderboard) leaderboard).getRegatta(); boatClass = regatta.getBoatClass(); defaultProcedureType = regatta.getDefaultRacingProcedureType(); defaultCourseDesignerMode = regatta.getDefaultCourseDesignerMode(); + //procedureConfiguration = regatta.getRacingProceduresConfiguration(); } Iterable series = getSeries(leaderboard); return new RaceGroupImpl(name, boatClass, courseArea, series, - defaultProcedureType, defaultCourseDesignerMode); + defaultProcedureType, defaultCourseDesignerMode, procedureConfiguration); } public Iterable getSeries(Leaderboard leaderboard) { diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index b9a6481cf52..315da4d04de 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -32,5 +32,5 @@ - + diff --git a/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml b/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml index 3717c7189b0..67e69f6de03 100644 --- a/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml +++ b/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="3" + android:versionName="3.0a - Lasogga" > g1{&~YgF1>Y5_Cu4cK8X1nZe8v(6hmj=b`bkDwIXg4xph9t*s42dCeP%pR*A zPLbXmYZ7$d&J#4^#|GpFX`&3STi@z|CrA9#M?f$`*kRQXp4~JW4IOnz9hR3Sf{A6v z#5r)n;--O~w9$jb!iA4R=)iOa#~m5iiBZ|PxemQ}DsOdncq+G%HsOBWC6yDuxAS18 zSOJo|eOES~lZ>Z8!jlXJwWn^TmYlZV`k2Qvy?)J3)bQLr2xcn?=$TUd=zy-n6y<%0 zt$%7e_c@=ok7AHJS!5^O_Q}&Hull#h8b$&8Ixu+F4dRD{pW0fMk?tE?0=Mp2RQY`*jPQ^Q<_u8d%9BErzZ5HO|Kyne+ z?YnWms^gZ8y+xrDNT6DX$%H@ zCgXDQ)~}f=I;GL~LufKaoUL(-zZxEBe)jtM zaORpszV67k^ls~%RZfL*y}b|FH*uMHbUIrV!gnj(IxVn1WEXQu&-Pg+RU=~^-wzzu zZTdSd(TMoRZ^o(*oa*_|*gEl2fm6*Mi9#DgK0MX}^2t#xsC==wIsaQjGDY_&efG?s z09o@!(#v_Tkcst9fR3`F{TX6T{5VBQY*^G+wx%^?j7C?zrNVven0=U*ADFCaqE@JL zzcTuJyyV*u`vPdI-!Q2)KAi2@?fj!uw08Jf-~E)~_*LX~s-WX`42MteO*_8>@ItxN z26ZFvhElGy%oZG=cgGZqXnyx2TFZ(eLbQPHLs2>xqtQ#;ARA|=8G4$c&(RIZnazvM zD$O^=A|cC}x^RBv#hmA6fvbXLRxJ#3!^-^ri}uS$X|?w-*kkR8tXH!6GvvCE_EzF_ zyc_FK$Yot4jhQti_GwD@eB|sFevmt?zJ&;vKbTt8aPm707hW74W`8Wa6vHDNX9P<$ z^-Pf3$|lOGCbXSz%pxA9XJjworDeS1V#5!o1wp=wBQ&bwA?jfv3`Z|_=$fod)$b`q z^*P?D^hd^pWfMbt)_0g5*pgAl&+_Q7SM^}%vDW-_d{*W%k4qEJCg7V_c@>{Mp@3hg z3ya)a=~|Of7DW}|A6OUIUA{WND8}Lu<3#t*Y^&T=JhlXc#llpZEWPAzP)D&8xWbgMVO16pKUf z3yJ0cpdr>JihWF`HvCJ4g!!=|0psXWxR%VQtQeOt|0u36hXq(LWpW24)R)b2X8AIC T5n|Rp*&~2LwzsSz`6T=U5hc46 literal 0 HcmV?d00001 diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_delete_dark.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_delete_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..dbad3ddc845735431adc8536d58c95caad66d5b6 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8JTQ>svSewKXxD{n z>{nOlPTZ!LdFk0RyL0!lEq7e!-pT)X$>en>Bdh0cwfk2;cQ1d;=EPTfGt$Lwc-NR1lFxqJ zmf5a*>r~>cpI`s)lyzdPIL$DvgN0LClG|UJA@#YJag+k9g@=jSbHysf$6$gQXa?G-(oQ}~R9Bb;`xx?m?#d&`rf;d*6p*qLiTKgKwz zs69;=Ws`UsvC{sJcu9xzQJ2EWJ}qtEek)yi&%4+D?y@guWGgZ=)0f@vcmK3$_v$Og zVcr+hwi%{gShnuX=Yy*zJh}9$U3m7gW5x08x^2sjUemq!;7j?xf(uK8ejn@K6nw1Y zRsNgxAyb~!or`*XyRG@Uvi}5?g{+b08qEnFml`I&h`XQvANxFTE7PnSKVXoU-6(S^POI!%|VrCR5k$sa;#tR%G3X+QuB=YIsdb_qy1@ zT|y^B6}7Zd_MAL^tXR{2ao>%eAFj^>LPNK_`W6xqY|~|aPHNNny%*kJUNo~j$64so za=vBP+$~lwo3@PWg09KR#v8{4Uq&Cc%Se2i!0c4KxYp>3%}NVV?y&0{|EvquxO3b$ zhsn)6{oTRFD1$`_2dfNQH#}^A>;90#{-aX3s+NfD;m0|TZSLP%QyTKeg`s__dx~lD zo5V-^9T@UAJDgE?xvEi0?-M8It%~ojZtObtSpHSqk-NewmZyPPS+&G9q9i4;B-JXp zC>2OC7#SEE=o%X88W@Eb8d@2cSQ(q@8kk!d7)%sjbsI%PZhlH;S|x4`54?mxg#|yz zhP2F_lGGxrq@2q&%@GmBBFu gD5>C?o0y&&l$w}QS$Hzl2B?U^)78&qol`;+0K#|@_5c6? literal 0 HcmV?d00001 diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/array_remove_adapter.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/array_remove_adapter.xml new file mode 100644 index 00000000000..f35773af007 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/array_remove_adapter.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/edit_set_preference.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/edit_set_preference.xml new file mode 100644 index 00000000000..a54c94781e0 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/edit_set_preference.xml @@ -0,0 +1,45 @@ + + + + + + + +