mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
# test for serialization (currently only events)
This commit is contained in:
1 parent
1e97dc8bc3
commit
b2c86be849
16 files changed
+323
-34
No files matched your search
+5
-1
@@ -4,14 +4,18 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
|
||||
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public abstract class RaceCommitteeEventSerializer 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";
|
||||
|
||||
protected abstract String getClassFieldValue();
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_CLASS, getClassFieldValue());
|
||||
result.put(FIELD_ID, object.getId().toString());
|
||||
result.put(FIELD_TIMESTAMP, object.getTimePoint().asMillis());
|
||||
result.put(FIELD_PASS_ID, object.getPassId());
|
||||
|
||||
+2
-7
@@ -5,18 +5,13 @@ import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
public class RaceCommitteeEventSerializerFactory {
|
||||
private JsonSerializer<RaceCommitteeEvent> baseEventSerializer;
|
||||
|
||||
public RaceCommitteeEventSerializerFactory() {
|
||||
this.baseEventSerializer = new RaceCommitteeEventSerializer();
|
||||
}
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(RaceCommitteeEvent event) {
|
||||
if (event instanceof RaceCommitteeFlagEvent) {
|
||||
return new RaceCommitteeFlagEventSerializer(baseEventSerializer);
|
||||
return new RaceCommitteeFlagEventSerializer();
|
||||
}
|
||||
if (event instanceof RaceCommitteeStartTimeEvent) {
|
||||
return new RaceCommitteeStartTimeEventSerializer(baseEventSerializer);
|
||||
return new RaceCommitteeStartTimeEventSerializer();
|
||||
}
|
||||
throw new UnsupportedOperationException(
|
||||
String.format(
|
||||
|
||||
+7
-11
@@ -5,30 +5,26 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
|
||||
/**
|
||||
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
|
||||
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
|
||||
*/
|
||||
public class RaceCommitteeFlagEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public class RaceCommitteeFlagEventSerializer extends RaceCommitteeEventSerializer {
|
||||
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";
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
|
||||
|
||||
public RaceCommitteeFlagEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
|
||||
this.baseSerializer = baseSerializer;
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
// We have to cast here, see class comment
|
||||
RaceCommitteeFlagEvent flagEvent = (RaceCommitteeFlagEvent) object;
|
||||
|
||||
JSONObject result = baseSerializer.serialize(flagEvent);
|
||||
JSONObject result = super.serialize(flagEvent);
|
||||
result.put(FIELD_UPPER_FLAG, flagEvent.getUpperFlag());
|
||||
result.put(FIELD_LOWER_FLAG, flagEvent.getLowerFlag());
|
||||
result.put(FIELD_DISPLAYED, flagEvent.isDisplayed());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+7
-11
@@ -1,28 +1,24 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
/**
|
||||
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
|
||||
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
|
||||
*/
|
||||
public class RaceCommitteeStartTimeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public class RaceCommitteeStartTimeEventSerializer extends RaceCommitteeEventSerializer {
|
||||
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
|
||||
public static final String FIELD_START_TIME = "startTime";
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
|
||||
|
||||
public RaceCommitteeStartTimeEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
|
||||
this.baseSerializer = baseSerializer;
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
// We have to cast here, see class comment
|
||||
RaceCommitteeStartTimeEvent startTimeEvent = (RaceCommitteeStartTimeEvent) object;
|
||||
|
||||
JSONObject result = baseSerializer.serialize(startTimeEvent);
|
||||
JSONObject result = super.serialize(startTimeEvent);
|
||||
result.put(FIELD_START_TIME, startTimeEvent.getStartTime().asMillis());
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user