diff --git a/java/com.sap.sailing.domain.shared.android/.classpath b/java/com.sap.sailing.domain.shared.android/.classpath new file mode 100644 index 00000000000..ad32c83a788 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/com.sap.sailing.domain.shared.android/.project b/java/com.sap.sailing.domain.shared.android/.project new file mode 100644 index 00000000000..eba6e1dade9 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/.project @@ -0,0 +1,28 @@ + + + com.sap.sailing.domain.shared.android + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/java/com.sap.sailing.domain.shared.android/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.domain.shared.android/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..c537b63063c --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..9a61a49132a --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/META-INF/MANIFEST.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: com.sap.sailing.domain.shared.android +Bundle-SymbolicName: com.sap.sailing.domain.shared.android +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: SAP +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0" diff --git a/java/com.sap.sailing.domain.shared.android/build.properties b/java/com.sap.sailing.domain.shared.android/build.properties new file mode 100644 index 00000000000..34d2e4d2dad --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaceNames.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaceNames.java deleted file mode 100644 index a37678d2646..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaceNames.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sap.sailing.domain.base; - - -public interface FleetWithRaceNames extends Fleet { - - public Iterable getRaceNames(); - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaces.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaces.java deleted file mode 100644 index ba1a5e7b608..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/FleetWithRaces.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sap.sailing.domain.base; - - -public interface FleetWithRaces extends Fleet { - - public Iterable getRaceDefinitions(); - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceCell.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceCell.java new file mode 100644 index 00000000000..3c7f1a9de3c --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceCell.java @@ -0,0 +1,10 @@ +package com.sap.sailing.domain.base; + +import com.sap.sailing.domain.common.Named; +import com.sap.sailing.domain.racelog.RaceLog; + +public interface RaceCell extends Named { + + RaceLog getRaceLog(); + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceGroup.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceGroup.java deleted file mode 100644 index ca6d0024c30..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceGroup.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.sap.sailing.domain.base; - -import com.sap.sailing.domain.common.Named; - -public interface RaceGroup extends Named { - - public CourseArea getDefaultCourseArea(); - - public Iterable getSeries(); - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceRow.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceRow.java new file mode 100644 index 00000000000..b951e867199 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceRow.java @@ -0,0 +1,9 @@ +package com.sap.sailing.domain.base; + +public interface RaceRow { + + Fleet getFleet(); + + Iterable getCells(); + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java index 1f94b9e8c1e..37706ef88c4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java @@ -1,6 +1,5 @@ package com.sap.sailing.domain.base; -import com.sap.sailing.domain.common.Named; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; @@ -19,27 +18,9 @@ import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; * @author Axel Uhl (D043530) * */ -public interface Series extends Named { - /** - * Returns the fleets of this series, in ascending order, better fleets first. - */ - Iterable getFleets(); - - /** - * A series consists of one or more "race columns." Some people would just say "race," but we use the term "race" for - * something that has a single start time and start line; so if each fleet in a series gets their own start for - * something called "R2", those are as many "races" as we have fleets; therefore, we use "race column" instead to - * describe all "races" named, e.g., "R3" in a series. - */ - Iterable getRaceColumns(); +public interface Series extends SeriesData { RaceColumnInSeries getRaceColumnByName(String columnName); - - /** - * Tells whether this is the "last" / "medal" race series, usually having only one race. This may have implications - * on the scoring scheme (usually, medal races scores are doubled and cannot be discarded). - */ - boolean isMedal(); void setIsMedal(boolean isMedal); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/SeriesData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/SeriesData.java index dd13716f4c1..5d2280dac1d 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/SeriesData.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/SeriesData.java @@ -4,11 +4,19 @@ import com.sap.sailing.domain.common.Named; public interface SeriesData extends Named { - /** + /** * Returns the fleets of this series, in ascending order, better fleets first. */ Iterable getFleets(); + /** + * A series consists of one or more "race columns." Some people would just say "race," but we use the term "race" for + * something that has a single start time and start line; so if each fleet in a series gets their own start for + * something called "R2", those are as many "races" as we have fleets; therefore, we use "race column" instead to + * describe all "races" named, e.g., "R3" in a series. + */ + Iterable getRaceColumns(); + /** * Tells whether this is the "last" / "medal" race series, usually having only one race. This may have implications * on the scoring scheme (usually, medal races scores are doubled and cannot be discarded). diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRaceNamesImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRaceNamesImpl.java deleted file mode 100644 index fe67f07984e..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRaceNamesImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.sap.sailing.domain.base.impl; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.common.Color; - -public class FleetWithRaceNamesImpl implements FleetWithRaceNames { - private static final long serialVersionUID = -7686050535458112702L; - - private Fleet fleet; - private Iterable raceNames; - - public FleetWithRaceNamesImpl( - Fleet fleet, - Iterable raceNames) { - this.fleet = fleet; - this.raceNames = raceNames; - } - - @Override - public Iterable getRaceNames() { - return raceNames; - } - - @Override - public String getName() { - return fleet.getName(); - } - - @Override - public int compareTo(Fleet otherFleet) { - return fleet.compareTo(otherFleet); - } - - @Override - public int getOrdering() { - return fleet.getOrdering(); - } - - @Override - public Color getColor() { - return fleet.getColor(); - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRacesImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRacesImpl.java deleted file mode 100644 index 5b188b4af0b..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/FleetWithRacesImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.sap.sailing.domain.base.impl; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaces; -import com.sap.sailing.domain.base.RaceDefinition; -import com.sap.sailing.domain.common.Color; - -public class FleetWithRacesImpl implements FleetWithRaces { - private static final long serialVersionUID = -7686050535458112702L; - - private Fleet fleet; - private Iterable raceDefinitions; - - public FleetWithRacesImpl( - Fleet fleet, - Iterable raceDefinitions) { - this.fleet = fleet; - this.raceDefinitions = raceDefinitions; - } - - @Override - public Iterable getRaceDefinitions() { - return raceDefinitions; - } - - @Override - public String getName() { - return fleet.getName(); - } - - @Override - public int compareTo(Fleet otherFleet) { - return fleet.compareTo(otherFleet); - } - - @Override - public int getOrdering() { - return fleet.getOrdering(); - } - - @Override - public Color getColor() { - return fleet.getColor(); - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceCellImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceCellImpl.java new file mode 100644 index 00000000000..fa8da32b9e9 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceCellImpl.java @@ -0,0 +1,22 @@ +package com.sap.sailing.domain.base.impl; + +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.common.impl.NamedImpl; +import com.sap.sailing.domain.racelog.RaceLog; + +public class RaceCellImpl extends NamedImpl implements RaceCell { + private static final long serialVersionUID = 971598420407273594L; + + private RaceLog raceLog; + + public RaceCellImpl(String name, RaceLog raceLog) { + super(name); + this.raceLog = raceLog; + } + + @Override + public RaceLog getRaceLog() { + return raceLog; + } + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceGroupImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceGroupImpl.java deleted file mode 100644 index a90bd6f4e77..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceGroupImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.sap.sailing.domain.base.impl; - -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.RaceGroup; -import com.sap.sailing.domain.base.SeriesData; - -public class RaceGroupImpl implements RaceGroup { - private static final long serialVersionUID = 7760879536339600827L; - - private final String name; - private final CourseArea courseArea; - private final Iterable series; - - public RaceGroupImpl( - String name, - CourseArea courseArea, - Iterable series) { - this.name = name; - this.courseArea = courseArea; - this.series = series; - } - - @Override - public String getName() { - return name; - } - - @Override - public CourseArea getDefaultCourseArea() { - return courseArea; - } - - @Override - public Iterable getSeries() { - return series; - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceRowImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceRowImpl.java new file mode 100644 index 00000000000..a945db568bb --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceRowImpl.java @@ -0,0 +1,27 @@ +package com.sap.sailing.domain.base.impl; + +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.base.RaceRow; + +public class RaceRowImpl implements RaceRow { + + private Fleet fleet; + private Iterable races; + + public RaceRowImpl(Fleet fleet, Iterable races) { + this.fleet = fleet; + this.races = races; + } + + @Override + public Fleet getFleet() { + return fleet; + } + + @Override + public Iterable getCells() { + return races; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/ColorJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ColorJsonSerializer.java similarity index 91% rename from java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/ColorJsonSerializer.java rename to java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ColorJsonSerializer.java index 6e3cebed2db..e8786486da5 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/ColorJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/ColorJsonSerializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.gateway.serialization.impl.regatta; +package com.sap.sailing.server.gateway.serialization.impl; import org.json.simple.JSONObject; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/FleetJsonSerializer.java similarity index 93% rename from java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetJsonSerializer.java rename to java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/FleetJsonSerializer.java index 8ee21ab5e84..117c0dece07 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/FleetJsonSerializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.gateway.serialization.impl.regatta; +package com.sap.sailing.server.gateway.serialization.impl; import org.json.simple.JSONObject; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/SeriesJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesDataJsonSerializer.java similarity index 59% rename from java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/SeriesJsonSerializer.java rename to java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesDataJsonSerializer.java index 2dd65cd7847..03c9614fa39 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/SeriesJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SeriesDataJsonSerializer.java @@ -1,21 +1,21 @@ -package com.sap.sailing.server.gateway.serialization.impl.regatta; +package com.sap.sailing.server.gateway.serialization.impl; import org.json.simple.JSONObject; -import com.sap.sailing.domain.base.Series; +import com.sap.sailing.domain.base.SeriesData; import com.sap.sailing.server.gateway.serialization.ExtendableJsonSerializer; import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer; -public class SeriesJsonSerializer extends ExtendableJsonSerializer { +public class SeriesDataJsonSerializer extends ExtendableJsonSerializer { public static final String FIELD_NAME = "name"; public static final String FIELD_IS_MEDAL = "isMedal"; - public SeriesJsonSerializer(ExtensionJsonSerializer extensionSerializer) { + public SeriesDataJsonSerializer(ExtensionJsonSerializer extensionSerializer) { super(extensionSerializer); } @Override - protected JSONObject serializeFields(Series object) { + protected JSONObject serializeFields(SeriesData object) { JSONObject result = new JSONObject(); result.put(FIELD_NAME, object.getName()); diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesJsonSerializer.java deleted file mode 100644 index c55bc75d1f8..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesJsonSerializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.impl.leaderboard; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class FleetWithRaceNamesJsonSerializer implements JsonSerializer { - public static final String FIELD_RACES = "races"; - - private final JsonSerializer fleetSerializer; - - public FleetWithRaceNamesJsonSerializer(JsonSerializer fleetSerializer) { - this.fleetSerializer = fleetSerializer; - } - - - @Override - public JSONObject serialize(FleetWithRaceNames object) { - JSONObject result = fleetSerializer.serialize(object); - - JSONArray races = new JSONArray(); - for (String raceName : object.getRaceNames()) { - races.add(raceName); - } - result.put(FIELD_RACES, races); - - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/LeaderboardJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/LeaderboardJsonSerializer.java index ddf7a77b48f..e832361551c 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/LeaderboardJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/LeaderboardJsonSerializer.java @@ -2,20 +2,30 @@ package com.sap.sailing.server.gateway.serialization.impl.leaderboard; 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.Regatta; import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.server.gateway.serialization.ExtendableJsonSerializer; import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer; - - +import com.sap.sailing.server.gateway.serialization.JsonSerializer; public class LeaderboardJsonSerializer extends ExtendableJsonSerializer { public static final String FIELD_NAME = "name"; public static final String FIELD_COURSE_AREA = "courseArea"; + public static final String FIELD_BOAT_CLASS = "boatClass"; + private JsonSerializer boatClassSerializer; + private JsonSerializer courseAreaSerializer; public LeaderboardJsonSerializer( + JsonSerializer boatClassSerializer, + JsonSerializer courseAreaSerializer, ExtensionJsonSerializer extensionSerializer) { super(extensionSerializer); + this.courseAreaSerializer = courseAreaSerializer; + this.boatClassSerializer = boatClassSerializer; } @Override @@ -23,7 +33,17 @@ public class LeaderboardJsonSerializer extends ExtendableJsonSerializer { + public static final String FIELD_NAME = "name"; + public static final String FIELD_RACE_LOG = "raceLog"; + + private JsonSerializer logSerializer; + + public RaceCellJsonSerializer(JsonSerializer logSerializer) { + this.logSerializer = logSerializer; + } + + @Override + public JSONObject serialize(RaceCell object) { + JSONObject result = new JSONObject(); + + result.put(FIELD_NAME, object.getName()); + result.put(FIELD_RACE_LOG, logSerializer.serialize(object.getRaceLog())); + + return result; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowJsonSerializer.java new file mode 100644 index 00000000000..b880564e7b6 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowJsonSerializer.java @@ -0,0 +1,39 @@ +package com.sap.sailing.server.gateway.serialization.impl.leaderboard; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class RaceRowJsonSerializer implements JsonSerializer { + public static final String FIELD_FLEET = "fleet"; + public static final String FIELD_RACE_CELLS = "races"; + + private JsonSerializer fleetSerializer; + private JsonSerializer cellSerializer; + + public RaceRowJsonSerializer( + JsonSerializer fleetSerializer, + JsonSerializer cellSerializer) { + this.fleetSerializer = fleetSerializer; + this.cellSerializer = cellSerializer; + } + + @Override + public JSONObject serialize(RaceRow object) { + JSONObject result = new JSONObject(); + + result.put(FIELD_FLEET, fleetSerializer.serialize(object.getFleet())); + JSONArray cells = new JSONArray(); + for (RaceCell cell : object.getCells()) { + cells.add(cellSerializer.serialize(cell)); + } + result.put(FIELD_RACE_CELLS, cells); + + return result; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesOfSeriesExtensionSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowsOfSeriesDataExtensionSerializer.java similarity index 51% rename from java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesOfSeriesExtensionSerializer.java rename to java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowsOfSeriesDataExtensionSerializer.java index 92057dec3a6..1db428b57dc 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/FleetWithRaceNamesOfSeriesExtensionSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/RaceRowsOfSeriesDataExtensionSerializer.java @@ -6,18 +6,19 @@ import java.util.Collection; import org.json.simple.JSONArray; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaceNames; +import com.sap.sailing.domain.base.RaceCell; import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.base.impl.FleetWithRaceNamesImpl; +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.domain.base.SeriesData; +import com.sap.sailing.domain.base.impl.RaceCellImpl; +import com.sap.sailing.domain.base.impl.RaceRowImpl; import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer; import com.sap.sailing.server.gateway.serialization.JsonSerializer; -public class FleetWithRaceNamesOfSeriesExtensionSerializer extends ExtensionJsonSerializer { +public class RaceRowsOfSeriesDataExtensionSerializer extends ExtensionJsonSerializer { public static final String FIELD_FLEETS = "fleets"; - public FleetWithRaceNamesOfSeriesExtensionSerializer( - JsonSerializer extensionSerializer) { + public RaceRowsOfSeriesDataExtensionSerializer(JsonSerializer extensionSerializer) { super(extensionSerializer); } @@ -27,15 +28,15 @@ public class FleetWithRaceNamesOfSeriesExtensionSerializer extends ExtensionJson } @Override - public Object serializeExtension(Series parent) { + public Object serializeExtension(SeriesData parent) { JSONArray result = new JSONArray(); for (Fleet fleet : parent.getFleets()) { - Collection raceNames = new ArrayList(); + Collection raceCells = new ArrayList(); for (RaceColumn column : parent.getRaceColumns()) { - raceNames.add(column.getName()); + raceCells.add(new RaceCellImpl(column.getName(), null)); /// TODO: get racelog from column } - result.add(serialize(new FleetWithRaceNamesImpl(fleet, raceNames))); + result.add(serialize(new RaceRowImpl(fleet, raceCells))); } return result; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesOfLeaderboardExtensionSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesDataOfLeaderboardExtensionSerializer.java similarity index 61% rename from java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesOfLeaderboardExtensionSerializer.java rename to java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesDataOfLeaderboardExtensionSerializer.java index 96dc75ef449..c18637be58b 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesOfLeaderboardExtensionSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/leaderboard/SeriesDataOfLeaderboardExtensionSerializer.java @@ -12,17 +12,18 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnInSeries; import com.sap.sailing.domain.base.Series; +import com.sap.sailing.domain.base.SeriesData; import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer; import com.sap.sailing.server.gateway.serialization.JsonSerializer; -public class SeriesOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer { +public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer { public static final String FIELD_SERIES = "series"; - public SeriesOfLeaderboardExtensionSerializer(JsonSerializer extensionSerializer) { + public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer extensionSerializer) { super(extensionSerializer); } @@ -34,22 +35,22 @@ public class SeriesOfLeaderboardExtensionSerializer extends ExtensionJsonSeriali @Override public Object serializeExtension(Leaderboard parent) { Map> seriesToRaceColumns = new HashMap>(); - Series defaultSeries = new SeriesImpl( - "Default Series", - false, - Collections.singleton(new FleetImpl("Default Fleet")), - Collections.emptyList(), - null); - seriesToRaceColumns.put(defaultSeries, Collections.emptyList()); + + Series defaultSeries = null; for (RaceColumn raceColumn : parent.getRaceColumns()) { - if (raceColumn instanceof RaceColumnInSeries) { RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn; - if (!seriesToRaceColumns.containsKey(raceColumnInSeries.getSeries())) { - seriesToRaceColumns.put(raceColumnInSeries.getSeries(), new ArrayList()); - } - seriesToRaceColumns.get(raceColumnInSeries.getSeries()).add(raceColumnInSeries); + insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries); } else { + if (defaultSeries == null) { + defaultSeries = new SeriesImpl( + "Default Series", + false, + Collections.singleton(new FleetImpl("Default Fleet")), + Collections.emptyList(), + null); + insertSeriesIfNew(seriesToRaceColumns, defaultSeries); + } seriesToRaceColumns.get(defaultSeries).add(raceColumn); } } @@ -61,4 +62,11 @@ public class SeriesOfLeaderboardExtensionSerializer extends ExtensionJsonSeriali return result; } + + private List insertSeriesIfNew(Map> target, Series newSeries) { + if (!target.containsKey(newSeries)) { + target.put(newSeries, new ArrayList()); + } + return target.get(newSeries); + } } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesJsonSerializer.java deleted file mode 100644 index 547386f09ec..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesJsonSerializer.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.impl.regatta; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaces; -import com.sap.sailing.domain.base.RaceDefinition; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; -import com.sap.sailing.server.gateway.serialization.filter.Filter; - -public class FleetWithRacesJsonSerializer implements JsonSerializer { - public static final String FIELD_RACES = "races"; - - private final JsonSerializer fleetSerializer; - private final Filter raceDefinitionFilter; - private final JsonSerializer raceDefinitionSerializer; - - public FleetWithRacesJsonSerializer( - JsonSerializer fleetSerializer, - Filter raceDefinitionFilter, - JsonSerializer raceDefinitionSerializer) { - this.fleetSerializer = fleetSerializer; - this.raceDefinitionFilter = raceDefinitionFilter; - this.raceDefinitionSerializer = raceDefinitionSerializer; - } - - - @Override - public JSONObject serialize(FleetWithRaces object) { - JSONObject result = fleetSerializer.serialize(object); - - JSONArray races = new JSONArray(); - for (RaceDefinition race : object.getRaceDefinitions()) { - if (raceDefinitionFilter.isFiltered(race)) { - races.add(raceDefinitionSerializer.serialize(race)); - } - } - result.put(FIELD_RACES, races); - - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesOfSeriesExtensionSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesOfSeriesExtensionSerializer.java deleted file mode 100644 index 1da4140e648..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/regatta/FleetWithRacesOfSeriesExtensionSerializer.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.impl.regatta; - -import java.util.ArrayList; -import java.util.Collection; - -import org.json.simple.JSONArray; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaces; -import com.sap.sailing.domain.base.RaceColumnInSeries; -import com.sap.sailing.domain.base.RaceDefinition; -import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.base.impl.FleetWithRacesImpl; -import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class FleetWithRacesOfSeriesExtensionSerializer extends ExtensionJsonSerializer { - public static final String FIELD_NAME = "fleets"; - - public FleetWithRacesOfSeriesExtensionSerializer(JsonSerializer extensionSerializer) { - super(extensionSerializer); - } - - @Override - public String getExtensionFieldName() { - return FIELD_NAME; - } - - @Override - public Object serializeExtension(Series object) { - JSONArray result = new JSONArray(); - - for (Fleet fleet : object.getFleets()) { - - Collection races = new ArrayList(); - for (RaceColumnInSeries raceColumn : object.getRaceColumns()) { - RaceDefinition race = raceColumn.getRaceDefinition(fleet); - if (race != null) { - System.out.println(race); - races.add(race); - } - } - - result.add(serialize(new FleetWithRacesImpl(fleet, races))); - } - - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/LeaderboardJsonExportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/LeaderboardJsonExportServlet.java index c76350b5729..ef96f35b560 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/LeaderboardJsonExportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/LeaderboardJsonExportServlet.java @@ -8,19 +8,24 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.simple.JSONArray; +import org.json.simple.JSONObject; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.server.gateway.impl.JsonExportServlet; import com.sap.sailing.server.gateway.serialization.JsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesOfSeriesExtensionSerializer; +import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.SeriesDataJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.leaderboard.LeaderboardJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesOfLeaderboardExtensionSerializer; -import com.sap.sailing.server.gateway.serialization.impl.regatta.ColorJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.regatta.FleetJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.regatta.SeriesJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceCellJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowsOfSeriesDataExtensionSerializer; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesDataOfLeaderboardExtensionSerializer; public class LeaderboardJsonExportServlet extends JsonExportServlet { private static final long serialVersionUID = 4510175441769759252L; @@ -48,7 +53,7 @@ public class LeaderboardJsonExportServlet extends JsonExportServlet { JSONArray result = new JSONArray(); for (Leaderboard leaderboard : getService().getLeaderboards().values()) { - if (leaderboard.getDefaultCourseArea().equals(filterCourseArea)) { + if (filterCourseArea.equals(leaderboard.getDefaultCourseArea())) { result.add(serializer.serialize(leaderboard)); } } @@ -80,13 +85,26 @@ public class LeaderboardJsonExportServlet extends JsonExportServlet { private static JsonSerializer createSerializer() { return new LeaderboardJsonSerializer( - new SeriesOfLeaderboardExtensionSerializer( - new SeriesJsonSerializer( - new FleetWithRaceNamesOfSeriesExtensionSerializer( - new FleetWithRaceNamesJsonSerializer( - new FleetJsonSerializer( - new ColorJsonSerializer())))))); - + new BoatClassJsonSerializer(), + new CourseAreaJsonSerializer(), + new SeriesDataOfLeaderboardExtensionSerializer( + new SeriesDataJsonSerializer( + new RaceRowsOfSeriesDataExtensionSerializer( + new RaceRowJsonSerializer( + new FleetJsonSerializer( + new ColorJsonSerializer()), + new RaceCellJsonSerializer(createRaceLogSerializer())))))); + + } + + /// TODO: replace with real racelog serializer + private static JsonSerializer createRaceLogSerializer() { + return new JsonSerializer() { + @Override + public JSONObject serialize(RaceLog object) { + return new JSONObject(); + } + }; } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/DataManager.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/DataManager.java index 45ce9c0010f..88429a37721 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/DataManager.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/DataManager.java @@ -1,46 +1,38 @@ package com.sap.sailing.racecommittee.app.data; import java.io.Serializable; -import java.io.UnsupportedEncodingException; import java.net.URI; -import java.util.ArrayList; import java.util.Collection; -import java.util.Map; - -import org.json.simple.JSONValue; import android.content.Context; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.racecommittee.app.data.clients.LoadClient; import com.sap.sailing.racecommittee.app.data.handlers.DataHandler; import com.sap.sailing.racecommittee.app.data.handlers.EventsDataHandler; import com.sap.sailing.racecommittee.app.data.handlers.ManagedRacesDataHandler; -import com.sap.sailing.racecommittee.app.data.handlers.RaceLogsDataHandler; -import com.sap.sailing.racecommittee.app.data.http.HttpJsonPostRequest; import com.sap.sailing.racecommittee.app.data.loaders.DataLoader; import com.sap.sailing.racecommittee.app.data.parsers.DataParser; import com.sap.sailing.racecommittee.app.data.parsers.EventsDataParser; import com.sap.sailing.racecommittee.app.data.parsers.ManagedRacesDataParser; -import com.sap.sailing.racecommittee.app.data.parsers.RaceLogsDataParser; +import com.sap.sailing.racecommittee.app.deserialization.impl.ColorDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.CourseAreaJsonDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.EventJsonDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.FleetDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.RaceCellDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.RaceGroupDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.RaceLogDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.RaceRowDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.SeriesWithRowsDeserializer; +import com.sap.sailing.racecommittee.app.deserialization.impl.VenueJsonDeserializer; import com.sap.sailing.racecommittee.app.domain.ManagedRace; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.ColorDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.CourseAreaJsonDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.EventJsonDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.FleetDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.FleetWithRaceNamesDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.RaceGroupDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.SeriesDataDeserializer; -import com.sap.sailing.racecommittee.app.domain.deserialization.impl.VenueJsonDeserializer; -import com.sap.sailing.racecommittee.app.logging.ExLog; /** * Enables accessing of data. */ public class DataManager implements ReadonlyDataManager { - private static final String TAG = DataManager.class.getName(); + // private static final String TAG = DataManager.class.getName(); public static ReadonlyDataManager create(Context context) { return new DataManager(context, InMemoryDataStore.INSTANCE); @@ -134,10 +126,12 @@ public class DataManager implements ReadonlyDataManager { //JsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(); DataParser> parser = new ManagedRacesDataParser( new RaceGroupDeserializer( - new SeriesDataDeserializer( - new FleetWithRaceNamesDeserializer( + new SeriesWithRowsDeserializer( + new RaceRowDeserializer( new FleetDeserializer( - new ColorDeserializer()))))); + new ColorDeserializer()), + new RaceCellDeserializer( + new RaceLogDeserializer()))))); DataHandler> handler = new ManagedRacesDataHandler(this, client); DataLoader> loader = new DataLoader>( @@ -148,41 +142,6 @@ public class DataManager implements ReadonlyDataManager { loader.forceLoad(); } - - public void loadRaceLogs( - Collection data, - LoadClient>> client) { - Collection ids = new ArrayList(); - for (ManagedRace race : data) { - if (!dataStore.hasRace(race.getId())) { - ExLog.w(TAG, "Tried to load race log for unknown race " + race.getId()); - continue; - } - ids.add(race.getId()); - } - - HttpJsonPostRequest request = null; - try { - String value = JSONValue.toJSONString(ids); - ExLog.e(TAG, value); - request = new HttpJsonPostRequest(URI.create(TargetHost + "sailingserver/rc/racelogs"), value); - } catch (UnsupportedEncodingException e) { - ExLog.e(TAG, "Exception while trying to create POST request. Aborting:\n" + e); - return; - } - - DataParser>> parser = new RaceLogsDataParser(); - - DataHandler>> handler = new RaceLogsDataHandler(this, client); - - DataLoader>> loader = - new DataLoader>>( - context, - request, - parser, - handler); - loader.forceLoad(); - } private static final String TargetHost = "http://192.168.178.22:8888"; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/ReadonlyDataManager.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/ReadonlyDataManager.java index cf6cf82a5d9..bdf404699c9 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/ReadonlyDataManager.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/ReadonlyDataManager.java @@ -2,11 +2,9 @@ package com.sap.sailing.racecommittee.app.data; import java.io.Serializable; import java.util.Collection; -import java.util.Map; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.racecommittee.app.data.clients.LoadClient; import com.sap.sailing.racecommittee.app.domain.ManagedRace; @@ -18,9 +16,5 @@ public interface ReadonlyDataManager { public void loadCourseAreas(Serializable parentEventId, LoadClient> client); public void loadRaces(Serializable courseAreaId, LoadClient> client); - - public void loadRaceLogs( - Collection data, - LoadClient>> client); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java index b8c3e46dd65..7993812613e 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java @@ -9,20 +9,20 @@ import org.json.simple.JSONObject; import org.json.simple.JSONValue; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.RaceGroup; -import com.sap.sailing.domain.base.SeriesData; +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.racecommittee.app.domain.ManagedRace; -import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier; -import com.sap.sailing.racecommittee.app.domain.impl.RaceIdentifierImpl; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; +import com.sap.sailing.racecommittee.app.domain.SeriesWithRows; +import com.sap.sailing.racecommittee.app.domain.impl.FleetIdentifierImpl; +import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceIdentifierImpl; import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceImpl; -import com.sap.sailing.racecommittee.app.logging.ExLog; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; public class ManagedRacesDataParser implements DataParser> { - private static final String TAG = ManagedRacesDataParser.class.getName(); - + // private static final String TAG = ManagedRacesDataParser.class.getName(); private JsonDeserializer deserializer; @@ -46,35 +46,24 @@ public class ManagedRacesDataParser implements DataParser target, RaceGroup raceGroup) { - for (SeriesData series : raceGroup.getSeries()) { - for (Fleet fleet : series.getFleets()) { - if (fleet instanceof FleetWithRaceNames) { - FleetWithRaceNames fleetWithRaceNames = (FleetWithRaceNames) fleet; - for (String raceName : fleetWithRaceNames.getRaceNames()) { - ManagedRace managedRace = createManagedRace( - raceGroup, - series, - fleetWithRaceNames, - raceName); - target.add(managedRace); - } - } else { - ExLog.w(TAG, String.format("Fleet %s had no race information attached.", fleet)); + for (SeriesWithRows series : raceGroup.getSeries()) { + for (RaceRow raceRow : series.getRaceRows()) { + Fleet fleet = raceRow.getFleet(); + for (RaceCell cell : raceRow.getCells()) { + ManagedRace race = createManagedRace(raceGroup, series, fleet, cell.getName(), cell.getRaceLog()); + target.add(race); } } } + } + + private ManagedRace createManagedRace(RaceGroup raceGroup, SeriesWithRows series, + Fleet fleet, String name, RaceLog raceLog) { + return new ManagedRaceImpl( + new ManagedRaceIdentifierImpl(name, + new FleetIdentifierImpl(fleet, series, raceGroup)), + raceLog); } - private ManagedRace createManagedRace( - RaceGroup raceGroup, - SeriesData series, - FleetWithRaceNames fleetWithRaceNames, - String raceName) { - ManagedRaceIdentifier identifier = - new RaceIdentifierImpl(raceName, fleetWithRaceNames, series, raceGroup); - ManagedRace managedRace = new ManagedRaceImpl(identifier); - return managedRace; - } - } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/BoatClassJsonDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/BoatClassJsonDeserializer.java similarity index 90% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/BoatClassJsonDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/BoatClassJsonDeserializer.java index 98ce0877d63..3df8be0bd7d 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/BoatClassJsonDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/BoatClassJsonDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONObject; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/ColorDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/ColorDeserializer.java similarity index 90% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/ColorDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/ColorDeserializer.java index f7557345d27..e50b8fdf958 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/ColorDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/ColorDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONObject; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/CourseAreaJsonDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/CourseAreaJsonDeserializer.java similarity index 92% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/CourseAreaJsonDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/CourseAreaJsonDeserializer.java index 64b96fcd641..b0351fe4548 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/CourseAreaJsonDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/CourseAreaJsonDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONObject; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/EventJsonDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/EventJsonDeserializer.java similarity index 94% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/EventJsonDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/EventJsonDeserializer.java index 2ad1862f223..9a604efcaec 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/EventJsonDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/EventJsonDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONObject; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/FleetDeserializer.java similarity index 87% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/FleetDeserializer.java index 5f4f57c010d..1e93d8cb0cb 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/FleetDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONObject; @@ -8,7 +8,7 @@ import com.sap.sailing.domain.common.Color; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.impl.regatta.FleetJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer; public class FleetDeserializer implements JsonDeserializer { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceCellDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceCellDeserializer.java new file mode 100644 index 00000000000..dcd9ba297b9 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceCellDeserializer.java @@ -0,0 +1,31 @@ +package com.sap.sailing.racecommittee.app.deserialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.base.impl.RaceCellImpl; +import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceCellJsonSerializer; + +public class RaceCellDeserializer implements JsonDeserializer { + + private JsonDeserializer logDeserializer; + + public RaceCellDeserializer(JsonDeserializer logDeserializer) { + this.logDeserializer = logDeserializer; + } + + public RaceCell deserialize(JSONObject object) + throws JsonDeserializationException { + String name = object.get(RaceCellJsonSerializer.FIELD_NAME).toString(); + + JSONObject logJson = Helpers.getNestedObjectSafe(object, RaceCellJsonSerializer.FIELD_RACE_LOG); + RaceLog log = logDeserializer.deserialize(logJson); + + return new RaceCellImpl(name, log); + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/RaceGroupDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceGroupDeserializer.java similarity index 64% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/RaceGroupDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceGroupDeserializer.java index 596e251c971..e1864dc84ea 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/RaceGroupDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceGroupDeserializer.java @@ -1,24 +1,24 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import java.util.ArrayList; import java.util.Collection; import org.json.simple.JSONObject; -import com.sap.sailing.domain.base.RaceGroup; -import com.sap.sailing.domain.base.SeriesData; -import com.sap.sailing.domain.base.impl.RaceGroupImpl; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; +import com.sap.sailing.racecommittee.app.domain.SeriesWithRows; +import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupImpl; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sailing.server.gateway.serialization.impl.leaderboard.LeaderboardJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesOfLeaderboardExtensionSerializer; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesDataOfLeaderboardExtensionSerializer; public class RaceGroupDeserializer implements JsonDeserializer { - private JsonDeserializer seriesDeserializer; + private JsonDeserializer seriesDeserializer; - public RaceGroupDeserializer(JsonDeserializer seriesDeserializer) { + public RaceGroupDeserializer(JsonDeserializer seriesDeserializer) { this.seriesDeserializer = seriesDeserializer; } @@ -28,10 +28,10 @@ public class RaceGroupDeserializer implements JsonDeserializer { // CourseArea ... - Collection series = new ArrayList(); + Collection series = new ArrayList(); for (Object seriesObject : Helpers.getNestedArraySafe( object, - SeriesOfLeaderboardExtensionSerializer.FIELD_SERIES)) { + SeriesDataOfLeaderboardExtensionSerializer.FIELD_SERIES)) { JSONObject seriesJson = Helpers.toJSONObjectSafe(seriesObject); series.add(seriesDeserializer.deserialize(seriesJson)); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceLogDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceLogDeserializer.java new file mode 100644 index 00000000000..a5216aee961 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceLogDeserializer.java @@ -0,0 +1,17 @@ +package com.sap.sailing.racecommittee.app.deserialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; + +public class RaceLogDeserializer implements JsonDeserializer { + + public RaceLog deserialize(JSONObject object) + throws JsonDeserializationException { + // TODO Deserialize race log + return null; + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceRowDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceRowDeserializer.java new file mode 100644 index 00000000000..85bf682e8ad --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceRowDeserializer.java @@ -0,0 +1,44 @@ +package com.sap.sailing.racecommittee.app.deserialization.impl; + +import java.util.ArrayList; +import java.util.Collection; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceCell; +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.domain.base.impl.RaceRowImpl; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowJsonSerializer; + +public class RaceRowDeserializer implements JsonDeserializer { + + private JsonDeserializer fleetDeserializer; + private JsonDeserializer raceCellDeserializer; + + public RaceRowDeserializer(JsonDeserializer fleetDeserializer, + JsonDeserializer raceCellDeserializer) { + this.fleetDeserializer = fleetDeserializer; + this.raceCellDeserializer = raceCellDeserializer; + } + + public RaceRow deserialize(JSONObject object) + throws JsonDeserializationException { + JSONObject fleetObject = Helpers.toJSONObjectSafe(object.get(RaceRowJsonSerializer.FIELD_FLEET)); + JSONArray cellsObject = Helpers.getNestedArraySafe(object, RaceRowJsonSerializer.FIELD_RACE_CELLS); + + Collection races = new ArrayList(); + Fleet fleet = fleetDeserializer.deserialize(fleetObject); + for (Object cellObject : cellsObject) { + JSONObject cellJson = Helpers.toJSONObjectSafe(cellObject); + races.add(raceCellDeserializer.deserialize(cellJson)); + } + + return new RaceRowImpl(fleet, races); + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/SeriesWithRowsDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/SeriesWithRowsDeserializer.java new file mode 100644 index 00000000000..d412e24ceca --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/SeriesWithRowsDeserializer.java @@ -0,0 +1,40 @@ +package com.sap.sailing.racecommittee.app.deserialization.impl; + +import java.util.ArrayList; +import java.util.Collection; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.racecommittee.app.domain.SeriesWithRows; +import com.sap.sailing.racecommittee.app.domain.impl.SeriesWithRowsImpl; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowsOfSeriesDataExtensionSerializer; + +public class SeriesWithRowsDeserializer implements JsonDeserializer { + + private JsonDeserializer raceRowDeserializer; + + public SeriesWithRowsDeserializer(JsonDeserializer raceRowDeserializer) { + this.raceRowDeserializer = raceRowDeserializer; + } + + public SeriesWithRows deserialize(JSONObject object) + throws JsonDeserializationException { + String name = object.get("name").toString(); + boolean isMedal = (Boolean) object.get("isMedal"); + + Collection rows = new ArrayList(); + for (Object fleetObject : Helpers.getNestedArraySafe( + object, + RaceRowsOfSeriesDataExtensionSerializer.FIELD_FLEETS)) { + JSONObject fleetJson = Helpers.toJSONObjectSafe(fleetObject); + rows.add(raceRowDeserializer.deserialize(fleetJson)); + } + + return new SeriesWithRowsImpl(name, rows, isMedal); + } + +} \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/VenueJsonDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/VenueJsonDeserializer.java similarity index 94% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/VenueJsonDeserializer.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/VenueJsonDeserializer.java index 7838c507ed0..1443afc809b 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/VenueJsonDeserializer.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/VenueJsonDeserializer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; +package com.sap.sailing.racecommittee.app.deserialization.impl; import org.json.simple.JSONArray; import org.json.simple.JSONObject; diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java index 98e301fb388..8caef95ec86 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java @@ -2,13 +2,12 @@ package com.sap.sailing.racecommittee.app.domain; import java.io.Serializable; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.RaceGroup; +import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.SeriesData; public interface FleetIdentifier { - public FleetWithRaceNames getFleet(); + public Fleet getFleet(); public SeriesData getSeries(); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/RaceGroup.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/RaceGroup.java new file mode 100644 index 00000000000..1d8936014d9 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/RaceGroup.java @@ -0,0 +1,12 @@ +package com.sap.sailing.racecommittee.app.domain; + +import com.sap.sailing.domain.base.CourseArea; +import com.sap.sailing.domain.common.Named; + +public interface RaceGroup extends Named { + + public CourseArea getDefaultCourseArea(); + + public Iterable getSeries(); + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/SeriesWithRows.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/SeriesWithRows.java new file mode 100644 index 00000000000..6ea43299c1e --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/SeriesWithRows.java @@ -0,0 +1,10 @@ +package com.sap.sailing.racecommittee.app.domain; + +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.domain.base.SeriesData; + +public interface SeriesWithRows extends SeriesData { + + public Iterable getRaceRows(); + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetWithRaceNamesDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetWithRaceNamesDeserializer.java deleted file mode 100644 index 1fd1944d678..00000000000 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/FleetWithRaceNamesDeserializer.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; - -import java.util.ArrayList; -import java.util.Collection; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.impl.FleetWithRaceNamesImpl; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesJsonSerializer; - -public class FleetWithRaceNamesDeserializer implements JsonDeserializer { - - private JsonDeserializer fleetDeserializer; - - public FleetWithRaceNamesDeserializer( - JsonDeserializer fleetDeserializer) { - this.fleetDeserializer = fleetDeserializer; - } - public FleetWithRaceNames deserialize(JSONObject object) - throws JsonDeserializationException { - Fleet fleet = fleetDeserializer.deserialize(object); - - Collection raceNames = new ArrayList(); - for (Object raceName : Helpers.getNestedArraySafe( - object, - FleetWithRaceNamesJsonSerializer.FIELD_RACES)) { - raceNames.add(raceName.toString()); - } - - return new FleetWithRaceNamesImpl(fleet, raceNames); - } - -} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/SeriesDataDeserializer.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/SeriesDataDeserializer.java deleted file mode 100644 index 6d5544b9192..00000000000 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/deserialization/impl/SeriesDataDeserializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.sap.sailing.racecommittee.app.domain.deserialization.impl; - -import java.util.ArrayList; -import java.util.Collection; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.SeriesData; -import com.sap.sailing.racecommittee.app.domain.impl.SeriesDataImpl; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesOfSeriesExtensionSerializer; - -public class SeriesDataDeserializer implements JsonDeserializer { - - private JsonDeserializer fleetDeserializer; - - public SeriesDataDeserializer(JsonDeserializer fleetDeserializer) { - this.fleetDeserializer = fleetDeserializer; - } - - public SeriesData deserialize(JSONObject object) - throws JsonDeserializationException { - String name = object.get("name").toString(); - boolean isMedal = (Boolean) object.get("isMedal"); - - Collection fleets = new ArrayList(); - for (Object fleetObject : Helpers.getNestedArraySafe( - object, - FleetWithRaceNamesOfSeriesExtensionSerializer.FIELD_FLEETS)) { - JSONObject fleetJson = Helpers.toJSONObjectSafe(fleetObject); - fleets.add(fleetDeserializer.deserialize(fleetJson)); - } - - return new SeriesDataImpl(name, fleets, isMedal); - } - -} \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java index f06213caa47..20dd49a91cf 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java @@ -2,28 +2,28 @@ package com.sap.sailing.racecommittee.app.domain.impl; import java.io.Serializable; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.RaceGroup; +import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.SeriesData; import com.sap.sailing.racecommittee.app.domain.FleetIdentifier; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; public class FleetIdentifierImpl implements FleetIdentifier { - private FleetWithRaceNames fleetWithRaceNames; + private Fleet fleet; private SeriesData series; private RaceGroup raceGroup; public FleetIdentifierImpl( - FleetWithRaceNames fleetWithRaceNames, + Fleet fleet, SeriesData series, RaceGroup raceGroup) { - this.fleetWithRaceNames = fleetWithRaceNames; + this.fleet = fleet; this.series = series; this.raceGroup = raceGroup; } - public FleetWithRaceNames getFleet() { - return fleetWithRaceNames; + public Fleet getFleet() { + return fleet; } public SeriesData getSeries() { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceIdentifierImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java similarity index 67% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceIdentifierImpl.java rename to mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java index 110a388c2d8..0891e93a1ca 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceIdentifierImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java @@ -2,26 +2,26 @@ package com.sap.sailing.racecommittee.app.domain.impl; import java.io.Serializable; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.RaceGroup; +import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.SeriesData; import com.sap.sailing.racecommittee.app.domain.FleetIdentifier; import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; -public class RaceIdentifierImpl extends FleetIdentifierImpl implements ManagedRaceIdentifier { +public class ManagedRaceIdentifierImpl extends FleetIdentifierImpl implements ManagedRaceIdentifier { private String raceName; - public RaceIdentifierImpl( + public ManagedRaceIdentifierImpl( String raceName, - FleetWithRaceNames fleetWithRaceNames, + Fleet fleetWithRaceNames, SeriesData series, RaceGroup raceGroup) { super(fleetWithRaceNames, series, raceGroup); this.raceName = raceName; } - public RaceIdentifierImpl(String raceName, FleetIdentifier identifier) { + public ManagedRaceIdentifierImpl(String raceName, FleetIdentifier identifier) { this(raceName, identifier.getFleet(), identifier.getSeries(), identifier.getRaceGroup()); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java index 4e98771b0e4..b9029f2937d 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java @@ -2,11 +2,12 @@ package com.sap.sailing.racecommittee.app.domain.impl; import java.io.Serializable; -import com.sap.sailing.domain.base.FleetWithRaceNames; -import com.sap.sailing.domain.base.RaceGroup; +import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.SeriesData; +import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.racecommittee.app.domain.ManagedRace; import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; import com.sap.sailing.racecommittee.app.domain.RaceStatus; public class ManagedRaceImpl implements ManagedRace { @@ -16,7 +17,7 @@ public class ManagedRaceImpl implements ManagedRace { private ManagedRaceIdentifier identifier; - public ManagedRaceImpl(ManagedRaceIdentifier identifier) { + public ManagedRaceImpl(ManagedRaceIdentifier identifier, RaceLog raceLog) { this.identifier = identifier; } @@ -32,7 +33,7 @@ public class ManagedRaceImpl implements ManagedRace { return getName(); } - public FleetWithRaceNames getFleet() { + public Fleet getFleet() { return identifier.getFleet(); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceGroupImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceGroupImpl.java new file mode 100644 index 00000000000..4cb62eb013b --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/RaceGroupImpl.java @@ -0,0 +1,32 @@ +package com.sap.sailing.racecommittee.app.domain.impl; + +import com.sap.sailing.domain.base.CourseArea; +import com.sap.sailing.domain.common.impl.NamedImpl; +import com.sap.sailing.racecommittee.app.domain.RaceGroup; +import com.sap.sailing.racecommittee.app.domain.SeriesWithRows; + + +public class RaceGroupImpl extends NamedImpl implements RaceGroup { + private static final long serialVersionUID = 7760879536339600827L; + + private final CourseArea courseArea; + private final Iterable series; + + public RaceGroupImpl( + String name, + CourseArea courseArea, + Iterable series) { + super(name); + this.courseArea = courseArea; + this.series = series; + } + + public CourseArea getDefaultCourseArea() { + return courseArea; + } + + public Iterable getSeries() { + return series; + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesDataImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesDataImpl.java deleted file mode 100644 index fbb8719c066..00000000000 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesDataImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.sap.sailing.racecommittee.app.domain.impl; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesData; - -public class SeriesDataImpl implements SeriesData { - private static final long serialVersionUID = 8825402393444809944L; - - private String name; - private Iterable fleets; - private boolean isMedal; - - public SeriesDataImpl(String name, Iterable fleets, boolean isMedal) { - this.name = name; - this.fleets = fleets; - this.isMedal = isMedal; - } - - public String getName() { - return name; - } - - public Iterable getFleets() { - return fleets; - } - - public boolean isMedal() { - return isMedal; - } - -} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesWithRowsImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesWithRowsImpl.java new file mode 100644 index 00000000000..34ba16d685c --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/SeriesWithRowsImpl.java @@ -0,0 +1,48 @@ +package com.sap.sailing.racecommittee.app.domain.impl; + +import java.util.ArrayList; +import java.util.Collection; + +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumnInSeries; +import com.sap.sailing.domain.base.RaceRow; +import com.sap.sailing.racecommittee.app.domain.SeriesWithRows; + +public class SeriesWithRowsImpl implements SeriesWithRows { + private static final long serialVersionUID = 8825402393444809944L; + + private String name; + private Iterable raceRows; + private boolean isMedal; + + public SeriesWithRowsImpl(String name, Iterable raceRows, boolean isMedal) { + this.name = name; + this.raceRows = raceRows; + this.isMedal = isMedal; + } + + public String getName() { + return name; + } + + public boolean isMedal() { + return isMedal; + } + + public Iterable getRaceRows() { + return raceRows; + } + + public Iterable getFleets() { + Collection fleets = new ArrayList(); + for (RaceRow row : raceRows) { + fleets.add(row.getFleet()); + } + return fleets; + } + + public Iterable getRaceColumns() { + return null; + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java index 27502b94a50..f2b70866789 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java @@ -2,7 +2,6 @@ package com.sap.sailing.racecommittee.app.ui.activities; import java.io.Serializable; import java.util.Collection; -import java.util.Map; import android.app.AlertDialog; import android.app.FragmentTransaction; @@ -15,14 +14,12 @@ import android.widget.TextView; import android.widget.Toast; import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.racecommittee.app.AppConstants; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager; import com.sap.sailing.racecommittee.app.data.clients.LoadClient; import com.sap.sailing.racecommittee.app.domain.ManagedRace; -import com.sap.sailing.racecommittee.app.logging.ExLog; import com.sap.sailing.racecommittee.app.ui.fragments.list.ManagedRaceListFragment; public class RacingActivity extends TwoPaneActivity /*implements ResetTimeListener, @@ -121,17 +118,6 @@ StartModeSelectionListener, PathfinderSelectionListener, GateLineOpeningTimeSele private void onLoadRacesSucceded(Serializable courseAreaId, Collection data) { setProgressBarIndeterminateVisibility(false); - - dataManager.loadRaceLogs(data, new LoadClient>>() { - - public void onLoadSucceded(Map> data) { - Toast.makeText(RacingActivity.this, "OKOKOKOK", Toast.LENGTH_LONG).show(); - } - - public void onLoadFailed(Exception reason) { - ExLog.w(TAG, "Loading of race logs failed:\n" + reason.toString()); - } - }); registerOnService(data); listFragment.setupOn(data);