added the competitor list field to RaceCell and its implementation.

adapted the serializer and deserializer appropriately
This commit is contained in:
Armin Zamani committed 2013-04-02 19:49:23 +02:00
1 parent 72e5f53f39
commit 31b6b49a97
7 files changed
+132 -79

No files matched your search

@@ -40,6 +40,7 @@ import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier;
import com.sap.sailing.racecommittee.app.domain.impl.DomainFactoryImpl;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.CompetitorDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.RaceLogEventDeserializer;
/**
@@ -133,7 +134,7 @@ public class OnlineDataManager extends DataManager {
DataParser<Collection<ManagedRace>> parser = new ManagedRacesDataParser(new RaceGroupDeserializer(
boatClassDeserializer, new SeriesWithRowsDeserializer(new RaceRowDeserializer(new FleetDeserializer(
new ColorDeserializer()), new RaceCellDeserializer(
new RaceLogDeserializer(RaceLogEventDeserializer.create(domainFactory)))))));
new RaceLogDeserializer(RaceLogEventDeserializer.create(domainFactory)), new CompetitorDeserializer(domainFactory))))));
DataHandler<Collection<ManagedRace>> handler = new ManagedRacesDataHandler(this, client);
try {
@@ -1,31 +1,51 @@
package com.sap.sailing.racecommittee.app.deserialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.racegroup.RaceCell;
import com.sap.sailing.domain.base.racegroup.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.racegroup.impl.RaceCellJsonSerializer;
public class RaceCellDeserializer implements JsonDeserializer<RaceCell> {
private JsonDeserializer<RaceLog> logDeserializer;
public RaceCellDeserializer(JsonDeserializer<RaceLog> 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);
}
}
package com.sap.sailing.racecommittee.app.deserialization.impl;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.racegroup.RaceCell;
import com.sap.sailing.domain.base.racegroup.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.racegroup.impl.RaceCellJsonSerializer;
public class RaceCellDeserializer implements JsonDeserializer<RaceCell> {
private JsonDeserializer<RaceLog> logDeserializer;
private JsonDeserializer<Competitor> competitorDeserializer;
public RaceCellDeserializer(JsonDeserializer<RaceLog> logDeserializer, JsonDeserializer<Competitor> competitorDeserializer) {
this.logDeserializer = logDeserializer;
this.competitorDeserializer = competitorDeserializer;
}
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);
List<Competitor> competitors = deserializeCompetitorList(object);
return new RaceCellImpl(name, log, competitors);
}
private List<Competitor> deserializeCompetitorList(JSONObject object) throws JsonDeserializationException {
List<Competitor> competitors = new ArrayList<Competitor>();
JSONArray competitorsJson = Helpers.getNestedArraySafe(object, RaceCellJsonSerializer.FIELD_COMPETITORS);
for (Object competitorObject : competitorsJson) {
JSONObject jsonObject = (JSONObject) competitorObject;
Competitor competitor = competitorDeserializer.deserialize(jsonObject);
competitors.add(competitor);
}
return competitors;
}
}