Commit 110b9312 authored by Noel Alonso's avatar Noel Alonso
Browse files

Elimina posibilidad de borrar un barco

adapta tests
parent 5cf7a2eb
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
package es.redmic.vesselscommands.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import es.redmic.commandslib.controller.CommandController;
import es.redmic.models.es.common.dto.SuperDTO;
import es.redmic.vesselscommands.service.VesselCommandService;
import es.redmic.vesselslib.dto.vessel.VesselDTO;

@@ -14,4 +21,12 @@ public class VesselController extends CommandController<VesselDTO> {
	public VesselController(VesselCommandService service) {
		super(service);
	}

	@Override
	@DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
	@ResponseBody
	@ResponseStatus(code = HttpStatus.NOT_FOUND)
	public SuperDTO delete(@PathVariable("id") String id) {
		return null;
	}
}
+16 −27
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import es.redmic.brokerlib.avro.common.Event;
import es.redmic.brokerlib.avro.common.EventError;
import es.redmic.brokerlib.avro.common.EventTypes;
import es.redmic.brokerlib.avro.serde.hashmap.HashMapSerde;
import es.redmic.commandslib.exceptions.ExceptionType;
import es.redmic.commandslib.streaming.common.StreamConfig;
import es.redmic.commandslib.streaming.streams.EventSourcingStreams;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
@@ -218,26 +219,14 @@ public class VesselEventStreams extends EventSourcingStreams {
		KStream<String, Event> deleteEvents = events
				.filter((id, event) -> (EventTypes.CHECK_DELETE.equals(event.getType())));

		// TODO: Buscar la manera de comprobar si el barco está en algún track
		deleteEvents.map(
				(key, value) -> KeyValue.pair(key, VesselEventFactory.getEvent(value, VesselEventTypes.DELETE_CHECKED)))
				.to(topic);
		;

		/*-deleteEvents
				.leftJoin(aggByVessel, (deleteEvent,
						vesselTrackingAggByVessel) -> getCheckDeleteResultEvent(deleteEvent, vesselTrackingAggByVessel))
				.to(topic);-*/
		// TODO: Esta funcionalidad está bloqueada. Si se desea eliminar un barco, se
		// debe borrar todos los tracking donde está referenciado o buscar la manera de
		// comprobar si el barco está en algún track para bloquearlo
		deleteEvents.map((key, value) -> KeyValue.pair(key, getCheckDeleteResultEvent(value))).to(topic);
	}

	/*-@SuppressWarnings("serial")
	private Event getCheckDeleteResultEvent(Event deleteEvent,
			HashMap<String, AggregationVesselInVesselTrackingPostUpdateEvent> vesselTrackingAggByVessel) {
	
		if (vesselTrackingAggByVessel == null || vesselTrackingAggByVessel.isEmpty()) { // elemento no referenciado
	
			return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECKED);
		} else { // elemento referenciado
	@SuppressWarnings("serial")
	private Event getCheckDeleteResultEvent(Event deleteEvent) {

		return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECK_FAILED,
				ExceptionType.ITEM_REFERENCED.toString(), new HashMap<String, String>() {
@@ -245,8 +234,8 @@ public class VesselEventStreams extends EventSourcingStreams {
						put("id", deleteEvent.getAggregateId());
					}
				});

	}
	}-*/

	/**
	 * Función que a partir del último evento correcto + el evento de edición
+1 −10
Original line number Diff line number Diff line
@@ -218,18 +218,9 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest {
				.perform(delete("/"+ id)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(jsonPath("$.success", is(true)));
				.andExpect(status().isNotFound());
		
		// @formatter:on

		DeleteVesselEvent event = (DeleteVesselEvent) blockingQueue.poll(50, TimeUnit.SECONDS);

		DeleteVesselEvent expectedEvent = VesselDataUtil.getDeleteEvent(mmsi);
		assertNotNull(event);
		assertEquals(event.getType(), expectedEvent.getType());
		assertEquals(event.getVersion(), expectedEvent.getVersion());
		assertEquals(event.getAggregateId(), expectedEvent.getAggregateId());
	}

	@SuppressWarnings("unchecked")
+14 −32
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ import javax.annotation.PostConstruct;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.joda.time.DateTime;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
@@ -38,6 +39,7 @@ import es.redmic.exception.data.DeleteItemException;
import es.redmic.exception.data.ItemAlreadyExistException;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig;
import es.redmic.test.vesselscommands.integration.vesseltracking.VesselTrackingDataUtil;
import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil;
import es.redmic.testutils.kafka.KafkaBaseIntegrationTest;
import es.redmic.vesselscommands.VesselsCommandsApplication;
@@ -63,6 +65,7 @@ import es.redmic.vesselslib.events.vessel.update.UpdateVesselConfirmedEvent;
import es.redmic.vesselslib.events.vessel.update.UpdateVesselEvent;
import es.redmic.vesselslib.events.vessel.update.UpdateVesselFailedEvent;
import es.redmic.vesselslib.events.vessel.update.VesselUpdatedEvent;
import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent;
import es.redmic.vesselslib.events.vesseltype.create.CreateVesselTypeConfirmedEvent;
import es.redmic.vesselslib.events.vesseltype.create.VesselTypeCreatedEvent;

@@ -243,27 +246,6 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
		assertEquals(updateVesselEvent.getVessel(), ((VesselUpdatedEvent) confirm).getVessel());
	}

	// Envía un evento de comprobación de que el elemento puede ser borrado y debe
	// provocar un evento DeleteVesselCheckedEvent ya que no está referenciado
	@Test
	public void checkDeleteVesselEvent_SendDeleteVesselCheckedEvent_IfReceivesSuccess() throws InterruptedException {

		logger.debug("----> CheckDeleteVesselEvent");

		CheckDeleteVesselEvent event = VesselDataUtil.getCheckDeleteVesselEvent(mmsi + 33);

		kafkaTemplate.send(vessel_topic, event.getAggregateId(), event);

		Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);

		assertNotNull(confirm);
		assertEquals(VesselEventTypes.DELETE_CHECKED, confirm.getType());
		assertEquals(event.getAggregateId(), confirm.getAggregateId());
		assertEquals(event.getUserId(), confirm.getUserId());
		assertEquals(event.getSessionId(), confirm.getSessionId());
		assertEquals(event.getVersion(), confirm.getVersion());
	}

	// Envía un evento de confirmación de borrado y debe provocar un evento Deleted
	@Test
	public void deleteVesselConfirmedEvent_SendVesselDeletedEvent_IfReceivesSuccess() throws InterruptedException {
@@ -355,7 +337,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {

	// Envía un evento de comprobación de que el elemento puede ser borrado y debe
	// provocar un evento DeleteVesselCheckFailedEvent ya que está referenciado
	/*-@Test
	@Test
	public void checkDeleteVesselEvent_SendDeleteVesselCheckFailedEvent_IfVesselIsReference()
			throws InterruptedException {

@@ -385,7 +367,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
		assertEquals(event.getUserId(), confirm.getUserId());
		assertEquals(event.getSessionId(), confirm.getSessionId());
		assertEquals(event.getVersion(), confirm.getVersion());
	}-*/
	}

	// Envía un evento de error de borrado y debe provocar un evento Cancelled con
	// el item dentro