diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapController.java b/src/main/java/org/gridsuite/network/map/NetworkMapController.java index 5833417b..d6d02ef2 100644 --- a/src/main/java/org/gridsuite/network/map/NetworkMapController.java +++ b/src/main/java/org/gridsuite/network/map/NetworkMapController.java @@ -6,12 +6,14 @@ */ package org.gridsuite.network.map; +import com.fasterxml.jackson.annotation.JsonView; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import org.gridsuite.network.map.dto.ElementInfos; +import org.gridsuite.network.map.dto.View; import org.gridsuite.network.map.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; @@ -128,6 +130,18 @@ public class NetworkMapController { return networkMapService.getLccConverterStations(networkUuid, variantId, substationsIds); } + @GetMapping(value = "/networks/{networkUuid}/elements/list_view", produces = APPLICATION_JSON_VALUE) + @Operation(summary = "Get network elements") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Elements description")}) + @JsonView(View.ListView.class) + public @ResponseBody List getListViewElementsInfos(@Parameter(description = "Network UUID") @PathVariable("networkUuid") UUID networkUuid, + @Parameter(description = "Variant Id") @RequestParam(name = "variantId", required = false) String variantId, + @Parameter(description = "Substations id") @RequestParam(name = "substationsIds", required = false) List substationsIds, + @Parameter(description = "Element type") @RequestParam(name = "elementType") ElementType elementType, + @Parameter(description = "Info type") @RequestParam(name = "infoType") ElementInfos.InfoType infoType) { + return networkMapService.getElementsInfos(networkUuid, variantId, substationsIds, elementType, infoType); + } + @GetMapping(value = "/networks/{networkUuid}/elements", produces = APPLICATION_JSON_VALUE) @Operation(summary = "Get network elements") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Elements description")}) diff --git a/src/main/java/org/gridsuite/network/map/dto/ElementInfos.java b/src/main/java/org/gridsuite/network/map/dto/ElementInfos.java index 5c9affb8..3a9a0eb6 100644 --- a/src/main/java/org/gridsuite/network/map/dto/ElementInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/ElementInfos.java @@ -7,6 +7,7 @@ package org.gridsuite.network.map.dto; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonView; import com.powsybl.iidm.network.*; import lombok.Getter; import lombok.experimental.SuperBuilder; @@ -32,9 +33,11 @@ public enum InfoType { //LevelOfDetail TAB } + @JsonView({View.ListView.class}) private String id; @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonView({View.ListView.class}) private String name; public static ElementInfos toData(Identifiable identifiable) { diff --git a/src/main/java/org/gridsuite/network/map/dto/View.java b/src/main/java/org/gridsuite/network/map/dto/View.java new file mode 100644 index 00000000..cd4d7fd2 --- /dev/null +++ b/src/main/java/org/gridsuite/network/map/dto/View.java @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2023, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.network.map.dto; + +/** + * @author Slimane Amar + */ +public class View { + public static interface ListView { + } + + public static interface MapView { + } + + public static interface TabView { + } + + public static interface FormView { + } +}