mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-14 16:20:57 +00:00
# Added a (for now empty) shared domain bundle
# Another round of changes in the communication between app and server # This time actual "race rows" are transmitted to the application - created by "transposing" the RaceColumns of a Leaderboard # Each RaceRow contains it Fleet and several RaceCells. A RaceCell consists of a name and a RaceLog # Removed a bunch of now unused data structures and serialization facilities
This commit is contained in:
1 parent
0f6b592530
commit
1fefd2ea17
55 files changed
+603
-607
No files matched your search
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+5
-5
@@ -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<Series> {
|
||||
public class SeriesDataJsonSerializer extends ExtendableJsonSerializer<SeriesData> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_IS_MEDAL = "isMedal";
|
||||
|
||||
public SeriesJsonSerializer(ExtensionJsonSerializer<Series, ?> extensionSerializer) {
|
||||
public SeriesDataJsonSerializer(ExtensionJsonSerializer<SeriesData, ?> extensionSerializer) {
|
||||
super(extensionSerializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JSONObject serializeFields(Series object) {
|
||||
protected JSONObject serializeFields(SeriesData object) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
-33
@@ -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<FleetWithRaceNames> {
|
||||
public static final String FIELD_RACES = "races";
|
||||
|
||||
private final JsonSerializer<Fleet> fleetSerializer;
|
||||
|
||||
public FleetWithRaceNamesJsonSerializer(JsonSerializer<Fleet> 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;
|
||||
}
|
||||
|
||||
}
|
||||
+23
-3
@@ -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<Leaderboard> {
|
||||
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<BoatClass> boatClassSerializer;
|
||||
private JsonSerializer<CourseArea> courseAreaSerializer;
|
||||
|
||||
public LeaderboardJsonSerializer(
|
||||
JsonSerializer<BoatClass> boatClassSerializer,
|
||||
JsonSerializer<CourseArea> courseAreaSerializer,
|
||||
ExtensionJsonSerializer<Leaderboard, ?> extensionSerializer) {
|
||||
super(extensionSerializer);
|
||||
this.courseAreaSerializer = courseAreaSerializer;
|
||||
this.boatClassSerializer = boatClassSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -23,7 +33,17 @@ public class LeaderboardJsonSerializer extends ExtendableJsonSerializer<Leaderbo
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
result.put(FIELD_COURSE_AREA, "tdb");
|
||||
|
||||
if (object.getDefaultCourseArea() != null) {
|
||||
result.put(FIELD_COURSE_AREA, courseAreaSerializer.serialize(object.getDefaultCourseArea()));
|
||||
}
|
||||
|
||||
if (object instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = ((RegattaLeaderboard) object).getRegatta();
|
||||
if (regatta.getBoatClass() != null) {
|
||||
result.put(FIELD_BOAT_CLASS, boatClassSerializer.serialize(regatta.getBoatClass()));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl.leaderboard;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.RaceCell;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceCellJsonSerializer implements JsonSerializer<RaceCell> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_RACE_LOG = "raceLog";
|
||||
|
||||
private JsonSerializer<RaceLog> logSerializer;
|
||||
|
||||
public RaceCellJsonSerializer(JsonSerializer<RaceLog> 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;
|
||||
}
|
||||
|
||||
}
|
||||
+39
@@ -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<RaceRow> {
|
||||
public static final String FIELD_FLEET = "fleet";
|
||||
public static final String FIELD_RACE_CELLS = "races";
|
||||
|
||||
private JsonSerializer<Fleet> fleetSerializer;
|
||||
private JsonSerializer<RaceCell> cellSerializer;
|
||||
|
||||
public RaceRowJsonSerializer(
|
||||
JsonSerializer<Fleet> fleetSerializer,
|
||||
JsonSerializer<RaceCell> 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;
|
||||
}
|
||||
|
||||
}
|
||||
+11
-10
@@ -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<Series, FleetWithRaceNames> {
|
||||
public class RaceRowsOfSeriesDataExtensionSerializer extends ExtensionJsonSerializer<SeriesData, RaceRow> {
|
||||
public static final String FIELD_FLEETS = "fleets";
|
||||
|
||||
public FleetWithRaceNamesOfSeriesExtensionSerializer(
|
||||
JsonSerializer<FleetWithRaceNames> extensionSerializer) {
|
||||
public RaceRowsOfSeriesDataExtensionSerializer(JsonSerializer<RaceRow> 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<String> raceNames = new ArrayList<String>();
|
||||
Collection<RaceCell> raceCells = new ArrayList<RaceCell>();
|
||||
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;
|
||||
+22
-14
@@ -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<Leaderboard, Series> {
|
||||
public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer<Leaderboard, SeriesData> {
|
||||
public static final String FIELD_SERIES = "series";
|
||||
|
||||
|
||||
public SeriesOfLeaderboardExtensionSerializer(JsonSerializer<Series> extensionSerializer) {
|
||||
public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer<SeriesData> extensionSerializer) {
|
||||
super(extensionSerializer);
|
||||
}
|
||||
|
||||
@@ -34,22 +35,22 @@ public class SeriesOfLeaderboardExtensionSerializer extends ExtensionJsonSeriali
|
||||
@Override
|
||||
public Object serializeExtension(Leaderboard parent) {
|
||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<Series, List<RaceColumn>>();
|
||||
Series defaultSeries = new SeriesImpl(
|
||||
"Default Series",
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null);
|
||||
seriesToRaceColumns.put(defaultSeries, Collections.<RaceColumn>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<RaceColumn>());
|
||||
}
|
||||
seriesToRaceColumns.get(raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
||||
insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
||||
} else {
|
||||
if (defaultSeries == null) {
|
||||
defaultSeries = new SeriesImpl(
|
||||
"Default Series",
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null);
|
||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||
}
|
||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||
}
|
||||
}
|
||||
@@ -61,4 +62,11 @@ public class SeriesOfLeaderboardExtensionSerializer extends ExtensionJsonSeriali
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
||||
if (!target.containsKey(newSeries)) {
|
||||
target.put(newSeries, new ArrayList<RaceColumn>());
|
||||
}
|
||||
return target.get(newSeries);
|
||||
}
|
||||
}
|
||||
-44
@@ -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<FleetWithRaces> {
|
||||
public static final String FIELD_RACES = "races";
|
||||
|
||||
private final JsonSerializer<Fleet> fleetSerializer;
|
||||
private final Filter<RaceDefinition> raceDefinitionFilter;
|
||||
private final JsonSerializer<RaceDefinition> raceDefinitionSerializer;
|
||||
|
||||
public FleetWithRacesJsonSerializer(
|
||||
JsonSerializer<Fleet> fleetSerializer,
|
||||
Filter<RaceDefinition> raceDefinitionFilter,
|
||||
JsonSerializer<RaceDefinition> 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;
|
||||
}
|
||||
|
||||
}
|
||||
-50
@@ -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<Series, FleetWithRaces> {
|
||||
public static final String FIELD_NAME = "fleets";
|
||||
|
||||
public FleetWithRacesOfSeriesExtensionSerializer(JsonSerializer<FleetWithRaces> 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<RaceDefinition> races = new ArrayList<RaceDefinition>();
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user