# added CourseAreaChangedEvent and serializers

This commit is contained in:
Lukas Niemeier committed 2013-02-02 15:01:03 +01:00
1 parent 7824b6fa91
commit e45040db9b
8 files changed
+126 -2

No files matched your search

@@ -0,0 +1,9 @@
package com.sap.sailing.domain.racecommittee;
import java.io.Serializable;
public interface RaceCommitteeCourseAreaChangedEvent extends RaceCommitteeEvent {
Serializable getCourseAreaId();
}
@@ -15,5 +15,8 @@ public interface RaceCommitteeEventFactory {
RaceCommitteeStartTimeEvent createStartTimeEvent(TimePoint timePoint, Serializable id, List<Competitor> involvedBoats, int passId, TimePoint startTime);
RaceCommitteeStartTimeEvent createStartTimeEvent(TimePoint timePoint, int passId, TimePoint startTime);
RaceCommitteeCourseAreaChangedEvent createCourseAreaChangedEvent(TimePoint timePoint, Serializable id, List<Competitor> involvedBoats, int passId, Serializable courseAreaId);
RaceCommitteeCourseAreaChangedEvent createCourseAreaChangedEvent(TimePoint timePoint, int passId, Serializable courseAreaId);
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.racecommittee.impl;
import java.io.Serializable;
import java.util.List;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.RaceCommitteeCourseAreaChangedEvent;
public class RaceCommitteeCourseAreaChangeEventImpl extends RaceCommitteeEventImpl implements
RaceCommitteeCourseAreaChangedEvent {
private static final long serialVersionUID = -3943108136024977860L;
private Serializable courseAreaId;
public RaceCommitteeCourseAreaChangeEventImpl(TimePoint pTimePoint,
Serializable pId, List<Competitor> pInvolvedBoats, int pPassId, Serializable courseAreaId) {
super(pTimePoint, pId, pInvolvedBoats, pPassId);
this.courseAreaId = courseAreaId;
}
@Override
public Serializable getCourseAreaId() {
return courseAreaId;
}
}
@@ -8,6 +8,7 @@ import java.util.UUID;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.Flags;
import com.sap.sailing.domain.racecommittee.RaceCommitteeCourseAreaChangedEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEventFactory;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
@@ -40,4 +41,18 @@ public class RaceCommitteeEventFactoryImpl implements RaceCommitteeEventFactory
return createStartTimeEvent(timePoint, UUID.randomUUID(), new ArrayList<Competitor>(), passId, startTime);
}
@Override
public RaceCommitteeCourseAreaChangedEvent createCourseAreaChangedEvent(
TimePoint timePoint, Serializable id,
List<Competitor> involvedBoats, int passId,
Serializable courseAreaId) {
return new RaceCommitteeCourseAreaChangeEventImpl(timePoint, id, involvedBoats, passId, courseAreaId);
}
@Override
public RaceCommitteeCourseAreaChangedEvent createCourseAreaChangedEvent(
TimePoint timePoint, int passId, Serializable courseAreaId) {
return createCourseAreaChangedEvent(timePoint, UUID.randomUUID(), new ArrayList<Competitor>(), passId, courseAreaId);
}
}
@@ -0,0 +1,35 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.Collections;
import java.util.UUID;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeCourseAreaChangeEventImpl;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeCourseAreaChangedEventSerializer;
public class RaceCommitteeCourseAreaChangedEventDeserializer extends
BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
TimePoint timePoint, int passId) throws JsonDeserializationException {
String courseAreaId = object.get(RaceCommitteeCourseAreaChangedEventSerializer.FIELD_COURSE_AREA_ID).toString();
UUID courseAreaUuid = null;
try {
courseAreaUuid = UUID.fromString(courseAreaId);
} catch (IllegalArgumentException iae) {
throw new JsonDeserializationException(
String.format("Field %s with %s couldn't be parsed as UUID.", RaceCommitteeCourseAreaChangedEventSerializer.FIELD_COURSE_AREA_ID, id),
iae);
}
return new RaceCommitteeCourseAreaChangeEventImpl(timePoint, id, Collections.<Competitor>emptyList(), passId, courseAreaUuid);
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeCourseAreaChangedEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
public class RaceCommitteeCourseAreaChangedEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeCourseAreaChangedEvent.class.getSimpleName();
public static final String FIELD_COURSE_AREA_ID = "courseAreaId";
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
RaceCommitteeCourseAreaChangedEvent caChangedEvent = (RaceCommitteeCourseAreaChangedEvent) object;
JSONObject result = super.serialize(caChangedEvent);
result.put(FIELD_COURSE_AREA_ID, caChangedEvent.getCourseAreaId());
return result;
}
}
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeCourseAreaChangedEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
@@ -11,12 +12,15 @@ public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitte
private final JsonSerializer<RaceCommitteeEvent> flagEventSerializer;
private final JsonSerializer<RaceCommitteeEvent> startTimeSerializer;
private final JsonSerializer<RaceCommitteeEvent> courseAreaChangedSerializer;
public RaceCommitteeEventSerializer(
JsonSerializer<RaceCommitteeEvent> flagEventSerializer,
JsonSerializer<RaceCommitteeEvent> startTimeSerializer) {
JsonSerializer<RaceCommitteeEvent> startTimeSerializer,
JsonSerializer<RaceCommitteeEvent> courseAreaChangedSerializer) {
this.flagEventSerializer = flagEventSerializer;
this.startTimeSerializer = startTimeSerializer;
this.courseAreaChangedSerializer = courseAreaChangedSerializer;
}
protected JsonSerializer<RaceCommitteeEvent> getSerializer(
@@ -25,6 +29,8 @@ public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitte
return flagEventSerializer;
} else if (event instanceof RaceCommitteeStartTimeEvent) {
return startTimeSerializer;
} else if (event instanceof RaceCommitteeCourseAreaChangedEvent) {
return courseAreaChangedSerializer;
}
throw new UnsupportedOperationException(String.format(
@@ -15,6 +15,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.RaceCommitteeCourseAreaChangedEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeEventSerializer;
@@ -34,7 +35,8 @@ public class EventTrackJsonExportServlet extends JsonExportServlet {
rcEventSerializer = new RaceCommitteeEventSerializer(
new RaceCommitteeFlagEventSerializer(),
new RaceCommitteeStartTimeEventSerializer());
new RaceCommitteeStartTimeEventSerializer(),
new RaceCommitteeCourseAreaChangedEventSerializer());
}
@Override