# 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:
Lukas Niemeier committed 2013-02-09 19:02:46 +01:00
1 parent 0f6b592530
commit 1fefd2ea17
55 files changed
+603 -607

No files matched your search

@@ -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,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,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());
@@ -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;
}
}
@@ -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;
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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;
@@ -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);
}
}
@@ -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;
}
}
@@ -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;
}
}