Commit 136c525a authored by Noel Alonso's avatar Noel Alonso
Browse files

Cambia dto de entrada por info + actualiza tests

Gestiona en el servicio la creación del dto final a partir de los datos
del getCapabilities
parent e3c6de18
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -25,15 +25,18 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import es.redmic.atlascommands.service.LayerService;
import es.redmic.atlaslib.dto.layer.LayerDTO;
import es.redmic.atlaslib.dto.layerinfo.LayerInfoDTO;
import es.redmic.commandslib.controller.CommandController;

@Controller
@RequestMapping(value = "${controller.mapping.LAYER}")
public class LayerController extends CommandController<LayerDTO> {
public class LayerController extends CommandController<LayerInfoDTO> {

	LayerService service;

	@Autowired
	public LayerController(LayerService service) {
		super(service);
		this.service = service;
	}
}
+18 −6
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ package es.redmic.atlascommands.service;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.mapstruct.factory.Mappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@@ -29,35 +30,46 @@ import es.redmic.atlascommands.commands.layer.CreateLayerCommand;
import es.redmic.atlascommands.commands.layer.DeleteLayerCommand;
import es.redmic.atlascommands.commands.layer.UpdateLayerCommand;
import es.redmic.atlascommands.handler.LayerCommandHandler;
import es.redmic.atlascommands.mapper.LayerInfoDTOMapper;
import es.redmic.atlaslib.dto.layer.LayerDTO;
import es.redmic.atlaslib.dto.layerinfo.LayerInfoDTO;
import es.redmic.commandslib.service.CommandServiceItfc;

@Service
public class LayerService implements CommandServiceItfc<LayerDTO> {
public class LayerService implements CommandServiceItfc<LayerInfoDTO> {

	protected static Logger logger = LogManager.getLogger();

	private final LayerCommandHandler commandHandler;

	private OGCLayerService ogcService;

	@Autowired
	public LayerService(LayerCommandHandler commandHandler) {
	public LayerService(LayerCommandHandler commandHandler, OGCLayerService ogcService) {
		this.commandHandler = commandHandler;
		this.ogcService = ogcService;
	}

	@Override
	public LayerDTO create(LayerDTO layer) {
	public LayerDTO create(LayerInfoDTO layerInfo) {

		logger.debug("Create Layer");

		return commandHandler.save(new CreateLayerCommand(layer));
		LayerDTO layerDTO = ogcService.getLayerFromWMSService(layerInfo.getUrlSource(), layerInfo.getName());

		return commandHandler
				.save(new CreateLayerCommand(Mappers.getMapper(LayerInfoDTOMapper.class).map(layerInfo, layerDTO)));
	}

	@Override
	public LayerDTO update(String id, LayerDTO layer) {
	public LayerDTO update(String id, LayerInfoDTO layerInfo) {

		logger.debug("Update Layer");

		return commandHandler.update(id, new UpdateLayerCommand(layer));
		LayerDTO layerDTO = ogcService.getLayerFromWMSService(layerInfo.getUrlSource(), layerInfo.getName());

		return commandHandler.update(id,
				new UpdateLayerCommand(Mappers.getMapper(LayerInfoDTOMapper.class).map(layerInfo, layerDTO)));
	}

	@Override
+24 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import es.redmic.atlaslib.dto.layer.LatLonBoundingBoxDTO;
import es.redmic.atlaslib.dto.layer.LayerDTO;
import es.redmic.atlaslib.dto.layer.ProtocolDTO;
import es.redmic.atlaslib.dto.layer.StyleLayerDTO;
import es.redmic.atlaslib.dto.layerinfo.LayerInfoDTO;
import es.redmic.atlaslib.events.layer.LayerEventTypes;
import es.redmic.atlaslib.events.layer.create.CreateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerEvent;
@@ -52,6 +53,7 @@ import es.redmic.atlaslib.events.layer.update.UpdateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerFailedEvent;
import es.redmic.exception.common.ExceptionType;
import es.redmic.test.atlascommands.integration.category.CategoryDataUtil;
import es.redmic.test.atlascommands.integration.themeinspire.ThemeInspireDataUtil;

public abstract class LayerDataUtil {
@@ -193,6 +195,28 @@ public abstract class LayerDataUtil {
		return event;
	}

	public static LayerInfoDTO getLayerInfo(String code) {

		LayerInfoDTO layerInfo = new LayerInfoDTO();

		layerInfo.setId(PREFIX + code);
		layerInfo.setName("Prueba");
		layerInfo.setAlias("Prueba");
		layerInfo.setDescription("Prueba");

		layerInfo.setUrlSource("http://redmic.es");

		layerInfo.setParent(CategoryDataUtil.getCategory("3442"));

		layerInfo.setThemeInspire(ThemeInspireDataUtil.getThemeInspire("cc"));

		layerInfo.setProtocols(getProtocols());

		layerInfo.setLatLonBoundsImage(getLatLonBoundingBoxDTO());

		return layerInfo;
	}

	@SuppressWarnings("serial")
	public static LayerDTO getLayer(String code) {

+19 −8
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import java.io.File;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
@@ -68,7 +69,7 @@ import org.springframework.util.concurrent.ListenableFuture;
import es.redmic.atlascommands.AtlasCommandsApplication;
import es.redmic.atlascommands.handler.LayerCommandHandler;
import es.redmic.atlascommands.statestore.LayerStateStore;
import es.redmic.atlaslib.dto.layer.LayerDTO;
import es.redmic.atlaslib.dto.layerinfo.LayerInfoDTO;
import es.redmic.atlaslib.events.layer.create.CreateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerEvent;
import es.redmic.atlaslib.events.layer.delete.DeleteLayerConfirmedEvent;
@@ -149,7 +150,12 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
	@Test
	public void createLayer_SendCreateLayerEvent_IfCommandWasSuccess() throws Exception {

		LayerDTO layerDTO = LayerDataUtil.getLayer(CODE);
		LayerInfoDTO layerInfoDTO = LayerDataUtil.getLayerInfo(CODE);

		String originalName = "batimetriaGlobal";

		layerInfoDTO.setUrlSource(new File("src/test/resources/data/capabilities/wms.xml").toURI().toString());
		layerInfoDTO.setName(originalName);

		// @formatter:off
		
@@ -158,14 +164,14 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		this.mockMvc
				.perform(post(CATEGORY_PATH)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(mapper.writeValueAsString(layerDTO))
						.content(mapper.writeValueAsString(layerInfoDTO))
						.contentType(MediaType.APPLICATION_JSON)
						.accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(jsonPath("$.success", is(true)))
				.andExpect(jsonPath("$.body", notNullValue()))
				.andExpect(jsonPath("$.body.id", is(id)))
				.andExpect(jsonPath("$.body.name", is(layerDTO.getName())));
				.andExpect(jsonPath("$.body.name", is(layerInfoDTO.getName())));
		
		// @formatter:on

@@ -175,7 +181,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		assertNotNull(event);
		assertEquals(event.getType(), expectedEvent.getType());
		assertEquals(event.getVersion(), expectedEvent.getVersion());
		assertEquals(event.getLayer().getName(), expectedEvent.getLayer().getName());
		assertEquals(event.getLayer().getName(), originalName);
	}

	@Test
@@ -183,7 +189,12 @@ public class LayerRestTest extends DocumentationCommandBaseTest {

		when(layerStateStore.getLayer(anyString())).thenReturn(LayerDataUtil.getLayerCreatedEvent(CODE));

		LayerDTO layerDTO = LayerDataUtil.getLayer(CODE);
		String originalName = "batimetriaGlobal";

		LayerInfoDTO layerInfoDTO = LayerDataUtil.getLayerInfo(CODE);

		layerInfoDTO.setUrlSource(new File("src/test/resources/data/capabilities/wms.xml").toURI().toString());
		layerInfoDTO.setName(originalName);

		// @formatter:off
		
@@ -192,7 +203,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		this.mockMvc
				.perform(put(CATEGORY_PATH + "/" + id)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(mapper.writeValueAsString(layerDTO))
						.content(mapper.writeValueAsString(layerInfoDTO))
						.contentType(MediaType.APPLICATION_JSON)
						.accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
@@ -208,7 +219,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		assertNotNull(event);
		assertEquals(event.getType(), expectedEvent.getType());
		assertEquals(event.getVersion(), expectedEvent.getVersion());
		assertEquals(event.getLayer().getName(), expectedEvent.getLayer().getName());
		assertEquals(event.getLayer().getName(), originalName);
		assertEquals(event.getAggregateId(), expectedEvent.getAggregateId());
	}

+9 −1
Original line number Diff line number Diff line
@@ -6,6 +6,11 @@
		"id": {
			"type": ["string", "null"]
		},
		"name": {
			"type": "string",
			"minLength": 1,
			"maxLength": 500
		},
		"themeInspire": {
			"type": ["integer", "null"],
			"url": "/api/atlas/commands/themeinspire"
@@ -38,12 +43,15 @@
			"type": "integer",
			"default": "0"
		},
		"urlSource": {
			"type": "string"
		},
		"parent": {
			"type": ["integer", "null"],
			"url": "/api/atlas/commands/category"
		}
	},
	"required": ["protocols", "atlas", "refresh"],
	"required": ["name", "protocols", "atlas", "refresh", "urlSource"],
	"definitions": {
		"LatLonBoundingBoxDTO": {
			"type": ["object", "null"],