# app deserializes racelog events on startup

This commit is contained in:
Lukas Niemeier committed 2013-03-03 23:26:15 +01:00
1 parent a5d0787f24
commit f5493d2a98
5 files changed
+55 -34

No files matched your search

@@ -35,6 +35,7 @@ import com.sap.sailing.racecommittee.app.deserialization.impl.VenueJsonDeseriali
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
import com.sap.sailing.racecommittee.app.domain.impl.DomainFactoryImpl;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.RaceLogEventDeserializer;
/**
* Enables accessing of data.
@@ -126,7 +127,8 @@ public class OnlineDataManager extends DataManager {
JsonDeserializer<BoatClass> boatClassDeserializer = new BoatClassJsonDeserializer(domainFactory);
DataParser<Collection<ManagedRace>> parser = new ManagedRacesDataParser(new RaceGroupDeserializer(
boatClassDeserializer, new SeriesWithRowsDeserializer(new RaceRowDeserializer(new FleetDeserializer(
new ColorDeserializer()), new RaceCellDeserializer(new RaceLogDeserializer())))));
new ColorDeserializer()), new RaceCellDeserializer(
new RaceLogDeserializer(RaceLogEventDeserializer.create()))))));
DataHandler<Collection<ManagedRace>> handler = new ManagedRacesDataHandler(this, client);
try {
@@ -1,17 +1,35 @@
package com.sap.sailing.racecommittee.app.deserialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racelog.RaceLog;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.racecommittee.app.domain.racelog.impl.PassAwareRaceLogImpl;
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.racelog.RaceLogSerializer;
public class RaceLogDeserializer implements JsonDeserializer<RaceLog> {
public RaceLog deserialize(JSONObject object)
throws JsonDeserializationException {
return new PassAwareRaceLogImpl();
}
private final JsonDeserializer<RaceLogEvent> elementDeserializer;
public RaceLogDeserializer(JsonDeserializer<RaceLogEvent> raceLogEventDeserializer) {
this.elementDeserializer = raceLogEventDeserializer;
}
public RaceLog deserialize(JSONObject object) throws JsonDeserializationException {
RaceLog result = new PassAwareRaceLogImpl();
JSONArray events = Helpers.getNestedArraySafe(object, RaceLogSerializer.FIELD_EVENTS);
for (Object eventObject : events) {
JSONObject eventJson = Helpers.toJSONObjectSafe(eventObject);
RaceLogEvent event = elementDeserializer.deserialize(eventJson);
result.add(event);
}
return result;
}
}
@@ -17,28 +17,27 @@ import com.sap.sailing.server.gateway.serialization.impl.racegroup.RaceRowJsonSe
public class RaceRowDeserializer implements JsonDeserializer<RaceRow> {
private JsonDeserializer<Fleet> fleetDeserializer;
private JsonDeserializer<RaceCell> raceCellDeserializer;
public RaceRowDeserializer(JsonDeserializer<Fleet> fleetDeserializer,
JsonDeserializer<RaceCell> raceCellDeserializer) {
this.fleetDeserializer = fleetDeserializer;
this.raceCellDeserializer = raceCellDeserializer;
}
private JsonDeserializer<Fleet> fleetDeserializer;
private JsonDeserializer<RaceCell> 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<RaceCell> races = new ArrayList<RaceCell>();
Fleet fleet = fleetDeserializer.deserialize(fleetObject);
for (Object cellObject : cellsObject) {
JSONObject cellJson = Helpers.toJSONObjectSafe(cellObject);
races.add(raceCellDeserializer.deserialize(cellJson));
}
return new RaceRowImpl(fleet, races);
}
public RaceRowDeserializer(JsonDeserializer<Fleet> fleetDeserializer,
JsonDeserializer<RaceCell> 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<RaceCell> races = new ArrayList<RaceCell>();
Fleet fleet = fleetDeserializer.deserialize(fleetObject);
for (Object cellObject : cellsObject) {
JSONObject cellJson = Helpers.toJSONObjectSafe(cellObject);
races.add(raceCellDeserializer.deserialize(cellJson));
}
return new RaceRowImpl(fleet, races);
}
}