Commit f9c2f979 authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade paso de aisTracking a vessel y tracking

Añade test de esa utilidad
parent 2d38f635
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
package es.redmic.vesselslib.utils;

import org.geotools.geometry.jts.JTSFactoryFinder;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;

import es.redmic.exception.databinding.FieldNotValidException;
import es.redmic.vesselslib.dto.ais.AISTrackingDTO;
import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO;
import es.redmic.vesselslib.dto.tracking.VesselTrackingPropertiesDTO;

public class VesselTrackingUtil {

	private static final String PREFIX = "vesseltracking-mmsi-tstamp-";
@@ -7,4 +18,42 @@ public class VesselTrackingUtil {
	public static String generateId(Integer mmsi, Long timeStamp) {
		return PREFIX + mmsi + "-" + timeStamp;
	}

	public static VesselTrackingDTO convertTrackToVesselTracking(AISTrackingDTO aisTracking, String qFlagDefault,
			String vFlagDefault) {

		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(VesselUtil.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(qFlagDefault);
		properties.setVFlag(vFlagDefault);

		vesselTracking.setProperties(properties);

		return vesselTracking;
	}
}
+26 −0
Original line number Diff line number Diff line
package es.redmic.vesselslib.utils;

import es.redmic.vesselslib.dto.ais.AISTrackingDTO;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
import es.redmic.vesselslib.dto.vesseltype.VesselTypeDTO;

public class VesselUtil {

	private static final String PREFIX = "vessel-mmsi-";
@@ -7,4 +11,26 @@ public class VesselUtil {
	public static String generateId(Integer mmsi) {
		return PREFIX + mmsi;
	}

	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;
	}
}
+104 −0
Original line number Diff line number Diff line
package es.redmic.vesselslib.unit.utils;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;

import es.redmic.vesselslib.dto.ais.AISTrackingDTO;
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.utils.VesselTrackingUtil;

@RunWith(MockitoJUnitRunner.class)
public class VesselTrackingUtilsTest {

	@Test
	public void convertAisToVesselTracking_ReturnVesselTrackingDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getCreatedEvent();

		VesselDTO 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 result = VesselTrackingUtil.convertTrackToVesselTracking(dto, "0", "N");

		assertTrue(result.getProperties().getDate().isEqual(dto.getTstamp()));
		assertEquals(result.getProperties().getCog(), dto.getCog());
		assertEquals(result.getProperties().getSog(), dto.getSog());
		assertEquals(result.getProperties().getHeading(), dto.getHeading());
		assertEquals(result.getProperties().getNavStat(), dto.getNavStat());
		assertEquals(result.getProperties().getEta(), dto.getEta());
		assertEquals(result.getProperties().getDest(), dto.getDest());

		VesselDTO vesselResult = result.getProperties().getVessel();

		assertEquals(vesselResult.getMmsi(), dto.getMmsi());
		assertEquals(vesselResult.getName(), dto.getName());
		Double length = dto.getA() + dto.getB();
		assertEquals(vesselResult.getLength(), length);
		Double beam = dto.getC() + dto.getD();
		assertEquals(vesselResult.getBeam(), beam);
	}

	@Test
	public void convertAisToVesselTrackingWithNullValues_ReturnVesselTrackingDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getCreatedEvent();

		VesselDTO vessel = vesselCreatedEvent.getVessel();

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(vessel.getMmsi());
		dto.setName(vessel.getName());
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);

		VesselTrackingDTO result = VesselTrackingUtil.convertTrackToVesselTracking(dto, "0", "N");

		assertTrue(result.getProperties().getDate().isEqual(dto.getTstamp()));
		assertNull(result.getProperties().getCog());
		assertNull(result.getProperties().getSog());
		assertNull(result.getProperties().getHeading());
		assertNull(result.getProperties().getNavStat());
		assertNull(result.getProperties().getEta());
		assertNull(result.getProperties().getDest());

		VesselDTO vesselResult = result.getProperties().getVessel();

		assertEquals(vesselResult.getMmsi(), dto.getMmsi());
		assertEquals(vesselResult.getName(), dto.getName());
		assertNotNull(vesselResult.getType());
		assertEquals(vesselResult.getType().getCode(), "0");
		assertNull(vesselResult.getImo());
		assertNull(vesselResult.getLength());
		assertNull(vesselResult.getBeam());
		assertNull(vesselResult.getCallSign());
	}
}
+87 −0
Original line number Diff line number Diff line
package es.redmic.vesselslib.unit.utils;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;

import es.redmic.vesselslib.dto.ais.AISTrackingDTO;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent;
import es.redmic.vesselslib.utils.VesselUtil;

@RunWith(MockitoJUnitRunner.class)
public class VesselUtilsTest {

	@Test
	public void convertAisToVessel_ReturnVesselDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getCreatedEvent();

		VesselDTO 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");

		VesselDTO result = VesselUtil.convertTrackToVessel(dto);

		assertEquals(result.getMmsi(), dto.getMmsi());
		assertEquals(result.getName(), dto.getName());
		Double length = dto.getA() + dto.getB();
		assertEquals(result.getLength(), length);
		Double beam = dto.getC() + dto.getD();
		assertEquals(result.getBeam(), beam);

		assertNotNull(result.getType());
		assertEquals(result.getType().getCode(), dto.getType().toString());
		assertEquals(result.getImo(), dto.getImo());
		assertEquals(result.getCallSign(), dto.getCallSign());
	}

	@Test
	public void convertAisToVesselWithNullValues_ReturnVesselDTO_IfAISTrackingDTOIsCorrect() {

		Integer mmsi = 2;

		String name = "prueba";

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(mmsi);
		dto.setName(name);
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);

		VesselDTO result = VesselUtil.convertTrackToVessel(dto);

		assertEquals(result.getMmsi(), dto.getMmsi());
		assertEquals(result.getName(), dto.getName());
		assertNotNull(result.getType());
		assertEquals(result.getType().getCode(), "0");
		assertNull(result.getImo());
		assertNull(result.getLength());
		assertNull(result.getBeam());
		assertNull(result.getCallSign());
	}
}