Loading vessels-commands/src/main/java/es/redmic/vesselscommands/controller/VesselTrackingController.java +7 −4 Original line number Diff line number Diff line package es.redmic.vesselscommands.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.controller.CommandGeoController; import es.redmic.vesselscommands.service.VesselTrackingCommandService; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; Loading @@ -16,6 +16,9 @@ public class VesselTrackingController extends CommandGeoController<VesselTrackin VesselTrackingCommandService service; @Value("${vesseltracking-activity-id}") protected String activityId; @Autowired public VesselTrackingController(VesselTrackingCommandService service) { super(service); Loading @@ -23,9 +26,9 @@ public class VesselTrackingController extends CommandGeoController<VesselTrackin } @KafkaListener(topics = "${broker.topic.realtime.tracking.vessels}") public void run(AISTrackingDTO dto) throws InterruptedException { public void run(VesselTrackingDTO dto) throws InterruptedException { logger.info("Procesando track para el barco: " + dto.getMmsi() + " date: " + dto.getTstamp()); service.create(dto); logger.info("Procesando track para el barco: " + dto.getId() + " date: " + dto.getProperties().getDate()); service.create(dto, activityId); } } vessels-commands/src/main/java/es/redmic/vesselscommands/service/VesselCommandService.java +0 −33 Original line number Diff line number Diff line Loading @@ -5,14 +5,12 @@ import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.service.CommandServiceItfc; import es.redmic.vesselscommands.commands.vessel.CreateVesselCommand; import es.redmic.vesselscommands.commands.vessel.DeleteVesselCommand; import es.redmic.vesselscommands.commands.vessel.UpdateVesselCommand; import es.redmic.vesselscommands.handler.VesselCommandHandler; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.dto.vesseltype.VesselTypeDTO; @Service public class VesselCommandService implements CommandServiceItfc<VesselDTO> { Loading @@ -26,15 +24,6 @@ public class VesselCommandService implements CommandServiceItfc<VesselDTO> { this.commandHandler = commandHandler; } public void create(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() != null || aisTracking.getImo() != null) { create(convertTrackToVessel(aisTracking)); } else { logger.info("Descartado Vessel sin identificador váliado"); } } @Override public VesselDTO create(VesselDTO vessel) { Loading @@ -58,26 +47,4 @@ public class VesselCommandService implements CommandServiceItfc<VesselDTO> { return commandHandler.update(id, new DeleteVesselCommand(id)); } public static VesselDTO convertTrackToVessel(AISTrackingDTO aisTracking) { VesselDTO vessel = new VesselDTO(); vessel.setMmsi(aisTracking.getMmsi()); vessel.setName(aisTracking.getName()); vessel.setCallSign(aisTracking.getCallSign()); vessel.setImo(aisTracking.getImo()); if (aisTracking.getA() != null && aisTracking.getB() != null) vessel.setLength(aisTracking.getA() + aisTracking.getB()); if (aisTracking.getC() != null && aisTracking.getD() != null) vessel.setBeam(aisTracking.getC() + aisTracking.getD()); VesselTypeDTO vesselType = new VesselTypeDTO(); vesselType.setCode(aisTracking.getType().toString()); vessel.setType(vesselType); return vessel; } } vessels-commands/src/main/java/es/redmic/vesselscommands/service/VesselTrackingCommandService.java +0 −59 Original line number Diff line number Diff line Loading @@ -2,16 +2,10 @@ package es.redmic.vesselscommands.service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.geotools.geometry.jts.JTSFactoryFinder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.Point; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.service.CommandGeoServiceItfc; import es.redmic.exception.databinding.FieldNotValidException; import es.redmic.vesselscommands.commands.vesseltracking.CreateVesselTrackingCommand; Loading @@ -19,7 +13,6 @@ import es.redmic.vesselscommands.commands.vesseltracking.DeleteVesselTrackingCom import es.redmic.vesselscommands.commands.vesseltracking.UpdateVesselTrackingCommand; import es.redmic.vesselscommands.handler.VesselTrackingCommandHandler; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.tracking.VesselTrackingPropertiesDTO; @Service public class VesselTrackingCommandService implements CommandGeoServiceItfc<VesselTrackingDTO> { Loading @@ -31,26 +24,11 @@ public class VesselTrackingCommandService implements CommandGeoServiceItfc<Vesse @Value("${vesseltracking-activity-id}") protected String activityId; @Value("${qflag.default}") private String QFLAG_DEFAUL; @Value("${vflag.default}") private String VFLAG_DEFAULT; @Autowired public VesselTrackingCommandService(VesselTrackingCommandHandler commandHandler) { this.commandHandler = commandHandler; } public void create(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() != null || aisTracking.getImo() != null) { create(convertTrackToVesselTracking(aisTracking), activityId); } else { logger.info("Descartado Vessel sin identificador váliado"); } } @Override public VesselTrackingDTO create(VesselTrackingDTO vesselTracking, String activityId) { Loading Loading @@ -90,41 +68,4 @@ public class VesselTrackingCommandService implements CommandGeoServiceItfc<Vesse if (!requestId.equals(this.activityId)) throw new FieldNotValidException("activityId", requestId); } public VesselTrackingDTO convertTrackToVesselTracking(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() == null) throw new FieldNotValidException("mmsi", "null"); if (aisTracking.getTstamp() == null) throw new FieldNotValidException("date", "null"); GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); VesselTrackingDTO vesselTracking = new VesselTrackingDTO(); Point geometry = geometryFactory .createPoint(new Coordinate(aisTracking.getLongitude(), aisTracking.getLatitude())); vesselTracking.setGeometry(geometry); VesselTrackingPropertiesDTO properties = new VesselTrackingPropertiesDTO(); properties.setVessel(VesselCommandService.convertTrackToVessel(aisTracking)); properties.setDate(aisTracking.getTstamp()); properties.setCog(aisTracking.getCog()); properties.setSog(aisTracking.getSog()); properties.setHeading(aisTracking.getHeading()); properties.setNavStat(aisTracking.getNavStat()); properties.setDest(aisTracking.getDest()); properties.setEta(aisTracking.getEta()); properties.setQFlag(QFLAG_DEFAUL); properties.setVFlag(VFLAG_DEFAULT); vesselTracking.setProperties(properties); return vesselTracking; } } vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vesseltracking/CreateVesselTrackingFromAISTest.java +17 −43 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import org.joda.time.DateTime; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; Loading @@ -28,16 +27,13 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vessel.VesselDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselTrackingCommandHandler; import es.redmic.vesselscommands.service.VesselTrackingCommandService; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingEvent; @RunWith(SpringJUnit4ClassRunner.class) Loading @@ -57,7 +53,10 @@ public class CreateVesselTrackingFromAISTest extends KafkaBaseIntegrationTest { private Integer mmsi = 1; VesselDTO vessel; private String tstamp = "343232132"; @Value("${vesseltracking-activity-id}") protected String activityId; @ClassRule public static EmbeddedKafkaRule embeddedKafka = new EmbeddedKafkaRule(KafkaEmbeddedConfig.NUM_BROKERS, true, Loading Loading @@ -86,53 +85,28 @@ public class CreateVesselTrackingFromAISTest extends KafkaBaseIntegrationTest { @Test public void createVesselTracking_SendCreateVesselTrackingEvent_IfCommandWasSuccess() throws Exception { VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getVesselCreatedEvent(mmsi); vessel = vesselCreatedEvent.getVessel(); AISTrackingDTO dto = new AISTrackingDTO(); dto.setMmsi(vessel.getMmsi()); dto.setImo(vessel.getImo()); dto.setName(vessel.getName()); dto.setType(Integer.parseInt(vessel.getType().getCode())); dto.setCallSign(vessel.getCallSign()); dto.setTstamp(new DateTime()); dto.setLatitude(2.1); dto.setLongitude(3.2); dto.setA(vessel.getLength() / 2); dto.setB(vessel.getLength() / 2); dto.setC(vessel.getBeam() / 2); dto.setD(vessel.getBeam() / 2); dto.setCog(2.3); dto.setSog(3.4); dto.setHeading(221); dto.setNavStat(33); dto.setEta("00:00 00:00"); dto.setDest("Santa Cruz de Tenerife"); VesselTrackingDTO source = VesselTrackingDataUtil.getCreateEvent(mmsi, tstamp).getVesselTracking(); // LLama directamente al servicio para evitar pasar por vessel service.create(dto); service.create(source, activityId); VesselTrackingDTO vesselTracking = (VesselTrackingDTO) blockingQueue.poll(4, TimeUnit.MINUTES); assertNotNull(vesselTracking); assertTrue(vesselTracking.getProperties().getDate().isEqual(dto.getTstamp())); assertEquals(vesselTracking.getProperties().getCog(), dto.getCog()); assertEquals(vesselTracking.getProperties().getSog(), dto.getSog()); assertEquals(vesselTracking.getProperties().getHeading(), dto.getHeading()); assertEquals(vesselTracking.getProperties().getNavStat(), dto.getNavStat()); assertEquals(vesselTracking.getProperties().getEta(), dto.getEta()); assertEquals(vesselTracking.getProperties().getDest(), dto.getDest()); assertTrue(vesselTracking.getProperties().getDate().isEqual(source.getProperties().getDate())); assertEquals(vesselTracking.getProperties().getCog(), source.getProperties().getCog()); assertEquals(vesselTracking.getProperties().getSog(), source.getProperties().getSog()); assertEquals(vesselTracking.getProperties().getHeading(), source.getProperties().getHeading()); assertEquals(vesselTracking.getProperties().getNavStat(), source.getProperties().getNavStat()); assertEquals(vesselTracking.getProperties().getEta(), source.getProperties().getEta()); assertEquals(vesselTracking.getProperties().getDest(), source.getProperties().getDest()); VesselDTO vessel = vesselTracking.getProperties().getVessel(); assertEquals(vessel.getMmsi(), dto.getMmsi()); assertEquals(vessel.getName(), dto.getName()); Double length = dto.getA() + dto.getB(); assertEquals(vessel.getLength(), length); Double beam = dto.getC() + dto.getD(); assertEquals(vessel.getBeam(), beam); assertEquals(vessel.getMmsi(), source.getProperties().getVessel().getMmsi()); assertEquals(vessel.getName(), source.getProperties().getVessel().getName()); assertEquals(vessel.getLength(), source.getProperties().getVessel().getLength()); assertEquals(vessel.getBeam(), source.getProperties().getVessel().getBeam()); } @KafkaHandler Loading Loading
vessels-commands/src/main/java/es/redmic/vesselscommands/controller/VesselTrackingController.java +7 −4 Original line number Diff line number Diff line package es.redmic.vesselscommands.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.controller.CommandGeoController; import es.redmic.vesselscommands.service.VesselTrackingCommandService; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; Loading @@ -16,6 +16,9 @@ public class VesselTrackingController extends CommandGeoController<VesselTrackin VesselTrackingCommandService service; @Value("${vesseltracking-activity-id}") protected String activityId; @Autowired public VesselTrackingController(VesselTrackingCommandService service) { super(service); Loading @@ -23,9 +26,9 @@ public class VesselTrackingController extends CommandGeoController<VesselTrackin } @KafkaListener(topics = "${broker.topic.realtime.tracking.vessels}") public void run(AISTrackingDTO dto) throws InterruptedException { public void run(VesselTrackingDTO dto) throws InterruptedException { logger.info("Procesando track para el barco: " + dto.getMmsi() + " date: " + dto.getTstamp()); service.create(dto); logger.info("Procesando track para el barco: " + dto.getId() + " date: " + dto.getProperties().getDate()); service.create(dto, activityId); } }
vessels-commands/src/main/java/es/redmic/vesselscommands/service/VesselCommandService.java +0 −33 Original line number Diff line number Diff line Loading @@ -5,14 +5,12 @@ import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.service.CommandServiceItfc; import es.redmic.vesselscommands.commands.vessel.CreateVesselCommand; import es.redmic.vesselscommands.commands.vessel.DeleteVesselCommand; import es.redmic.vesselscommands.commands.vessel.UpdateVesselCommand; import es.redmic.vesselscommands.handler.VesselCommandHandler; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.dto.vesseltype.VesselTypeDTO; @Service public class VesselCommandService implements CommandServiceItfc<VesselDTO> { Loading @@ -26,15 +24,6 @@ public class VesselCommandService implements CommandServiceItfc<VesselDTO> { this.commandHandler = commandHandler; } public void create(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() != null || aisTracking.getImo() != null) { create(convertTrackToVessel(aisTracking)); } else { logger.info("Descartado Vessel sin identificador váliado"); } } @Override public VesselDTO create(VesselDTO vessel) { Loading @@ -58,26 +47,4 @@ public class VesselCommandService implements CommandServiceItfc<VesselDTO> { return commandHandler.update(id, new DeleteVesselCommand(id)); } public static VesselDTO convertTrackToVessel(AISTrackingDTO aisTracking) { VesselDTO vessel = new VesselDTO(); vessel.setMmsi(aisTracking.getMmsi()); vessel.setName(aisTracking.getName()); vessel.setCallSign(aisTracking.getCallSign()); vessel.setImo(aisTracking.getImo()); if (aisTracking.getA() != null && aisTracking.getB() != null) vessel.setLength(aisTracking.getA() + aisTracking.getB()); if (aisTracking.getC() != null && aisTracking.getD() != null) vessel.setBeam(aisTracking.getC() + aisTracking.getD()); VesselTypeDTO vesselType = new VesselTypeDTO(); vesselType.setCode(aisTracking.getType().toString()); vessel.setType(vesselType); return vessel; } }
vessels-commands/src/main/java/es/redmic/vesselscommands/service/VesselTrackingCommandService.java +0 −59 Original line number Diff line number Diff line Loading @@ -2,16 +2,10 @@ package es.redmic.vesselscommands.service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.geotools.geometry.jts.JTSFactoryFinder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.Point; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.commandslib.service.CommandGeoServiceItfc; import es.redmic.exception.databinding.FieldNotValidException; import es.redmic.vesselscommands.commands.vesseltracking.CreateVesselTrackingCommand; Loading @@ -19,7 +13,6 @@ import es.redmic.vesselscommands.commands.vesseltracking.DeleteVesselTrackingCom import es.redmic.vesselscommands.commands.vesseltracking.UpdateVesselTrackingCommand; import es.redmic.vesselscommands.handler.VesselTrackingCommandHandler; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.tracking.VesselTrackingPropertiesDTO; @Service public class VesselTrackingCommandService implements CommandGeoServiceItfc<VesselTrackingDTO> { Loading @@ -31,26 +24,11 @@ public class VesselTrackingCommandService implements CommandGeoServiceItfc<Vesse @Value("${vesseltracking-activity-id}") protected String activityId; @Value("${qflag.default}") private String QFLAG_DEFAUL; @Value("${vflag.default}") private String VFLAG_DEFAULT; @Autowired public VesselTrackingCommandService(VesselTrackingCommandHandler commandHandler) { this.commandHandler = commandHandler; } public void create(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() != null || aisTracking.getImo() != null) { create(convertTrackToVesselTracking(aisTracking), activityId); } else { logger.info("Descartado Vessel sin identificador váliado"); } } @Override public VesselTrackingDTO create(VesselTrackingDTO vesselTracking, String activityId) { Loading Loading @@ -90,41 +68,4 @@ public class VesselTrackingCommandService implements CommandGeoServiceItfc<Vesse if (!requestId.equals(this.activityId)) throw new FieldNotValidException("activityId", requestId); } public VesselTrackingDTO convertTrackToVesselTracking(AISTrackingDTO aisTracking) { if (aisTracking.getMmsi() == null) throw new FieldNotValidException("mmsi", "null"); if (aisTracking.getTstamp() == null) throw new FieldNotValidException("date", "null"); GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); VesselTrackingDTO vesselTracking = new VesselTrackingDTO(); Point geometry = geometryFactory .createPoint(new Coordinate(aisTracking.getLongitude(), aisTracking.getLatitude())); vesselTracking.setGeometry(geometry); VesselTrackingPropertiesDTO properties = new VesselTrackingPropertiesDTO(); properties.setVessel(VesselCommandService.convertTrackToVessel(aisTracking)); properties.setDate(aisTracking.getTstamp()); properties.setCog(aisTracking.getCog()); properties.setSog(aisTracking.getSog()); properties.setHeading(aisTracking.getHeading()); properties.setNavStat(aisTracking.getNavStat()); properties.setDest(aisTracking.getDest()); properties.setEta(aisTracking.getEta()); properties.setQFlag(QFLAG_DEFAUL); properties.setVFlag(VFLAG_DEFAULT); vesselTracking.setProperties(properties); return vesselTracking; } }
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vesseltracking/CreateVesselTrackingFromAISTest.java +17 −43 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import org.joda.time.DateTime; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; Loading @@ -28,16 +27,13 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vessel.VesselDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselTrackingCommandHandler; import es.redmic.vesselscommands.service.VesselTrackingCommandService; import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingEvent; @RunWith(SpringJUnit4ClassRunner.class) Loading @@ -57,7 +53,10 @@ public class CreateVesselTrackingFromAISTest extends KafkaBaseIntegrationTest { private Integer mmsi = 1; VesselDTO vessel; private String tstamp = "343232132"; @Value("${vesseltracking-activity-id}") protected String activityId; @ClassRule public static EmbeddedKafkaRule embeddedKafka = new EmbeddedKafkaRule(KafkaEmbeddedConfig.NUM_BROKERS, true, Loading Loading @@ -86,53 +85,28 @@ public class CreateVesselTrackingFromAISTest extends KafkaBaseIntegrationTest { @Test public void createVesselTracking_SendCreateVesselTrackingEvent_IfCommandWasSuccess() throws Exception { VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getVesselCreatedEvent(mmsi); vessel = vesselCreatedEvent.getVessel(); AISTrackingDTO dto = new AISTrackingDTO(); dto.setMmsi(vessel.getMmsi()); dto.setImo(vessel.getImo()); dto.setName(vessel.getName()); dto.setType(Integer.parseInt(vessel.getType().getCode())); dto.setCallSign(vessel.getCallSign()); dto.setTstamp(new DateTime()); dto.setLatitude(2.1); dto.setLongitude(3.2); dto.setA(vessel.getLength() / 2); dto.setB(vessel.getLength() / 2); dto.setC(vessel.getBeam() / 2); dto.setD(vessel.getBeam() / 2); dto.setCog(2.3); dto.setSog(3.4); dto.setHeading(221); dto.setNavStat(33); dto.setEta("00:00 00:00"); dto.setDest("Santa Cruz de Tenerife"); VesselTrackingDTO source = VesselTrackingDataUtil.getCreateEvent(mmsi, tstamp).getVesselTracking(); // LLama directamente al servicio para evitar pasar por vessel service.create(dto); service.create(source, activityId); VesselTrackingDTO vesselTracking = (VesselTrackingDTO) blockingQueue.poll(4, TimeUnit.MINUTES); assertNotNull(vesselTracking); assertTrue(vesselTracking.getProperties().getDate().isEqual(dto.getTstamp())); assertEquals(vesselTracking.getProperties().getCog(), dto.getCog()); assertEquals(vesselTracking.getProperties().getSog(), dto.getSog()); assertEquals(vesselTracking.getProperties().getHeading(), dto.getHeading()); assertEquals(vesselTracking.getProperties().getNavStat(), dto.getNavStat()); assertEquals(vesselTracking.getProperties().getEta(), dto.getEta()); assertEquals(vesselTracking.getProperties().getDest(), dto.getDest()); assertTrue(vesselTracking.getProperties().getDate().isEqual(source.getProperties().getDate())); assertEquals(vesselTracking.getProperties().getCog(), source.getProperties().getCog()); assertEquals(vesselTracking.getProperties().getSog(), source.getProperties().getSog()); assertEquals(vesselTracking.getProperties().getHeading(), source.getProperties().getHeading()); assertEquals(vesselTracking.getProperties().getNavStat(), source.getProperties().getNavStat()); assertEquals(vesselTracking.getProperties().getEta(), source.getProperties().getEta()); assertEquals(vesselTracking.getProperties().getDest(), source.getProperties().getDest()); VesselDTO vessel = vesselTracking.getProperties().getVessel(); assertEquals(vessel.getMmsi(), dto.getMmsi()); assertEquals(vessel.getName(), dto.getName()); Double length = dto.getA() + dto.getB(); assertEquals(vessel.getLength(), length); Double beam = dto.getC() + dto.getD(); assertEquals(vessel.getBeam(), beam); assertEquals(vessel.getMmsi(), source.getProperties().getVessel().getMmsi()); assertEquals(vessel.getName(), source.getProperties().getVessel().getName()); assertEquals(vessel.getLength(), source.getProperties().getVessel().getLength()); assertEquals(vessel.getBeam(), source.getProperties().getVessel().getBeam()); } @KafkaHandler Loading