diff --git a/src/main/java/org/gridsuite/network/map/dto/InfoTypeParameters.java b/src/main/java/org/gridsuite/network/map/dto/InfoTypeParameters.java index 30bf4d7d..af59b76c 100644 --- a/src/main/java/org/gridsuite/network/map/dto/InfoTypeParameters.java +++ b/src/main/java/org/gridsuite/network/map/dto/InfoTypeParameters.java @@ -16,6 +16,7 @@ public class InfoTypeParameters { public static final String QUERY_PARAM_DC_POWERFACTOR = "dcPowerFactor"; public static final String QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS = "loadOperationalLimitGroups"; public static final String QUERY_PARAM_LOAD_REGULATING_TERMINALS = "loadRegulatingTerminals"; + public static final String QUERY_PARAM_LOAD_NETWORK_COMPONENTS = "loadNetworkComponents"; public static final InfoTypeParameters TAB = new InfoTypeParameters(ElementInfos.InfoType.TAB, null); diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/bus/BusTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/bus/BusTabInfos.java index e5493ec1..252c8c7f 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/bus/BusTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/bus/BusTabInfos.java @@ -25,8 +25,10 @@ public class BusTabInfos extends ElementInfosWithProperties { private Double angle; + @JsonInclude(JsonInclude.Include.NON_NULL) private Integer synchronousComponentNum; + @JsonInclude(JsonInclude.Include.NON_NULL) private Integer connectedComponentNum; private String voltageLevelId; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/BusInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/BusInfosMapper.java index 0e29f551..8e9e5b30 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/BusInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/BusInfosMapper.java @@ -13,6 +13,9 @@ import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.utils.ElementUtils; +import java.util.Optional; + +import static org.gridsuite.network.map.dto.InfoTypeParameters.QUERY_PARAM_LOAD_NETWORK_COMPONENTS; import static org.gridsuite.network.map.dto.utils.ElementUtils.getProperties; import static org.gridsuite.network.map.dto.utils.ElementUtils.mapCountry; @@ -25,14 +28,17 @@ private BusInfosMapper() { } public static ElementInfos toData(Identifiable identifiable, InfoTypeParameters infoTypeParameters) { + boolean shouldLoadNetworkComponents = Optional.ofNullable(infoTypeParameters.getOptionalParameters().get(QUERY_PARAM_LOAD_NETWORK_COMPONENTS)) + .map(Boolean::valueOf) + .orElse(false); return switch (infoTypeParameters.getInfoType()) { case LIST -> ElementInfosMapper.toListInfos(identifiable); - case TAB -> toTabInfos(identifiable); + case TAB -> toTabInfos(identifiable, shouldLoadNetworkComponents); default -> throw new UnsupportedOperationException("TODO"); }; } - private static BusTabInfos toTabInfos(Identifiable identifiable) { + private static BusTabInfos toTabInfos(Identifiable identifiable, boolean shouldLoadNetworkComponents) { Bus bus = (Bus) identifiable; BusTabInfos.BusTabInfosBuilder builder = BusTabInfos.builder().id(bus.getId()) .angle(bus.getAngle()) @@ -40,12 +46,16 @@ private static BusTabInfos toTabInfos(Identifiable identifiable) { .voltageLevelId(bus.getVoltageLevel().getId()) .nominalVoltage(bus.getVoltageLevel().getNominalV()) .country(mapCountry(bus.getVoltageLevel().getSubstation().orElse(null))) - .synchronousComponentNum(bus.getSynchronousComponent().getNum()) .properties(getProperties(bus)) - .connectedComponentNum(bus.getConnectedComponent().getNum()) .substationProperties(bus.getVoltageLevel().getSubstation().map(ElementUtils::getProperties).orElse(null)) .voltageLevelProperties(getProperties(bus.getVoltageLevel())); + if (shouldLoadNetworkComponents) { + builder + .synchronousComponentNum(bus.getSynchronousComponent().getNum()) + .connectedComponentNum(bus.getConnectedComponent().getNum()); + } + return builder.build(); } } diff --git a/src/test/java/org/gridsuite/network/map/NetworkMapControllerTest.java b/src/test/java/org/gridsuite/network/map/NetworkMapControllerTest.java index 9e9c2117..fead089f 100644 --- a/src/test/java/org/gridsuite/network/map/NetworkMapControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/NetworkMapControllerTest.java @@ -76,6 +76,7 @@ class NetworkMapControllerTest { public static final String QUERY_PARAM_DC_POWER_FACTOR = "dcPowerFactor"; public static final String QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS = "loadOperationalLimitGroups"; public static final String QUERY_PARAM_LOAD_REGULATING_TERMINALS = "loadRegulatingTerminals"; + public static final String QUERY_PARAM_LOAD_NETWORK_COMPONENTS = "loadNetworkComponents"; public static final String QUERY_PARAM_NOMINAL_VOLTAGES = "nominalVoltages"; @Autowired @@ -1443,6 +1444,7 @@ private void succeedingTestForElementsInfos(UUID networkUuid, String variantId, if (withOptionalLoading) { queryParams.add(String.format(QUERY_FORMAT_ADDITIONAL_PARAMS, QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS), String.valueOf(true)); queryParams.add(String.format(QUERY_FORMAT_ADDITIONAL_PARAMS, QUERY_PARAM_LOAD_REGULATING_TERMINALS), String.valueOf(true)); + queryParams.add(String.format(QUERY_FORMAT_ADDITIONAL_PARAMS, QUERY_PARAM_LOAD_NETWORK_COMPONENTS), String.valueOf(true)); } MvcResult mvcResult = mvc.perform(post("/v1/networks/{networkUuid}/elements", networkUuid) .queryParams(queryParams) @@ -1529,7 +1531,8 @@ private void succeedingTestForAllEquipmentsInfos(UUID networkUuid, String varian String.valueOf(ElementType.BRANCH), Map.of(QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS, String.valueOf(true)), String.valueOf(ElementType.LINE), Map.of(QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS, String.valueOf(true)), String.valueOf(ElementType.TWO_WINDINGS_TRANSFORMER), Map.of(QUERY_PARAM_LOAD_OPERATIONAL_LIMIT_GROUPS, String.valueOf(true)), - String.valueOf(ElementType.GENERATOR), Map.of(QUERY_PARAM_LOAD_REGULATING_TERMINALS, String.valueOf(true)) + String.valueOf(ElementType.GENERATOR), Map.of(QUERY_PARAM_LOAD_REGULATING_TERMINALS, String.valueOf(true)), + String.valueOf(ElementType.BUS), Map.of(QUERY_PARAM_LOAD_NETWORK_COMPONENTS, String.valueOf(true)) ); } else { body = Map.of(); diff --git a/src/test/resources/all-data-without-optionals.json b/src/test/resources/all-data-without-optionals.json index fba77e8b..c72fb7b0 100644 --- a/src/test/resources/all-data-without-optionals.json +++ b/src/test/resources/all-data-without-optionals.json @@ -2165,8 +2165,6 @@ "id": "VLGEN_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLGEN", "nominalVoltage": 24.0, "country": "FR", @@ -2181,8 +2179,6 @@ "id": "VLHV1_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLHV1", "nominalVoltage": 380.0, "country": "FR", @@ -2194,8 +2190,6 @@ "id": "VLHV2_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLHV2", "nominalVoltage": 380.0 }, @@ -2203,8 +2197,6 @@ "id": "VLLOAD_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLLOAD", "nominalVoltage": 150.0 }, @@ -2212,8 +2204,6 @@ "id": "VLNEW2_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLNEW2", "nominalVoltage": 225.0, "country": "FR", @@ -2228,8 +2218,6 @@ "id": "VLGEN3_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLGEN3", "nominalVoltage": 24.0, "country": "FR", @@ -2241,8 +2229,6 @@ "id": "VLGEN6_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 0, - "connectedComponentNum": 0, "voltageLevelId": "VLGEN6", "nominalVoltage": 24.0, "country": "FR" @@ -2251,8 +2237,6 @@ "id": "VLGEN4_0", "v": "NaN", "angle": "NaN", - "synchronousComponentNum": 1, - "connectedComponentNum": 1, "voltageLevelId": "VLGEN4", "nominalVoltage": 24.0, "country": "FR"