mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-01 01:44:08 +00:00
Merge branch 'master' into permission-vertical
Change-Id: I34c3acf3abc16da5f37319b0e128a567fda24ab2
This commit is contained in:
commit
4819b285ae
233 files changed
+2555
-2829
No files matched your search
+11
-2
@@ -4,6 +4,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
@@ -26,8 +27,16 @@ public class CompetitorAndBoatJsonDeserializer implements JsonDeserializer<Pair<
|
||||
|
||||
@Override
|
||||
public Pair<Competitor, Boat> deserialize(JSONObject competitorAndBoatJsonObject) throws JsonDeserializationException {
|
||||
Competitor competitor = competitorDeserializer.deserialize(Helpers.getNestedObjectSafe(competitorAndBoatJsonObject, CompetitorAndBoatJsonSerializer.FIELD_COMPETITOR));
|
||||
Boat boat = boatDeserializer.deserialize(Helpers.getNestedObjectSafe(competitorAndBoatJsonObject, CompetitorAndBoatJsonSerializer.FIELD_BOAT));
|
||||
final Competitor competitor;
|
||||
final Boat boat;
|
||||
if (competitorAndBoatJsonObject.containsKey(CompetitorAndBoatJsonSerializer.FIELD_COMPETITOR)) {
|
||||
competitor = competitorDeserializer.deserialize(Helpers.getNestedObjectSafe(competitorAndBoatJsonObject, CompetitorAndBoatJsonSerializer.FIELD_COMPETITOR));
|
||||
boat = boatDeserializer.deserialize(Helpers.getNestedObjectSafe(competitorAndBoatJsonObject, CompetitorAndBoatJsonSerializer.FIELD_BOAT));
|
||||
} else {
|
||||
final CompetitorWithBoat competitorWithBoat = (CompetitorWithBoat) competitorDeserializer.deserialize(competitorAndBoatJsonObject);
|
||||
competitor = competitorWithBoat;
|
||||
boat = competitorWithBoat.getBoat();
|
||||
}
|
||||
return new Pair<Competitor, Boat>(competitor, boat);
|
||||
}
|
||||
}
|
||||
+41
-13
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.URI;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
@@ -11,6 +12,7 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
@@ -21,23 +23,24 @@ import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.RGBColor;
|
||||
|
||||
public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor> {
|
||||
private final CompetitorFactory competitorFactory;
|
||||
private final CompetitorFactory competitorWithBoatFactory;
|
||||
private final JsonDeserializer<DynamicTeam> teamJsonDeserializer;
|
||||
|
||||
private final JsonDeserializer<DynamicBoat> boatJsonDeserializer;
|
||||
private static final Logger logger = Logger.getLogger(CompetitorJsonDeserializer.class.getName());
|
||||
|
||||
public static CompetitorJsonDeserializer create(SharedDomainFactory baseDomainFactory) {
|
||||
return new CompetitorJsonDeserializer(baseDomainFactory, new TeamJsonDeserializer(new PersonJsonDeserializer(
|
||||
new NationalityJsonDeserializer(baseDomainFactory))));
|
||||
new NationalityJsonDeserializer(baseDomainFactory))), new BoatJsonDeserializer(baseDomainFactory, new BoatClassJsonDeserializer(baseDomainFactory)));
|
||||
}
|
||||
|
||||
public CompetitorJsonDeserializer(CompetitorFactory competitorFactory) {
|
||||
this(competitorFactory, null);
|
||||
public CompetitorJsonDeserializer(CompetitorFactory competitorWithBoatFactory) {
|
||||
this(competitorWithBoatFactory, null, /* boatDeserializer */ null);
|
||||
}
|
||||
|
||||
public CompetitorJsonDeserializer(CompetitorFactory competitorFactory, JsonDeserializer<DynamicTeam> teamJsonDeserializer) {
|
||||
this.competitorFactory = competitorFactory;
|
||||
public CompetitorJsonDeserializer(CompetitorFactory competitorWithBoatFactory, JsonDeserializer<DynamicTeam> teamJsonDeserializer, JsonDeserializer<DynamicBoat> boatDeserializer) {
|
||||
this.competitorWithBoatFactory = competitorWithBoatFactory;
|
||||
this.teamJsonDeserializer = teamJsonDeserializer;
|
||||
this.boatJsonDeserializer = boatDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -66,7 +69,6 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
||||
logger.warning("Illegal flag image URI " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
final Color displayColor;
|
||||
if (displayColorAsString == null || displayColorAsString.isEmpty()) {
|
||||
displayColor = null;
|
||||
@@ -78,16 +80,42 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
||||
team = teamJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_TEAM));
|
||||
}
|
||||
final DynamicBoat boat = getBoat(object);
|
||||
final Double timeOnTimeFactor = (Double) object.get(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR);
|
||||
final Double timeOnDistanceAllowanceInSecondsPerNauticalMile = (Double) object
|
||||
.get(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE);
|
||||
Competitor competitor = competitorFactory.getOrCreateCompetitor(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag);
|
||||
return competitor;
|
||||
final Competitor result;
|
||||
if (boat == null) {
|
||||
result = competitorWithBoatFactory.getOrCreateCompetitor(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag);
|
||||
} else {
|
||||
result = competitorWithBoatFactory.getOrCreateCompetitorWithBoat(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag, boat);
|
||||
}
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
throw new JsonDeserializationException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks for the {@link CompetitorJsonConstants#FIELD_BOAT} field and if present and there is a
|
||||
* {@link #boatJsonDeserializer} set, the boat is deserialized from that field and returned; otherwise, {@code null}
|
||||
* is returned.
|
||||
*/
|
||||
protected DynamicBoat getBoat(JSONObject object) throws ClassNotFoundException, NoSuchMethodException,
|
||||
InstantiationException, IllegalAccessException, InvocationTargetException, JsonDeserializationException {
|
||||
final DynamicBoat boat;
|
||||
if (boatJsonDeserializer != null && object.get(CompetitorJsonConstants.FIELD_BOAT) != null) {
|
||||
boat = boatJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_BOAT));
|
||||
} else {
|
||||
boat = null;
|
||||
}
|
||||
return boat;
|
||||
}
|
||||
}
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.net.URI;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CompetitorFactory;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.RGBColor;
|
||||
|
||||
public class CompetitorWithBoatJsonDeserializer implements JsonDeserializer<CompetitorWithBoat> {
|
||||
private final CompetitorFactory competitorWithBoatFactory;
|
||||
private final JsonDeserializer<DynamicTeam> teamJsonDeserializer;
|
||||
private final JsonDeserializer<DynamicBoat> boatJsonDeserializer;
|
||||
private static final Logger logger = Logger.getLogger(CompetitorWithBoatJsonDeserializer.class.getName());
|
||||
|
||||
public static CompetitorWithBoatJsonDeserializer create(SharedDomainFactory baseDomainFactory) {
|
||||
return new CompetitorWithBoatJsonDeserializer(baseDomainFactory, new TeamJsonDeserializer(new PersonJsonDeserializer(
|
||||
new NationalityJsonDeserializer(baseDomainFactory))), new BoatJsonDeserializer(baseDomainFactory, new BoatClassJsonDeserializer(baseDomainFactory)));
|
||||
}
|
||||
|
||||
public CompetitorWithBoatJsonDeserializer(CompetitorFactory competitorWithBoatFactory) {
|
||||
this(competitorWithBoatFactory, null, /* boatDeserializer */ null);
|
||||
}
|
||||
|
||||
public CompetitorWithBoatJsonDeserializer(CompetitorFactory competitorWithBoatFactory, JsonDeserializer<DynamicTeam> teamJsonDeserializer, JsonDeserializer<DynamicBoat> boatDeserializer) {
|
||||
this.competitorWithBoatFactory = competitorWithBoatFactory;
|
||||
this.teamJsonDeserializer = teamJsonDeserializer;
|
||||
this.boatJsonDeserializer = boatDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorWithBoat deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
Serializable competitorId = (Serializable) object.get(CompetitorJsonSerializer.FIELD_ID);
|
||||
try {
|
||||
Class<?> idClass = Class.forName((String) object.get(CompetitorJsonConstants.FIELD_ID_TYPE));
|
||||
if (Number.class.isAssignableFrom(idClass)) {
|
||||
Constructor<?> constructorFromString = idClass.getConstructor(String.class);
|
||||
competitorId = (Serializable) constructorFromString.newInstance(competitorId.toString());
|
||||
} else if (UUID.class.isAssignableFrom(idClass)) {
|
||||
competitorId = Helpers.tryUuidConversion(competitorId);
|
||||
}
|
||||
String name = (String) object.get(CompetitorJsonConstants.FIELD_NAME);
|
||||
String shortName = (String) object.get(CompetitorJsonConstants.FIELD_SHORT_NAME);
|
||||
String displayColorAsString = (String) object.get(CompetitorJsonConstants.FIELD_DISPLAY_COLOR);
|
||||
String email = (String) object.get(CompetitorJsonConstants.FIELD_EMAIL);
|
||||
String searchTag = (String) object.get(CompetitorJsonConstants.FIELD_SEARCHTAG);
|
||||
|
||||
URI flagImageURI = null;
|
||||
String flagImageURIAsString = (String) object.get(CompetitorJsonConstants.FIELD_FLAG_IMAGE_URI);
|
||||
if (flagImageURIAsString != null) {
|
||||
try {
|
||||
flagImageURI = URI.create(flagImageURIAsString);
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.warning("Illegal flag image URI " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
final Color displayColor;
|
||||
if (displayColorAsString == null || displayColorAsString.isEmpty()) {
|
||||
displayColor = null;
|
||||
} else {
|
||||
displayColor = new RGBColor(displayColorAsString);
|
||||
}
|
||||
DynamicTeam team = null;
|
||||
DynamicBoat boat = null;
|
||||
if (teamJsonDeserializer != null && object.get(CompetitorJsonConstants.FIELD_TEAM) != null) {
|
||||
team = teamJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_TEAM));
|
||||
}
|
||||
if (boatJsonDeserializer != null && object.get(CompetitorJsonConstants.FIELD_BOAT) != null) {
|
||||
boat = boatJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_BOAT));
|
||||
String sailID = (String) object.get(CompetitorJsonConstants.FIELD_SAIL_ID);
|
||||
boat.setSailId(sailID);
|
||||
}
|
||||
final Double timeOnTimeFactor = (Double) object.get(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR);
|
||||
final Double timeOnDistanceAllowanceInSecondsPerNauticalMile = (Double) object
|
||||
.get(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE);
|
||||
CompetitorWithBoat competitorWithBoat = competitorWithBoatFactory.getOrCreateCompetitorWithBoat(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag, boat);
|
||||
|
||||
return competitorWithBoat;
|
||||
} catch (Exception e) {
|
||||
throw new JsonDeserializationException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
-79
@@ -2,32 +2,21 @@ package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.net.URI;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatFactory;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.RGBColor;
|
||||
|
||||
public class CompetitorWithBoatRefJsonDeserializer implements JsonDeserializer<Competitor> {
|
||||
private final CompetitorFactory competitorFactory;
|
||||
public class CompetitorWithBoatRefJsonDeserializer extends CompetitorJsonDeserializer {
|
||||
private final BoatFactory boatFactory;
|
||||
private final JsonDeserializer<DynamicTeam> teamJsonDeserializer;
|
||||
private static final Logger logger = Logger.getLogger(CompetitorWithBoatRefJsonDeserializer.class.getName());
|
||||
|
||||
public static CompetitorWithBoatRefJsonDeserializer create(SharedDomainFactory baseDomainFactory) {
|
||||
return new CompetitorWithBoatRefJsonDeserializer(baseDomainFactory, baseDomainFactory, new TeamJsonDeserializer(new PersonJsonDeserializer(
|
||||
@@ -39,77 +28,29 @@ public class CompetitorWithBoatRefJsonDeserializer implements JsonDeserializer<C
|
||||
}
|
||||
|
||||
public CompetitorWithBoatRefJsonDeserializer(CompetitorFactory competitorFactory, BoatFactory boatFactory, JsonDeserializer<DynamicTeam> teamJsonDeserializer) {
|
||||
this.competitorFactory = competitorFactory;
|
||||
super(competitorFactory, teamJsonDeserializer, /* boat deserializer */ null);
|
||||
this.boatFactory = boatFactory;
|
||||
this.teamJsonDeserializer = teamJsonDeserializer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks for {@link CompetitorJsonConstants#FIELD_BOAT_ID} in the JSON {@code object}. If found, the boat is looked
|
||||
* up in the {@link #boatFactory} and the lookup result is returned; otherwise, {@code null} is returned.
|
||||
*/
|
||||
@Override
|
||||
public Competitor deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
Serializable competitorId = (Serializable) object.get(CompetitorJsonSerializer.FIELD_ID);
|
||||
try {
|
||||
{
|
||||
Class<?> competitorIdClass = Class.forName((String) object.get(CompetitorJsonConstants.FIELD_ID_TYPE));
|
||||
if (Number.class.isAssignableFrom(competitorIdClass)) {
|
||||
Constructor<?> constructorFromString = competitorIdClass.getConstructor(String.class);
|
||||
competitorId = (Serializable) constructorFromString.newInstance(competitorId.toString());
|
||||
} else if (UUID.class.isAssignableFrom(competitorIdClass)) {
|
||||
competitorId = Helpers.tryUuidConversion(competitorId);
|
||||
}
|
||||
protected DynamicBoat getBoat(JSONObject object) throws ClassNotFoundException, NoSuchMethodException,
|
||||
InstantiationException, IllegalAccessException, InvocationTargetException {
|
||||
// if we find a boat identifier we try to find the boat with the boatfactory
|
||||
Serializable boatId = (Serializable) object.get(CompetitorJsonConstants.FIELD_BOAT_ID);
|
||||
if (boatId != null) {
|
||||
Class<?> boatIdClass = Class.forName((String) object.get(CompetitorJsonConstants.FIELD_BOAT_ID_TYPE));
|
||||
if (Number.class.isAssignableFrom(boatIdClass)) {
|
||||
Constructor<?> constructorFromString = boatIdClass.getConstructor(String.class);
|
||||
boatId = (Serializable) constructorFromString.newInstance(boatId.toString());
|
||||
} else if (UUID.class.isAssignableFrom(boatIdClass)) {
|
||||
boatId = Helpers.tryUuidConversion(boatId);
|
||||
}
|
||||
String name = (String) object.get(CompetitorJsonConstants.FIELD_NAME);
|
||||
String shortName = (String) object.get(CompetitorJsonConstants.FIELD_SHORT_NAME);
|
||||
String displayColorAsString = (String) object.get(CompetitorJsonConstants.FIELD_DISPLAY_COLOR);
|
||||
String email = (String) object.get(CompetitorJsonConstants.FIELD_EMAIL);
|
||||
String searchTag = (String) object.get(CompetitorJsonConstants.FIELD_SEARCHTAG);
|
||||
URI flagImageURI = null;
|
||||
String flagImageURIAsString = (String) object.get(CompetitorJsonConstants.FIELD_FLAG_IMAGE_URI);
|
||||
if (flagImageURIAsString != null) {
|
||||
try {
|
||||
flagImageURI = URI.create(flagImageURIAsString);
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.warning("Illegal flag image URI " + e.getMessage());
|
||||
}
|
||||
}
|
||||
final Color displayColor;
|
||||
if (displayColorAsString == null || displayColorAsString.isEmpty()) {
|
||||
displayColor = null;
|
||||
} else {
|
||||
displayColor = new RGBColor(displayColorAsString);
|
||||
}
|
||||
DynamicTeam team = null;
|
||||
if (teamJsonDeserializer != null && object.get(CompetitorJsonConstants.FIELD_TEAM) != null) {
|
||||
team = teamJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_TEAM));
|
||||
}
|
||||
final Double timeOnTimeFactor = (Double) object.get(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR);
|
||||
final Double timeOnDistanceAllowanceInSecondsPerNauticalMile = (Double) object
|
||||
.get(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE);
|
||||
// if we find a boat identifier we try to find the boat with the boatfactory
|
||||
Serializable boatId = (Serializable) object.get(CompetitorJsonConstants.FIELD_BOAT_ID);
|
||||
if (boatId != null) {
|
||||
Class<?> boatIdClass = Class.forName((String) object.get(CompetitorJsonConstants.FIELD_BOAT_ID_TYPE));
|
||||
if (Number.class.isAssignableFrom(boatIdClass)) {
|
||||
Constructor<?> constructorFromString = boatIdClass.getConstructor(String.class);
|
||||
boatId = (Serializable) constructorFromString.newInstance(boatId.toString());
|
||||
} else if (UUID.class.isAssignableFrom(boatIdClass)) {
|
||||
boatId = Helpers.tryUuidConversion(boatId);
|
||||
}
|
||||
}
|
||||
final Boat existingBoat = boatId != null ? boatFactory.getExistingBoatById(boatId) : null;
|
||||
if (existingBoat != null) {
|
||||
return competitorFactory.getOrCreateCompetitorWithBoat(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag, (DynamicBoat) existingBoat);
|
||||
} else {
|
||||
return competitorFactory.getOrCreateCompetitor(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
new MillisecondsDurationImpl((long) (timeOnDistanceAllowanceInSecondsPerNauticalMile*1000)), searchTag);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new JsonDeserializationException(e);
|
||||
}
|
||||
final DynamicBoat existingBoat = (DynamicBoat) (boatId != null ? boatFactory.getExistingBoatById(boatId) : null);
|
||||
return existingBoat;
|
||||
}
|
||||
}
|
||||
-3
@@ -85,13 +85,10 @@ public class LegacyCompetitorWithContainedBoatJsonDeserializer implements JsonDe
|
||||
if (boatJsonDeserializer != null && object.get(CompetitorJsonConstants.FIELD_BOAT) != null) {
|
||||
boat = boatJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonConstants.FIELD_BOAT));
|
||||
String sailID = (String) object.get(CompetitorJsonConstants.FIELD_SAIL_ID);
|
||||
boat.setSailId(sailID);
|
||||
}
|
||||
final Double timeOnTimeFactor = (Double) object.get(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR);
|
||||
final Double timeOnDistanceAllowanceInSecondsPerNauticalMile = (Double) object
|
||||
.get(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE);
|
||||
|
||||
CompetitorWithBoat competitorWithBoat = new CompetitorWithBoatImpl(competitorId, name, shortName, displayColor, email,
|
||||
flagImageURI, team, timeOnTimeFactor,
|
||||
timeOnDistanceAllowanceInSecondsPerNauticalMile == null ? null :
|
||||
|
||||
+1
-4
@@ -4,7 +4,6 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.common.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.SmartphoneUUIDIdentifier;
|
||||
@@ -17,7 +16,6 @@ import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeseri
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.WaypointDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CompetitorJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CompetitorWithBoatJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DeviceIdentifierJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.PositionJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.WindJsonDeserializer;
|
||||
@@ -58,7 +56,6 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
public static RaceLogEventDeserializer create(SharedDomainFactory domainFactory,
|
||||
JsonDeserializer<DeviceIdentifier> deviceDeserializer) {
|
||||
JsonDeserializer<Competitor> competitorDeserializer = CompetitorJsonDeserializer.create(domainFactory);
|
||||
JsonDeserializer<CompetitorWithBoat> competitorWithBoatDeserializer = CompetitorWithBoatJsonDeserializer.create(domainFactory);
|
||||
return new RaceLogEventDeserializer(
|
||||
new RaceLogFlagEventDeserializer(competitorDeserializer),
|
||||
new RaceLogStartTimeEventDeserializer(competitorDeserializer),
|
||||
@@ -82,7 +79,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
new RaceLogDenoteForTrackingEventDeserializer(competitorDeserializer, domainFactory),
|
||||
new RaceLogStartTrackingEventDeserializer(competitorDeserializer),
|
||||
new RaceLogRevokeEventDeserializer(competitorDeserializer),
|
||||
new RaceLogRegisterCompetitorEventDeserializer(competitorDeserializer, competitorWithBoatDeserializer, BoatJsonDeserializer.create(domainFactory)),
|
||||
new RaceLogRegisterCompetitorEventDeserializer(competitorDeserializer, BoatJsonDeserializer.create(domainFactory)),
|
||||
new RaceLogAdditionalScoringInformationEventDeserializer(competitorDeserializer),
|
||||
new RaceLogFixedMarkPassingEventDeserializer(competitorDeserializer),
|
||||
new RaceLogSuppressedMarkPassingsEventDeserializer(competitorDeserializer),
|
||||
|
||||
+12
-17
@@ -10,7 +10,6 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatJsonDeserializer;
|
||||
@@ -18,30 +17,26 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRegister
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class RaceLogRegisterCompetitorEventDeserializer extends BaseRaceLogEventDeserializer {
|
||||
private final JsonDeserializer<CompetitorWithBoat> competitorWithBoatDeserializer;
|
||||
private final BoatJsonDeserializer boatDeserializer;
|
||||
|
||||
public RaceLogRegisterCompetitorEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer,
|
||||
JsonDeserializer<CompetitorWithBoat> competitorWithBoatDeserializer, BoatJsonDeserializer boatDeserializer) {
|
||||
BoatJsonDeserializer boatDeserializer) {
|
||||
super(competitorDeserializer);
|
||||
this.competitorWithBoatDeserializer = competitorWithBoatDeserializer;
|
||||
this.boatDeserializer = boatDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, AbstractLogEventAuthor author, TimePoint timePoint, int passId, List<Competitor> competitors) throws JsonDeserializationException {
|
||||
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt,
|
||||
AbstractLogEventAuthor author, TimePoint timePoint, int passId, List<Competitor> competitors)
|
||||
throws JsonDeserializationException {
|
||||
assert competitors.size() == 1 : "Expected exactly one competitor for RegisterCompetitorEvent";
|
||||
JSONObject competitorWithBoatObject = (JSONObject) object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_COMPETITOR_WITHBOAT);
|
||||
if (competitorWithBoatObject != null) {
|
||||
CompetitorWithBoat competitorWithBoat = competitorWithBoatDeserializer.deserialize(competitorWithBoatObject);
|
||||
return new RaceLogRegisterCompetitorEventImpl(createdAt, timePoint, author, id, passId, competitorWithBoat);
|
||||
} else {
|
||||
JSONObject competitorObject = (JSONObject) object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_COMPETITOR);
|
||||
JSONObject boatObject = (JSONObject) object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_BOAT);
|
||||
Competitor competitor = competitorDeserializer.deserialize(competitorObject);
|
||||
Boat boat = boatDeserializer.deserialize(boatObject);
|
||||
return new RaceLogRegisterCompetitorEventImpl(createdAt, timePoint, author, id, passId, competitor, boat);
|
||||
}
|
||||
JSONObject competitorObject = (JSONObject) (object
|
||||
.get(RaceLogRegisterCompetitorEventSerializer.FIELD_COMPETITOR_WITHBOAT) != null
|
||||
? object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_COMPETITOR_WITHBOAT)
|
||||
: object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_COMPETITOR));
|
||||
JSONObject boatObject = (JSONObject) object.get(RaceLogRegisterCompetitorEventSerializer.FIELD_BOAT);
|
||||
Competitor competitor = competitorDeserializer.deserialize(competitorObject);
|
||||
Boat boat = boatDeserializer.deserialize(boatObject);
|
||||
return new RaceLogRegisterCompetitorEventImpl(createdAt, timePoint, author, id, passId, competitor, boat);
|
||||
}
|
||||
|
||||
}
|
||||
+32
-8
@@ -1,9 +1,12 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
|
||||
@@ -11,6 +14,8 @@ import com.sap.sse.common.Util.Pair;
|
||||
* Serializes a competitor AND a boat as a kind of pair (e.g. in the context of a race)
|
||||
*/
|
||||
public class CompetitorAndBoatJsonSerializer implements JsonSerializer<Pair<Competitor, Boat>> {
|
||||
private static final Logger logger = Logger.getLogger(CompetitorAndBoatJsonSerializer.class.getName());
|
||||
|
||||
private final JsonSerializer<Competitor> competitorJsonSerializer;
|
||||
private final JsonSerializer<Boat> boatJsonSerializer;
|
||||
|
||||
@@ -28,14 +33,33 @@ public class CompetitorAndBoatJsonSerializer implements JsonSerializer<Pair<Comp
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(Pair<Competitor, Boat> competitorAndBoat) {
|
||||
JSONObject serializedCompetitorAndBoat = new JSONObject();
|
||||
|
||||
final JSONObject result;
|
||||
JSONObject serializedCompetitor = competitorJsonSerializer.serialize(competitorAndBoat.getA());
|
||||
JSONObject serializedBoat = boatJsonSerializer.serialize(competitorAndBoat.getB());
|
||||
|
||||
serializedCompetitorAndBoat.put(FIELD_COMPETITOR, serializedCompetitor);
|
||||
serializedCompetitorAndBoat.put(FIELD_BOAT, serializedBoat);
|
||||
|
||||
return serializedCompetitorAndBoat;
|
||||
// for compatibility, write a CompetitorWithBoat in the same format that a Competitor use to be
|
||||
// serialized; only if the competitor has no boat, use the new format. The de-serializer will be
|
||||
// able to distinguish based on the presence of the top-level FIELD_COMPETITOR field.
|
||||
final boolean compatibilityMode;
|
||||
if (competitorAndBoat.getA().hasBoat()) {
|
||||
final CompetitorWithBoat competitorWithBoat = (CompetitorWithBoat) competitorAndBoat.getA();
|
||||
final Boat boat = competitorWithBoat.getBoat();
|
||||
if (boat != competitorAndBoat.getB()) {
|
||||
logger.warning("Competitor "+competitorWithBoat+" has boat "+boat+" which is different from the boat to be serialized with it ("+
|
||||
competitorAndBoat.getB());
|
||||
compatibilityMode = false;
|
||||
} else {
|
||||
compatibilityMode = true;
|
||||
}
|
||||
} else {
|
||||
compatibilityMode = false;
|
||||
}
|
||||
if (compatibilityMode) {
|
||||
result = serializedCompetitor;
|
||||
} else {
|
||||
JSONObject serializedBoat = boatJsonSerializer.serialize(competitorAndBoat.getB());
|
||||
result = new JSONObject();
|
||||
result.put(FIELD_COMPETITOR, serializedCompetitor);
|
||||
result.put(FIELD_BOAT, serializedBoat);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+34
-4
@@ -7,7 +7,9 @@ import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
@@ -15,21 +17,46 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
|
||||
/**
|
||||
* Serializes a {@link Competitor} or {@link CompetitorWithBoat} object. If a {@link CompetitorWithBoat} object,
|
||||
* the {@link CompetitorJsonConstants#FIELD_BOAT} field will be filled with a boat document as serialized by the
|
||||
* {@link BoatJsonSerializer}. For {@link Competitor} objects with {@link Competitor#hasBoat()}{@code == false} the
|
||||
* {@link CompetitorJsonConstants#FIELD_BOAT} field will not be set. This can also be used by the corresponding
|
||||
* de-serializer to identify which class implementing the {@link Competitor} interface to instantiate.
|
||||
*/
|
||||
public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
public static final String FIELD_ID = "id";
|
||||
|
||||
private final JsonSerializer<Team> teamJsonSerializer;
|
||||
private final JsonSerializer<Boat> boatJsonSerializer;
|
||||
|
||||
/**
|
||||
* Creates a serializer for {@link Competitor} objects which by default, if the competitor
|
||||
* {@link Competitor#hasBoat() has a boat attached} will serialize the boat in the
|
||||
* {@link CompetitorJsonConstants#FIELD_BOAT} field of the resulting document. See {@link #create(boolean)} for a
|
||||
* variant where callers can choose whether the {@link CompetitorJsonConstants#FIELD_BOAT} field shall be filled or
|
||||
* not.
|
||||
*/
|
||||
public static CompetitorJsonSerializer create() {
|
||||
return new CompetitorJsonSerializer(TeamJsonSerializer.create());
|
||||
return create(/* serialize boat */ true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a serializer for {@link Competitor} objects which if {@code serializeBoat==true} and if the competitor
|
||||
* {@link Competitor#hasBoat() has a boat attached} will serialize the boat in the
|
||||
* {@link CompetitorJsonConstants#FIELD_BOAT} field of the resulting document.
|
||||
*/
|
||||
public static CompetitorJsonSerializer create(boolean serializeBoat) {
|
||||
return new CompetitorJsonSerializer(TeamJsonSerializer.create(), serializeBoat?BoatJsonSerializer.create():null);
|
||||
}
|
||||
|
||||
public CompetitorJsonSerializer() {
|
||||
this(null);
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
public CompetitorJsonSerializer(JsonSerializer<Team> teamJsonSerializer) {
|
||||
public CompetitorJsonSerializer(JsonSerializer<Team> teamJsonSerializer, JsonSerializer<Boat> boatJsonSerializer) {
|
||||
this.teamJsonSerializer = teamJsonSerializer;
|
||||
this.boatJsonSerializer = boatJsonSerializer;
|
||||
}
|
||||
|
||||
public static JSONObject getCompetitorIdQuery(Competitor competitor) {
|
||||
@@ -68,6 +95,9 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
if (teamJsonSerializer != null) {
|
||||
result.put(CompetitorJsonConstants.FIELD_TEAM, teamJsonSerializer.serialize(competitor.getTeam()));
|
||||
}
|
||||
if (boatJsonSerializer != null && competitor.hasBoat()) {
|
||||
result.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(((CompetitorWithBoat) competitor).getBoat()));
|
||||
}
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR, competitor.getTimeOnTimeFactor());
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE,
|
||||
competitor.getTimeOnDistanceAllowancePerNauticalMile() == null ? null :
|
||||
@@ -75,7 +105,7 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
return result;
|
||||
}
|
||||
|
||||
protected Color getColor(Competitor competitor ) {
|
||||
protected Color getColor(Competitor competitor) {
|
||||
return competitor.getColor();
|
||||
}
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class CompetitorWithBoatJsonSerializer implements JsonSerializer<CompetitorWithBoat> {
|
||||
private final JsonSerializer<Boat> boatJsonSerializer;
|
||||
private final JsonSerializer<Competitor> competitorJsonSerializer;
|
||||
|
||||
public static CompetitorWithBoatJsonSerializer create() {
|
||||
return new CompetitorWithBoatJsonSerializer(CompetitorJsonSerializer.create(), BoatJsonSerializer.create());
|
||||
}
|
||||
|
||||
public CompetitorWithBoatJsonSerializer(JsonSerializer<Competitor> competitorJsonSerializer, JsonSerializer<Boat> boatJsonSerializer) {
|
||||
this.competitorJsonSerializer = competitorJsonSerializer;
|
||||
this.boatJsonSerializer = boatJsonSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(CompetitorWithBoat competitor) {
|
||||
JSONObject serializedCompetitor = competitorJsonSerializer.serialize(competitor);
|
||||
serializedCompetitor.put(CompetitorJsonConstants.FIELD_SAIL_ID, competitor.getBoat() == null ? "" : competitor.getBoat().getSailID());
|
||||
if (boatJsonSerializer != null && competitor.getBoat() != null) {
|
||||
serializedCompetitor.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(competitor.getBoat()));
|
||||
}
|
||||
return serializedCompetitor;
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -12,7 +12,7 @@ public class CompetitorWithBoatRefJsonSerializer implements JsonSerializer<Compe
|
||||
private final JsonSerializer<Competitor> competitorJsonSerializer;
|
||||
|
||||
public static CompetitorWithBoatRefJsonSerializer create() {
|
||||
return new CompetitorWithBoatRefJsonSerializer(CompetitorJsonSerializer.create());
|
||||
return new CompetitorWithBoatRefJsonSerializer(CompetitorJsonSerializer.create(/* serialize boat */ false));
|
||||
}
|
||||
|
||||
public CompetitorWithBoatRefJsonSerializer(JsonSerializer<Competitor> competitorJsonSerializer) {
|
||||
@@ -22,7 +22,6 @@ public class CompetitorWithBoatRefJsonSerializer implements JsonSerializer<Compe
|
||||
@Override
|
||||
public JSONObject serialize(CompetitorWithBoat competitor) {
|
||||
JSONObject serializedCompetitor = competitorJsonSerializer.serialize(competitor);
|
||||
|
||||
Boat boat = competitor.getBoat();
|
||||
if (boat != null) {
|
||||
serializedCompetitor.put(CompetitorJsonConstants.FIELD_BOAT_ID_TYPE, boat.getId().getClass().getName());
|
||||
|
||||
+1
-2
@@ -37,7 +37,6 @@ import com.sap.sailing.server.gateway.serialization.coursedata.impl.GateJsonSeri
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorWithBoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer;
|
||||
@@ -74,7 +73,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
new RaceLogDenoteForTrackingEventSerializer(competitorSerializer),
|
||||
new RaceLogStartTrackingEventSerializer(competitorSerializer),
|
||||
new RaceLogRevokeEventSerializer(competitorSerializer),
|
||||
new RaceLogRegisterCompetitorEventSerializer(competitorSerializer, CompetitorWithBoatJsonSerializer.create(), BoatJsonSerializer.create()),
|
||||
new RaceLogRegisterCompetitorEventSerializer(competitorSerializer, BoatJsonSerializer.create()),
|
||||
new RaceLogAdditionalScoringInformationSerializer(competitorSerializer),
|
||||
new RaceLogFixedMarkPassingEventSerializer(competitorSerializer),
|
||||
new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer),
|
||||
|
||||
+15
-14
@@ -6,24 +6,32 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorWithBoatJsonSerializer;
|
||||
|
||||
public class RaceLogRegisterCompetitorEventSerializer extends BaseRaceLogEventSerializer {
|
||||
public static final String VALUE_CLASS = RegisterCompetitorEvent.class.getSimpleName();
|
||||
|
||||
/**
|
||||
* The following had been introduced temporarily during the development and initial deployment of
|
||||
* bug2822. However, during subsequent cleanup activities the distinction between competitors with
|
||||
* and without boat happens through the presence or absence, respectively, of the {@link CompetitorJsonConstants#FIELD_BOAT}
|
||||
* field in the JSON document. Hence, a separate field is no longer needed. Only for backward compatibility
|
||||
* for the rare case that some installation produced events with this field name does the field need to
|
||||
* be preserved.
|
||||
*/
|
||||
public static final String FIELD_COMPETITOR_WITHBOAT = "competitorWithBoat";
|
||||
|
||||
public static final String FIELD_COMPETITOR = "competitor";
|
||||
|
||||
public static final String FIELD_BOAT = "boat";
|
||||
|
||||
private final CompetitorWithBoatJsonSerializer competitorWithBoatSerializer;
|
||||
private final BoatJsonSerializer boatSerializer;
|
||||
|
||||
public RaceLogRegisterCompetitorEventSerializer(JsonSerializer<Competitor> competitorSerializer,
|
||||
CompetitorWithBoatJsonSerializer competitorWithBoatSerializer, BoatJsonSerializer boatSerializer) {
|
||||
BoatJsonSerializer boatSerializer) {
|
||||
super(competitorSerializer);
|
||||
this.competitorWithBoatSerializer = competitorWithBoatSerializer;
|
||||
this.boatSerializer = boatSerializer;
|
||||
}
|
||||
|
||||
@@ -35,16 +43,9 @@ public class RaceLogRegisterCompetitorEventSerializer extends BaseRaceLogEventSe
|
||||
@Override
|
||||
public JSONObject serialize(RaceLogEvent object) {
|
||||
RaceLogRegisterCompetitorEvent registerCompetitorEvent = (RaceLogRegisterCompetitorEvent) object;
|
||||
|
||||
JSONObject result = super.serialize(registerCompetitorEvent);
|
||||
if (registerCompetitorEvent.getCompetitor().hasBoat()) {
|
||||
CompetitorWithBoat competitorWithBoat = (CompetitorWithBoat) registerCompetitorEvent.getCompetitor();
|
||||
result.put(FIELD_COMPETITOR_WITHBOAT, competitorWithBoatSerializer.serialize(competitorWithBoat));
|
||||
} else {
|
||||
result.put(FIELD_COMPETITOR, competitorSerializer.serialize(registerCompetitorEvent.getCompetitor()));
|
||||
result.put(FIELD_BOAT, boatSerializer.serialize(registerCompetitorEvent.getBoat()));
|
||||
}
|
||||
|
||||
result.put(FIELD_COMPETITOR, competitorSerializer.serialize(registerCompetitorEvent.getCompetitor()));
|
||||
result.put(FIELD_BOAT, boatSerializer.serialize(registerCompetitorEvent.getBoat()));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user