mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
Fixed issue regarding the deserialization of RaceLogORCCertificateAssignmentEvents. Added test for this case.
This commit is contained in:
+9
-2
@@ -30,6 +30,7 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFinishPo
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFixedMarkPassingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFlagEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogGateLineOpeningTimeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogORCCertificateAssignmentEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogORCLegDataEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPassChangeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPathfinderEventSerializer;
|
||||
@@ -90,7 +91,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
new RaceLogEndOfTrackingEventDeserializer(competitorDeserializer),
|
||||
new RaceLogTagEventDeserializer(competitorDeserializer),
|
||||
new RaceLogORCLegDataEventDeserializer(competitorDeserializer),
|
||||
new RaceLogORCScratchBoatEventDeserializer(competitorDeserializer));
|
||||
new RaceLogORCScratchBoatEventDeserializer(competitorDeserializer),
|
||||
new RaceLogORCCertificateAssignmentEventDeserializer(competitorDeserializer));
|
||||
}
|
||||
|
||||
protected final JsonDeserializer<RaceLogEvent> flagEventDeserializer;
|
||||
@@ -119,6 +121,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
protected final JsonDeserializer<RaceLogEvent> tagEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> orcLegDataEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> orcScratchBoatEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> orcCertificateAssignmentEventDeserializer;
|
||||
|
||||
public RaceLogEventDeserializer(JsonDeserializer<RaceLogEvent> flagEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> startTimeEventDeserializer,
|
||||
@@ -145,7 +148,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
JsonDeserializer<RaceLogEvent> endOfTrackingEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> tagEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> orcLegDataEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> orcScratchBoatEventDeserializer) {
|
||||
JsonDeserializer<RaceLogEvent> orcScratchBoatEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> orcCertificateAssignmentEventDeserializer) {
|
||||
this.flagEventDeserializer = flagEventDeserializer;
|
||||
this.startTimeEventDeserializer = startTimeEventDeserializer;
|
||||
this.dependentStartTimeEventDeserializer = dependentStartTimeEventDeserializer;
|
||||
@@ -172,6 +176,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
this.tagEventDeserializer = tagEventDeserializer;
|
||||
this.orcLegDataEventDeserializer = orcLegDataEventDeserializer;
|
||||
this.orcScratchBoatEventDeserializer = orcScratchBoatEventDeserializer;
|
||||
this.orcCertificateAssignmentEventDeserializer = orcCertificateAssignmentEventDeserializer;
|
||||
}
|
||||
|
||||
protected JsonDeserializer<RaceLogEvent> getDeserializer(JSONObject object) throws JsonDeserializationException {
|
||||
@@ -227,6 +232,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
return tagEventDeserializer;
|
||||
} else if (type.equals(RaceLogORCLegDataEventSerializer.VALUE_CLASS)){
|
||||
return orcLegDataEventDeserializer;
|
||||
} else if (type.equals(RaceLogORCCertificateAssignmentEventSerializer.VALUE_CLASS)) {
|
||||
return orcCertificateAssignmentEventDeserializer;
|
||||
}
|
||||
throw new JsonDeserializationException(String.format("There is no deserializer defined for event type %s.",
|
||||
type));
|
||||
|
||||
+36
-2
@@ -2,30 +2,44 @@ package com.sap.sailing.server.gateway.deserialization.test.racelog;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.ParseException;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCCertificateAssignmentEvent;
|
||||
import com.sap.sailing.domain.abstractlog.orc.impl.RaceLogORCCertificateAssignmentEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.orc.impl.RaceLogORCLegDataEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEndOfTrackingEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogFlagEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogTagEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogUseCompetitorsFromRaceLogEventImpl;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
import com.sap.sailing.domain.common.impl.MeterDistance;
|
||||
import com.sap.sailing.domain.common.orc.ORCCertificate;
|
||||
import com.sap.sailing.domain.common.orc.ORCPerformanceCurveLegTypes;
|
||||
import com.sap.sailing.domain.common.orc.impl.ORCCertificateImpl;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.orc.ORCCertificatesImporter;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CompetitorJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEndOfTrackingEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogFlagEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogORCCertificateAssignmentEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogORCLegDataEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogTagEventDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogUseCompetitorsFromRaceLogEventDeserializer;
|
||||
@@ -33,6 +47,7 @@ import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerialize
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sse.common.impl.SecondsDurationImpl;
|
||||
|
||||
public class RaceLogEventDeserializerTest {
|
||||
|
||||
@@ -50,7 +65,7 @@ public class RaceLogEventDeserializerTest {
|
||||
mockitoRaceLogUseCompetitorsFromRaceLogEventDeserializer,
|
||||
mockitoRaceLogEndOfTrackingEventDeserializer, mockitoRaceLogTagEventDeserializer,
|
||||
new RaceLogORCLegDataEventDeserializer(competitorDeserializer),
|
||||
null);
|
||||
null, new RaceLogORCCertificateAssignmentEventDeserializer(competitorDeserializer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +74,6 @@ public class RaceLogEventDeserializerTest {
|
||||
private TimePoint timePoint = TimePoint.BeginningOfTime;
|
||||
private TimePoint timePoint2 = TimePoint.EndOfTime;
|
||||
private InnerRaceLogEventDeserializer deserializer = new InnerRaceLogEventDeserializer();
|
||||
|
||||
|
||||
@Test
|
||||
public void testSerializationAndDeserializationForRaceLogFlagEvent() throws Exception{
|
||||
@@ -109,6 +123,26 @@ public class RaceLogEventDeserializerTest {
|
||||
assertEquals(originalEvent.getLength(), newEvent.getLength());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationAndDeserializationForRaceLogORCCertificateAssignmentEvent() throws IOException, ParseException {
|
||||
final Boat boat = new BoatImpl(UUID.randomUUID(), "Testboot", new BoatClassImpl("Testklasse", BoatClassMasterdata.ORC), "GER 007");
|
||||
final ORCCertificate certificate = ORCCertificatesImporter.INSTANCE.read(new StringReader("NATCERTN.FILE_ID SAILNUMB NAME TYPE BUILDER DESIGNER YEAR CLUB OWNER ADRS1 ADRS2 C_Type D CREW DD_MM_yyYY HH:MM:SS LOA IMSL DRAFT BMAX DSPL INDEX DA GPH TMF ILCGA PLT-O PLD-O WL6 WL8 WL10 WL12 WL14 WL16 WL20 OL6 OL8 OL10 OL12 OL14 OL16 OL20 CR6 CR8 CR10 CR12 CR14 CR16 CR20 NSP6 NSP8 NSP10 NSP12 NSP14 NSP16 NSP20 OC6 OC8 OC10 OC12 OC14 OC16 OC20 UA6 UA8 UA10 UA12 UA14 UA16 UA20 DA6 DA8 DA10 DA12 DA14 DA16 DA20 UP6 UP8 UP10 UP12 UP14 UP16 UP20 R526 R528 R5210 R5212 R5214 R5216 R5220 R606 R608 R6010 R6012 R6014 R6016 R6020 R756 R758 R7510 R7512 R7514 R7516 R7520 R906 R908 R9010 R9012 R9014 R9016 R9020 R1106 R1108 R11010 R11012 R11014 R11016 R11020 R1206 R1208 R12010 R12012 R12014 R12016 R12020 R1356 R1358 R13510 R13512 R13514 R13516 R13520 R1506 R1508 R15010 R15012 R15014 R15016 R15020 D6 D8 D10 D12 D14 D16 D20 OTNLOW OTNMED OTNHIG ITNLOW ITNMED ITNHIG DH_TOD DH_TOT PLT-I PLD-I TMF-OF PLT2H PLD2H OSN ReferenceNo CDL DSPS WSS MAIN GENOA SYM ASYM OTDLOW OTDMED OTDHIG ITDLOW ITDMED ITDHIG NS_TOD NS_TOT GNSTOD GNSTOT GDHTOD GDHTOT\r\n" +
|
||||
"AUT017/19noi AUT NOI Sunbeam 40.1 Sunbeam Yachts J&J 2014 Austria CLUB C 789 12 03 2019 15:54:33 11.990 10.960 2.067 3.99 8500. 122.3 0.33 655.6 0.9532 708.2 0.000 0.0 1148.6 906.3 768.6 681.6 629.2 597.0 570.9 1081.1 863.0 740.1 664.4 621.3 598.6 579.4 930.4 739.6 634.3 571.5 532.6 508.0 480.5 930.4 739.6 634.3 571.5 532.6 508.0 480.5 1153.3 850.5 688.3 589.6 538.7 504.5 456.8 44.5 42.6 42.1 41.2 40.5 40.0 40.5 154.1 160.1 167.4 171.2 174.1 175.7 178.3 1101.4 902.4 790.1 719.8 688.5 678.5 681.3 706.8 592.3 524.6 490.4 475.6 470.2 468.3 661.7 559.6 502.6 476.1 462.8 456.1 452.9 630.6 534.7 487.5 465.4 451.0 440.1 428.5 638.5 537.7 487.2 464.0 448.6 433.5 410.8 711.0 581.4 506.6 472.4 453.4 437.2 404.7 754.8 616.9 533.9 486.1 462.0 444.9 411.8 883.0 695.9 592.5 522.9 482.7 460.6 427.5 1036.8 794.8 661.5 576.5 516.0 480.1 442.8 1195.8 910.2 747.1 643.3 569.7 515.5 460.4 0.8624 1.1782 1.3607 0.6570 0.9425 1.1340 0.0 0.0000 0.000 0.0 0.9470 0.000 0.0 633.6 AUT00002508 9.784 9570 36.0 45.7 39.3 0.0 0.0 782.7 572.9 496.1 1027.4 716.2 595.2 633.6 0.9470 655.6 0.9152 0.0 0.0000")).getCertificates().iterator().next();
|
||||
final RaceLogORCCertificateAssignmentEventImpl originalEvent = new RaceLogORCCertificateAssignmentEventImpl(timePoint, timePoint, author, UUID.randomUUID(), 0, certificate, boat);
|
||||
RaceLogEventSerializer serializer = (RaceLogEventSerializer) RaceLogEventSerializer.create(CompetitorJsonSerializer.create());
|
||||
JSONObject object = serializer.serialize(originalEvent);
|
||||
RaceLogEvent raceLogEvent = deserializer.deserialize(object);
|
||||
RaceLogORCCertificateAssignmentEventImpl newEvent = (RaceLogORCCertificateAssignmentEventImpl) raceLogEvent;
|
||||
//assert raceLogEvent has correct values
|
||||
assertEquals(originalEvent.getTimePoint().toString(), newEvent.getTimePoint().toString());
|
||||
assertEquals(originalEvent.getAuthor().toString(), newEvent.getAuthor().toString());
|
||||
assertEquals(originalEvent.getPassId(), newEvent.getPassId());
|
||||
assertEquals(originalEvent.getClass(), newEvent.getClass());
|
||||
assertEquals(originalEvent.getId(), newEvent.getId());
|
||||
assertEquals(originalEvent.getBoatId(), newEvent.getBoatId());
|
||||
assertEquals(originalEvent.getCertificate().getGPH().asSeconds(), newEvent.getCertificate().getGPH().asSeconds(), 0.00001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationAndDeserializationForRaceLogEndOfTrackingEvent() throws Exception{
|
||||
RaceLogEndOfTrackingEventImpl originalEvent = new RaceLogEndOfTrackingEventImpl(timePoint, timePoint2, author, UUID.randomUUID(), 3);
|
||||
|
||||
Reference in New Issue
Block a user