Commit 21d366fd authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade método en las factorías para eventos fail

De esta forma se puede crear dinámicamente el evento fail que
corresponde con el que se debe compensar

Añade tests
parent e0e61fed
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -99,6 +99,32 @@ public class CategoryEventFactory {
		throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
	}

	public static Event getEvent(CategoryRollbackEvent source, String type) {

		EventError failedEvent = null;

		if (type.equals(CategoryEventTypes.CREATE_FAILED)) {
			failedEvent = new CreateCategoryFailedEvent().buildFrom(source);
		}

		if (type.equals(CategoryEventTypes.UPDATE_FAILED)) {
			failedEvent = new UpdateCategoryFailedEvent().buildFrom(source);
		}

		if (type.equals(CategoryEventTypes.DELETE_FAILED)) {
			failedEvent = new DeleteCategoryFailedEvent().buildFrom(source);
		}

		if (failedEvent != null) {
			failedEvent.setExceptionType("unknown");
			return failedEvent;

		} else {
			logger.error("Tipo de evento no soportado");
			throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
		}
	}

	public static Event getEvent(Event source, String type, CategoryDTO category) {

		if (type.equals(CategoryEventTypes.ROLLBACK)) {
+30 −0
Original line number Diff line number Diff line
@@ -111,6 +111,36 @@ public class LayerEventFactory {
		throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
	}

	public static Event getEvent(LayerRollbackEvent source, String type) {

		EventError failedEvent = null;

		if (type.equals(LayerEventTypes.CREATE_FAILED)) {
			failedEvent = new CreateLayerFailedEvent().buildFrom(source);
		}

		if (type.equals(LayerEventTypes.UPDATE_FAILED)) {
			failedEvent = new UpdateLayerFailedEvent().buildFrom(source);
		}

		if (type.equals(LayerEventTypes.DELETE_FAILED)) {
			failedEvent = new DeleteLayerFailedEvent().buildFrom(source);
		}

		if (type.equals(LayerEventTypes.REFRESH_FAILED)) {
			failedEvent = new RefreshLayerFailedEvent().buildFrom(source);
		}

		if (failedEvent != null) {
			failedEvent.setExceptionType("unknown");
			return failedEvent;

		} else {
			logger.error("Tipo de evento no soportado");
			throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
		}
	}

	public static Event getEvent(Event source, String type, LayerDTO layer) {

		if (type.equals(LayerEventTypes.ROLLBACK)) {
+26 −0
Original line number Diff line number Diff line
@@ -99,6 +99,32 @@ public class ThemeInspireEventFactory {
		throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
	}

	public static Event getEvent(ThemeInspireRollbackEvent source, String type) {

		EventError failedEvent = null;

		if (type.equals(ThemeInspireEventTypes.CREATE_FAILED)) {
			failedEvent = new CreateThemeInspireFailedEvent().buildFrom(source);
		}

		if (type.equals(ThemeInspireEventTypes.UPDATE_FAILED)) {
			failedEvent = new UpdateThemeInspireFailedEvent().buildFrom(source);
		}

		if (type.equals(ThemeInspireEventTypes.DELETE_FAILED)) {
			failedEvent = new DeleteThemeInspireFailedEvent().buildFrom(source);
		}

		if (failedEvent != null) {
			failedEvent.setExceptionType("unknown");
			return failedEvent;

		} else {
			logger.error("Tipo de evento no soportado");
			throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
		}
	}

	public static Event getEvent(Event source, String type, ThemeInspireDTO themeInspire) {

		if (type.equals(ThemeInspireEventTypes.ROLLBACK)) {
+46 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ package es.redmic.atlaslib.unit.events.category;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.UUID;

import org.junit.Test;

import es.redmic.atlaslib.events.category.CategoryEventFactory;
@@ -288,6 +290,50 @@ public class CategoryEventFactoryTest extends AvroBaseTest {
		assertNotNull(event.getLastSnapshotItem());
	}

	// ROLLBACK

	@Test
	public void GetEvent_ReturnCreateCategoryFailed_IfRollbackFailEventTypeIsCreate() {

		CategoryRollbackEvent source = CategoryDataUtil.getCategoryRollbackEvent(UUID.randomUUID().toString(),
				CategoryEventTypes.CREATE);

		CreateCategoryFailedEvent event = (CreateCategoryFailedEvent) CategoryEventFactory.getEvent(source,
				CategoryEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(CategoryEventTypes.CREATE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnUpdateCategoryFailedEvent_IfRollbackFailEventTypeIsUpdate() {

		CategoryRollbackEvent source = CategoryDataUtil.getCategoryRollbackEvent(UUID.randomUUID().toString(),
				CategoryEventTypes.UPDATE);

		UpdateCategoryFailedEvent event = (UpdateCategoryFailedEvent) CategoryEventFactory.getEvent(source,
				CategoryEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(CategoryEventTypes.UPDATE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnDeleteCategoryFailedEvent_IfRollbackFailEventTypeIsDelete() {

		CategoryRollbackEvent source = CategoryDataUtil.getCategoryRollbackEvent(UUID.randomUUID().toString(),
				CategoryEventTypes.DELETE);

		DeleteCategoryFailedEvent event = (DeleteCategoryFailedEvent) CategoryEventFactory.getEvent(source,
				CategoryEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(CategoryEventTypes.DELETE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	private void checkMetadataFields(Event source, Event evt) {

		assertEquals(source.getAggregateId(), evt.getAggregateId());
+60 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ package es.redmic.atlaslib.unit.events.layer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.UUID;

import org.junit.Test;

import es.redmic.atlaslib.events.layer.LayerEventFactory;
@@ -458,6 +460,64 @@ public class LayerEventFactoryTest extends AvroBaseTest {
		assertNotNull(event.getLastSnapshotItem());
	}

	// ROLLBACK

	@Test
	public void GetEvent_ReturnCreateLayerFailed_IfRollbackFailEventTypeIsCreate() {

		LayerRollbackEvent source = LayerDataUtil.getLayerRollbackEvent(UUID.randomUUID().toString(),
				LayerEventTypes.CREATE);

		CreateLayerFailedEvent event = (CreateLayerFailedEvent) LayerEventFactory.getEvent(source,
				LayerEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(LayerEventTypes.CREATE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnUpdateLayerFailedEvent_IfRollbackFailEventTypeIsUpdate() {

		LayerRollbackEvent source = LayerDataUtil.getLayerRollbackEvent(UUID.randomUUID().toString(),
				LayerEventTypes.UPDATE);

		UpdateLayerFailedEvent event = (UpdateLayerFailedEvent) LayerEventFactory.getEvent(source,
				LayerEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(LayerEventTypes.UPDATE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnDeleteLayerFailedEvent_IfRollbackFailEventTypeIsDelete() {

		LayerRollbackEvent source = LayerDataUtil.getLayerRollbackEvent(UUID.randomUUID().toString(),
				LayerEventTypes.DELETE);

		DeleteLayerFailedEvent event = (DeleteLayerFailedEvent) LayerEventFactory.getEvent(source,
				LayerEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(LayerEventTypes.DELETE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnRefreshLayerFailedEvent_IfRollbackFailEventTypeIsDelete() {

		LayerRollbackEvent source = LayerDataUtil.getLayerRollbackEvent(UUID.randomUUID().toString(),
				LayerEventTypes.REFRESH);

		RefreshLayerFailedEvent event = (RefreshLayerFailedEvent) LayerEventFactory.getEvent(source,
				LayerEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(LayerEventTypes.REFRESH_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	////////////////////

	private void checkMetadataFields(Event source, Event evt) {
Loading