Loading atlas-commands/src/main/java/es/redmic/atlascommands/controller/LayerController.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; } } atlas-commands/src/main/java/es/redmic/atlascommands/service/LayerService.java +18 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading atlas-commands/src/test/java/es/redmic/test/atlascommands/integration/layer/LayerDataUtil.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -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) { Loading atlas-commands/src/test/java/es/redmic/test/atlascommands/integration/layer/LayerRestTest.java +19 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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()) Loading @@ -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()); } Loading atlas-commands/src/test/resources/data/schemas/layerschema.json +9 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ "id": { "type": ["string", "null"] }, "name": { "type": "string", "minLength": 1, "maxLength": 500 }, "themeInspire": { "type": ["integer", "null"], "url": "/api/atlas/commands/themeinspire" Loading Loading @@ -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"], Loading Loading
atlas-commands/src/main/java/es/redmic/atlascommands/controller/LayerController.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; } }
atlas-commands/src/main/java/es/redmic/atlascommands/service/LayerService.java +18 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading
atlas-commands/src/test/java/es/redmic/test/atlascommands/integration/layer/LayerDataUtil.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -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) { Loading
atlas-commands/src/test/java/es/redmic/test/atlascommands/integration/layer/LayerRestTest.java +19 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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()) Loading @@ -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()); } Loading
atlas-commands/src/test/resources/data/schemas/layerschema.json +9 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ "id": { "type": ["string", "null"] }, "name": { "type": "string", "minLength": 1, "maxLength": 500 }, "themeInspire": { "type": ["integer", "null"], "url": "/api/atlas/commands/themeinspire" Loading Loading @@ -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"], Loading