mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 14:56:41 +00:00
Added domain factory awareness to BoatClass handling
This commit is contained in:
1 parent
0b640448bd
commit
2595fa5253
10 files changed
+31
-66
No files matched your search
+11
-11
@@ -9,7 +9,7 @@ import org.json.simple.JSONObject;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.common.BoatHullType;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
@@ -24,8 +24,8 @@ import com.sap.sailing.domain.maneuverdetection.impl.CompleteManeuverCurveWithEs
|
||||
import com.sap.sailing.domain.maneuverdetection.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl;
|
||||
import com.sap.sailing.domain.maneuverdetection.impl.ManeuverMainCurveWithEstimationDataImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CompleteManeuverCurveWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverMainCurveWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverWindJsonDeserializer;
|
||||
@@ -408,17 +408,16 @@ public class EstimationDataSerializationDeserializationTest {
|
||||
|
||||
@Test
|
||||
public void testDetailedBoatClass() throws JsonDeserializationException {
|
||||
String name = "bla";
|
||||
boolean typicallyStartsUpwind = true;
|
||||
String displayName = "A bla";
|
||||
Distance hullLength = new MeterDistance(11);
|
||||
Distance hullBeam = new MeterDistance(4.01);
|
||||
BoatHullType hullType = BoatHullType.SURFERBOARD;
|
||||
BoatClass boatClass = new BoatClassImpl(name, typicallyStartsUpwind, displayName, hullLength, hullBeam,
|
||||
hullType);
|
||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true);
|
||||
String name = boatClass.getName();
|
||||
boolean typicallyStartsUpwind = boatClass.typicallyStartsUpwind();
|
||||
String displayName = boatClass.getDisplayName();
|
||||
Distance hullLength = boatClass.getHullLength();
|
||||
Distance hullBeam = boatClass.getHullBeam();
|
||||
BoatHullType hullType = boatClass.getHullType();
|
||||
DetailedBoatClassJsonSerializer serializer = new DetailedBoatClassJsonSerializer();
|
||||
JSONObject json = serializer.serialize(boatClass);
|
||||
DetailedBoatClassJsonDeserializer deserializer = new DetailedBoatClassJsonDeserializer();
|
||||
BoatClassJsonDeserializer deserializer = new BoatClassJsonDeserializer(DomainFactory.INSTANCE);
|
||||
BoatClass deserialized = deserializer.deserialize(json);
|
||||
assertEquals(name, deserialized.getName());
|
||||
assertEquals(typicallyStartsUpwind, deserialized.typicallyStartsUpwind());
|
||||
@@ -426,6 +425,7 @@ public class EstimationDataSerializationDeserializationTest {
|
||||
assertEquals(hullLength, deserialized.getHullLength());
|
||||
assertEquals(hullBeam, deserialized.getHullBeam());
|
||||
assertEquals(hullType, deserialized.getHullType());
|
||||
assertEquals(boatClass, deserialized);
|
||||
}
|
||||
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.common.BoatHullType;
|
||||
import com.sap.sailing.domain.common.impl.MeterDistance;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DetailedBoatClassJsonSerializer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Vladislav Chumak (D069712)
|
||||
*
|
||||
*/
|
||||
public class DetailedBoatClassJsonDeserializer implements JsonDeserializer<BoatClass> {
|
||||
|
||||
@Override
|
||||
public BoatClass deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String name = (String) object.get(BoatClassJsonSerializer.FIELD_NAME);
|
||||
Boolean typicallyStartsUpwind = (Boolean) object.get(BoatClassJsonSerializer.FIELD_TYPICALLY_STARTS_UPWIND);
|
||||
String displayName = (String) object.get(DetailedBoatClassJsonSerializer.DISPLAY_NAME);
|
||||
Double hullLengthInMeters = (Double) object.get(DetailedBoatClassJsonSerializer.HULL_LENGTH_IN_METERS);
|
||||
Double hullBeamInMeters = (Double) object.get(DetailedBoatClassJsonSerializer.HULL_BEAM_IN_METERS);
|
||||
String hullType = (String) object.get(DetailedBoatClassJsonSerializer.HULL_TYPE);
|
||||
return new BoatClassImpl(name, typicallyStartsUpwind, displayName, new MeterDistance(hullLengthInMeters),
|
||||
new MeterDistance(hullBeamInMeters), BoatHullType.valueOf(hullType));
|
||||
}
|
||||
|
||||
}
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
package com.sap.sailing.windestimation.data.deserializer;
|
||||
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
|
||||
public interface CompetitorTrackElementsJsonDeserializer<T> extends JsonDeserializer<T> {
|
||||
|
||||
}
|
||||
+3
-4
@@ -12,7 +12,7 @@ import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.common.impl.MeterDistance;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorTrackWithEstimationDataJsonSerializer;
|
||||
import com.sap.sailing.windestimation.data.CompetitorTrackWithEstimationData;
|
||||
import com.sap.sse.common.Distance;
|
||||
@@ -22,11 +22,10 @@ public class CompetitorTrackWithEstimationDataJsonDeserializer<T>
|
||||
implements JsonDeserializer<CompetitorTrackWithEstimationData<T>> {
|
||||
|
||||
private final JSONParser jsonParser = new JSONParser();
|
||||
private final DetailedBoatClassJsonDeserializer boatClassJsonDeserializer;
|
||||
private final BoatClassJsonDeserializer boatClassJsonDeserializer;
|
||||
private final JsonDeserializer<T> competitorTrackElementsJsonDeserializer;
|
||||
|
||||
public CompetitorTrackWithEstimationDataJsonDeserializer(
|
||||
DetailedBoatClassJsonDeserializer boatClassJsonDeserializer,
|
||||
public CompetitorTrackWithEstimationDataJsonDeserializer(BoatClassJsonDeserializer boatClassJsonDeserializer,
|
||||
JsonDeserializer<T> competitorTrackElementsJsonDeserializer) {
|
||||
this.boatClassJsonDeserializer = boatClassJsonDeserializer;
|
||||
this.competitorTrackElementsJsonDeserializer = competitorTrackElementsJsonDeserializer;
|
||||
|
||||
+3
-2
@@ -3,12 +3,13 @@ package com.sap.sailing.windestimation.data.deserializer;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.classifier.maneuver.ManeuverTypeForInternalClassification;
|
||||
import com.sap.sailing.windestimation.data.LabelledManeuverForEstimation;
|
||||
import com.sap.sailing.windestimation.data.ManeuverCategory;
|
||||
@@ -18,7 +19,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class ManeuverForEstimationJsonDeserializer implements JsonDeserializer<ManeuverForEstimation> {
|
||||
|
||||
private final DetailedBoatClassJsonDeserializer boatClassDeserializer = new DetailedBoatClassJsonDeserializer();
|
||||
private final BoatClassJsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(DomainFactory.INSTANCE);
|
||||
|
||||
@Override
|
||||
public ManeuverForEstimation deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
|
||||
+3
-2
@@ -2,9 +2,10 @@ package com.sap.sailing.windestimation.data.persistence.maneuver;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.maneuverdetection.CompleteManeuverCurveWithEstimationData;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CompleteManeuverCurveWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverMainCurveWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.ManeuverWindJsonDeserializer;
|
||||
@@ -33,7 +34,7 @@ public class RaceWithCompleteManeuverCurvePersistenceManager
|
||||
new ManeuverMainCurveWithEstimationDataJsonDeserializer(),
|
||||
new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer(),
|
||||
new ManeuverWindJsonDeserializer(), new PositionJsonDeserializer());
|
||||
DetailedBoatClassJsonDeserializer boatClassDeserializer = new DetailedBoatClassJsonDeserializer();
|
||||
BoatClassJsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(DomainFactory.INSTANCE);
|
||||
return new CompetitorTrackWithEstimationDataJsonDeserializer<>(boatClassDeserializer,
|
||||
completeManeuverCurveDeserializer);
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,11 +2,11 @@ package com.sap.sailing.windestimation.data.persistence.maneuver;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.ManeuverForDataAnalysis;
|
||||
import com.sap.sailing.windestimation.data.deserializer.CompetitorTrackWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.deserializer.ManeuverForDataAnalysisJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.persistence.maneuver.AbstractRaceWithEstimationDataPersistenceManager;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -27,7 +27,7 @@ public class RaceWithManeuverForDataAnalysisPersistenceManager
|
||||
@Override
|
||||
public CompetitorTrackWithEstimationDataJsonDeserializer<ManeuverForDataAnalysis> getNewCompetitorTrackWithEstimationDataJsonDeserializer() {
|
||||
ManeuverForDataAnalysisJsonDeserializer maneuverForClassificationJsonDeserializer = new ManeuverForDataAnalysisJsonDeserializer();
|
||||
DetailedBoatClassJsonDeserializer boatClassDeserializer = new DetailedBoatClassJsonDeserializer();
|
||||
BoatClassJsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(DomainFactory.INSTANCE);
|
||||
return new CompetitorTrackWithEstimationDataJsonDeserializer<>(boatClassDeserializer,
|
||||
maneuverForClassificationJsonDeserializer);
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,11 +2,11 @@ package com.sap.sailing.windestimation.data.persistence.maneuver;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.DetailedBoatClassJsonDeserializer;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.ManeuverForEstimation;
|
||||
import com.sap.sailing.windestimation.data.deserializer.CompetitorTrackWithEstimationDataJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.deserializer.ManeuverForEstimationJsonDeserializer;
|
||||
import com.sap.sailing.windestimation.data.persistence.maneuver.AbstractRaceWithEstimationDataPersistenceManager;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -27,7 +27,7 @@ public class RaceWithManeuverForEstimationPersistenceManager
|
||||
@Override
|
||||
public CompetitorTrackWithEstimationDataJsonDeserializer<ManeuverForEstimation> getNewCompetitorTrackWithEstimationDataJsonDeserializer() {
|
||||
ManeuverForEstimationJsonDeserializer maneuverForEstimationJsonDeserializer = new ManeuverForEstimationJsonDeserializer();
|
||||
DetailedBoatClassJsonDeserializer boatClassDeserializer = new DetailedBoatClassJsonDeserializer();
|
||||
BoatClassJsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(DomainFactory.INSTANCE);
|
||||
return new CompetitorTrackWithEstimationDataJsonDeserializer<>(boatClassDeserializer,
|
||||
maneuverForEstimationJsonDeserializer);
|
||||
}
|
||||
|
||||
+2
@@ -5,6 +5,7 @@ import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.polars.impl.PolarDataServiceImpl;
|
||||
import com.sap.sailing.windestimation.data.importer.PolarDataImporter;
|
||||
@@ -17,6 +18,7 @@ public class PolarDataServiceAccessUtil {
|
||||
public static PolarDataService getPersistedPolarService()
|
||||
throws MalformedURLException, IOException, InterruptedException, ClassNotFoundException {
|
||||
PolarDataServiceImpl polarService = new PolarDataServiceImpl();
|
||||
polarService.registerDomainFactory(DomainFactory.INSTANCE);
|
||||
polarService.clearReplicaState();
|
||||
FileInputStream fileInputStream = new FileInputStream(new File(PolarDataImporter.polarDataFilePath));
|
||||
polarService.initiallyFillFrom(fileInputStream);
|
||||
|
||||
+3
-1
@@ -7,6 +7,7 @@ import java.io.ObjectOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.windestimation.classifier.AbstractManeuverClassificationModel;
|
||||
import com.sap.sailing.windestimation.classifier.ClassifierPersistenceException;
|
||||
import com.sap.sailing.windestimation.classifier.ContextSpecificModelMetadata;
|
||||
@@ -104,7 +105,8 @@ public abstract class AbstractSmileManeuverClassificationModel<InstanceType, T e
|
||||
|
||||
@Override
|
||||
public ModelMetadata<?, ?> loadFromStream(InputStream input) throws ClassifierPersistenceException {
|
||||
try (ObjectInputStream deserializer = new ObjectInputStream(input)) {
|
||||
try (ObjectInputStream deserializer = DomainFactory.INSTANCE
|
||||
.createObjectInputStreamResolvingAgainstThisFactory(input)) {
|
||||
@SuppressWarnings("unchecked")
|
||||
AbstractSmileManeuverClassificationModel<InstanceType, ContextSpecificModelMetadata<InstanceType>> loadedModel = (AbstractSmileManeuverClassificationModel<InstanceType, ContextSpecificModelMetadata<InstanceType>>) deserializer
|
||||
.readObject();
|
||||
|
||||
Reference in new issue
Block a user