# events serializing ids of competitors (field involvedBoats)

This commit is contained in:
Lukas Niemeier committed 2013-02-02 15:14:50 +01:00
1 parent e45040db9b
commit 061e695815
9 files changed
+73 -6

No files matched your search

@@ -16,6 +16,11 @@ public class RaceCommitteeEventTest extends BaseRaceCommitteEventTest<RaceCommit
protected final String expectedClassValue = "AllYourBaseAreBelongToUs";
private class TestRaceCommitteeEventSerializer extends BaseRaceCommitteeEventSerializer {
@SuppressWarnings("unchecked")
public TestRaceCommitteeEventSerializer() {
super(mock(JsonSerializer.class));
}
@Override
protected String getClassFieldValue() {
return expectedClassValue;
@@ -32,9 +32,10 @@ public class RaceCommitteeFlagEventSerializerTest extends BaseRaceCommitteEventT
return event;
}
@SuppressWarnings("unchecked")
@Override
protected JsonSerializer<RaceCommitteeEvent> createSerializer() {
return new RaceCommitteeFlagEventSerializer();
return new RaceCommitteeFlagEventSerializer(mock(JsonSerializer.class));
}
@Before
@@ -29,9 +29,10 @@ public class RaceCommitteeStartTimeEventSerializerTest extends BaseRaceCommitteE
return event;
}
@SuppressWarnings("unchecked")
@Override
protected JsonSerializer<RaceCommitteeEvent> createSerializer() {
return new RaceCommitteeStartTimeEventSerializer();
return new RaceCommitteeStartTimeEventSerializer(mock(JsonSerializer.class));
}
@Test
@@ -1,19 +1,27 @@
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
/// TODO serialize involved boats
public abstract class BaseRaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public static final String FIELD_CLASS = "@class";
public static final String FIELD_ID = "id";
public static final String FIELD_TIMESTAMP = "timestamp";
public static final String FIELD_PASS_ID = "passId";
public static final String FIELD_COMPETITORS = "competitors";
protected abstract String getClassFieldValue();
protected JsonSerializer<Competitor> competitorSerializer;
public BaseRaceCommitteeEventSerializer(JsonSerializer<Competitor> competitorSerializer) {
this.competitorSerializer = competitorSerializer;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
JSONObject result = new JSONObject();
@@ -21,6 +29,13 @@ public abstract class BaseRaceCommitteeEventSerializer implements JsonSerializer
result.put(FIELD_ID, object.getId().toString());
result.put(FIELD_TIMESTAMP, object.getTimePoint().asMillis());
result.put(FIELD_PASS_ID, object.getPassId());
JSONArray competitors = new JSONArray();
for (Competitor competitor : object.getInvolvedBoats()) {
competitors.add(competitorSerializer.serialize(competitor));
}
result.put(FIELD_COMPETITORS, competitors);
return result;
}
@@ -0,0 +1,18 @@
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class CompetitorIdJsonSerializer implements JsonSerializer<Competitor> {
public static final String FIELD_ID = "id";
@Override
public JSONObject serialize(Competitor object) {
JSONObject result = new JSONObject();
result.put(FIELD_ID, object.getId());
return result;
}
}
@@ -2,13 +2,21 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.racecommittee.RaceCommitteeCourseAreaChangedEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceCommitteeCourseAreaChangedEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeCourseAreaChangedEvent.class.getSimpleName();
public static final String FIELD_COURSE_AREA_ID = "courseAreaId";
public RaceCommitteeCourseAreaChangedEventSerializer(
JsonSerializer<Competitor> competitorSerializer) {
super(competitorSerializer);
}
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
@@ -2,15 +2,23 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceCommitteeFlagEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeFlagEvent.class.getSimpleName();
public static final String FIELD_UPPER_FLAG = "upperFlag";
public static final String FIELD_LOWER_FLAG = "lowerFlag";
public static final String FIELD_DISPLAYED = "displayed";
public RaceCommitteeFlagEventSerializer(
JsonSerializer<Competitor> competitorSerializer) {
super(competitorSerializer);
}
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
@@ -2,13 +2,21 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceCommitteeStartTimeEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
public static final String FIELD_START_TIME = "startTime";
public RaceCommitteeStartTimeEventSerializer(
JsonSerializer<Competitor> competitorSerializer) {
super(competitorSerializer);
}
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEventTrack;
@@ -15,6 +16,7 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.impl.JsonExportServlet;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.CompetitorIdJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeCourseAreaChangedEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
@@ -33,10 +35,11 @@ public class EventTrackJsonExportServlet extends JsonExportServlet {
public void init() throws ServletException {
super.init();
JsonSerializer<Competitor> competitorSerializer = new CompetitorIdJsonSerializer();
rcEventSerializer = new RaceCommitteeEventSerializer(
new RaceCommitteeFlagEventSerializer(),
new RaceCommitteeStartTimeEventSerializer(),
new RaceCommitteeCourseAreaChangedEventSerializer());
new RaceCommitteeFlagEventSerializer(competitorSerializer),
new RaceCommitteeStartTimeEventSerializer(competitorSerializer),
new RaceCommitteeCourseAreaChangedEventSerializer(competitorSerializer));
}
@Override