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 extends Fleet> 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 extends RaceColumnInSeries> 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 extends Fleet> 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 extends RaceColumnInSeries> 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