From 543008d6417afa0f59023a76f635f03279dceafc Mon Sep 17 00:00:00 2001 From: Tristan Chuine Date: Fri, 22 Aug 2025 10:07:06 +0200 Subject: [PATCH 01/26] jsonschema for types --- pom.xml | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b08b3a9f..6d664e22 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ - + 4.38.0 42.0.0 gridsuite org.gridsuite:network-map-server @@ -75,6 +75,83 @@ io.github.git-commit-id git-commit-id-maven-plugin + + com.github.victools + jsonschema-maven-plugin + ${victools.jsonschema.version} + + + process-sources + generate + + + + + org/gridsuite/network/map/dto/**TabInfos + + WITH_ALL_DEPENDENCIES + ${project.build.outputDirectory}/schemas + {1}/{0}-schema.json + DRAFT_2020_12 + + + PLAIN_JSON + + + + + + + + + + + + + + + + + + + + Jackson + + + + + + + + + + JakartaValidation + + + + + + + JavaxValidation + + + + + + + + @@ -90,6 +167,13 @@ pom import + + com.github.victools + jsonschema-generator-bom + ${victools.jsonschema.version} + pom + import + @@ -102,9 +186,24 @@ lombok provided + + com.github.victools + jsonschema-generator + + + com.github.victools + jsonschema-module-jackson + + + com.github.victools + jsonschema-module-jakarta-validation + + + com.github.victools + jsonschema-module-javax-validation + - com.powsybl powsybl-network-store-client From 2174d870b299119ac99235e926a7c5f36addd1ad Mon Sep 17 00:00:00 2001 From: Tristan Chuine Date: Fri, 22 Aug 2025 15:20:36 +0200 Subject: [PATCH 02/26] Add endpoint and optimize data sent --- .../network/map/NetworkMapController.java | 1 + .../network/map/SchemaController.java | 38 ++++++++ .../map/{ => services}/NetworkMapService.java | 2 +- .../network/map/services/SchemaService.java | 82 +++++++++++++++++ .../map/ListHandlingControllerTest.java | 1 + .../network/map/SchemaControllerTest.java | 89 +++++++++++++++++++ 6 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/gridsuite/network/map/SchemaController.java rename src/main/java/org/gridsuite/network/map/{ => services}/NetworkMapService.java (99%) create mode 100644 src/main/java/org/gridsuite/network/map/services/SchemaService.java create mode 100644 src/test/java/org/gridsuite/network/map/SchemaControllerTest.java diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapController.java b/src/main/java/org/gridsuite/network/map/NetworkMapController.java index 5dce4984..4f557737 100644 --- a/src/main/java/org/gridsuite/network/map/NetworkMapController.java +++ b/src/main/java/org/gridsuite/network/map/NetworkMapController.java @@ -15,6 +15,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.gridsuite.network.map.dto.*; import org.gridsuite.network.map.dto.definition.hvdc.HvdcShuntCompensatorsInfos; +import org.gridsuite.network.map.services.NetworkMapService; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/gridsuite/network/map/SchemaController.java b/src/main/java/org/gridsuite/network/map/SchemaController.java new file mode 100644 index 00000000..aeca90e6 --- /dev/null +++ b/src/main/java/org/gridsuite/network/map/SchemaController.java @@ -0,0 +1,38 @@ +package org.gridsuite.network.map; + +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.tags.Tag; +import lombok.AllArgsConstructor; +import org.gridsuite.network.map.dto.ElementInfos.InfoType; +import org.gridsuite.network.map.dto.ElementType; +import org.gridsuite.network.map.services.SchemaService; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.ResponseStatusException; + +@RestController +@RequestMapping(value = "/" + SchemaController.API_VERSION + "/schemas") +@Tag(name = "network-map-server") +@AllArgsConstructor +public class SchemaController { + public static final String API_VERSION = "v1"; + public static final String APPLICATION_JSON_SCHEMA_VALUE = "application/schema+json"; + private final SchemaService schemaService; + + @GetMapping(value = "/{elementType}/{infoType}", produces = APPLICATION_JSON_SCHEMA_VALUE) + @Operation(summary = "Get network elements") + @ApiResponse(responseCode = "200", description = "Elements description") + public String getElementSchema(@Parameter(description = "Element type") @PathVariable(name = "elementType") ElementType elementType, + @Parameter(description = "Info type") @PathVariable(name = "infoType") InfoType infoType) { + try { + return schemaService.getSchema(elementType, infoType); + } catch (final UnsupportedOperationException ex) { + throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "The view " + infoType + " for " + elementType + " type is not available yet."); + } + } +} diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapService.java b/src/main/java/org/gridsuite/network/map/services/NetworkMapService.java similarity index 99% rename from src/main/java/org/gridsuite/network/map/NetworkMapService.java rename to src/main/java/org/gridsuite/network/map/services/NetworkMapService.java index 3ab0dd7d..297802a7 100644 --- a/src/main/java/org/gridsuite/network/map/NetworkMapService.java +++ b/src/main/java/org/gridsuite/network/map/services/NetworkMapService.java @@ -4,7 +4,7 @@ * 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; +package org.gridsuite.network.map.services; import com.powsybl.commons.PowsyblException; import com.powsybl.iidm.network.*; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java new file mode 100644 index 00000000..ac63ee28 --- /dev/null +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -0,0 +1,82 @@ +package org.gridsuite.network.map.services; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.NonNull; +import org.gridsuite.network.map.dto.ElementInfos.InfoType; +import org.gridsuite.network.map.dto.ElementType; +import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; +import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; +import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; +import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; +import org.gridsuite.network.map.dto.definition.generator.GeneratorTabInfos; +import org.gridsuite.network.map.dto.definition.hvdc.HvdcTabInfos; +import org.gridsuite.network.map.dto.definition.lccconverterstation.LccConverterStationTabInfos; +import org.gridsuite.network.map.dto.definition.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.load.LoadTabInfos; +import org.gridsuite.network.map.dto.definition.shuntcompensator.ShuntCompensatorTabInfos; +import org.gridsuite.network.map.dto.definition.staticvarcompensator.StaticVarCompensatorTabInfos; +import org.gridsuite.network.map.dto.definition.substation.SubstationTabInfos; +import org.gridsuite.network.map.dto.definition.threewindingstransformer.ThreeWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.tieline.TieLineTabInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.voltagelevel.VoltageLevelTabInfos; +import org.gridsuite.network.map.dto.definition.vscconverterstation.VscConverterStationTabInfos; +import org.springframework.core.io.ResourceLoader; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.EnumMap; + +@Service +public class SchemaService { + //TODO transform to a EnumMap> later + private final EnumMap tabInfosSchemas; + + /** + * @apiNote use class instance to be more secure with enum and classes rename/moving/etc with IDE + */ + private static Class getTabInfosClass(final ElementType elementType) { + return switch (elementType) { + case BATTERY -> BatteryTabInfos.class; + case BUS -> BusTabInfos.class; + case BUSBAR_SECTION -> BusBarSectionTabInfos.class; + case DANGLING_LINE -> DanglingLineTabInfos.class; + case GENERATOR -> GeneratorTabInfos.class; + case HVDC_LINE, HVDC_LINE_LCC, HVDC_LINE_VSC -> HvdcTabInfos.class; + case LCC_CONVERTER_STATION -> LccConverterStationTabInfos.class; + case LINE -> LineTabInfos.class; + case LOAD -> LoadTabInfos.class; + case SHUNT_COMPENSATOR -> ShuntCompensatorTabInfos.class; + case STATIC_VAR_COMPENSATOR -> StaticVarCompensatorTabInfos.class; + case SUBSTATION -> SubstationTabInfos.class; + case THREE_WINDINGS_TRANSFORMER -> ThreeWindingsTransformerTabInfos.class; + case TIE_LINE -> TieLineTabInfos.class; + case TWO_WINDINGS_TRANSFORMER -> TwoWindingsTransformerTabInfos.class; + case VOLTAGE_LEVEL -> VoltageLevelTabInfos.class; + case VSC_CONVERTER_STATION -> VscConverterStationTabInfos.class; + }; + } + + /** + * Minimify the JSON and store in RAM for performance in giving it to clients. + * @implNote Not done as static because if a file is missing, the exception will block the class loading by the classloader. + */ + public SchemaService(final ResourceLoader resourceLoader) throws IOException { + final ObjectMapper objectMapper = new ObjectMapper(); //just need a simple parser to minimize + this.tabInfosSchemas = new EnumMap<>(ElementType.class); + final var cl = this.getClass().getClassLoader(); + for (ElementType elementType : ElementType.values()) { + this.tabInfosSchemas.put(elementType, + objectMapper.readTree(resourceLoader.getResource("classpath:schemas/" + getTabInfosClass(elementType).getCanonicalName().replace('.', '/') + "-schema.json").getContentAsString(StandardCharsets.UTF_8) + ).toString()); // we store minimized version of the json + } + } + + public String getSchema(@NonNull final ElementType elementType, @NonNull final InfoType infoType) { + if (infoType != InfoType.TAB) { + throw new UnsupportedOperationException("This info type is not currently supported."); + } + return tabInfosSchemas.get(elementType); + } +} diff --git a/src/test/java/org/gridsuite/network/map/ListHandlingControllerTest.java b/src/test/java/org/gridsuite/network/map/ListHandlingControllerTest.java index cd890dda..f5730a9a 100644 --- a/src/test/java/org/gridsuite/network/map/ListHandlingControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/ListHandlingControllerTest.java @@ -7,6 +7,7 @@ import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.InfoTypeParameters; +import org.gridsuite.network.map.services.NetworkMapService; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java new file mode 100644 index 00000000..ca6f13a0 --- /dev/null +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -0,0 +1,89 @@ +package org.gridsuite.network.map; + +import org.assertj.core.api.WithAssertions; +import org.gridsuite.network.map.dto.ElementInfos.InfoType; +import org.gridsuite.network.map.dto.ElementType; +import org.gridsuite.network.map.services.SchemaService; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.EnumMap; +import java.util.Map; +import java.util.stream.Stream; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(SchemaController.class) +class SchemaControllerTest implements WithAssertions { + @Autowired + private MockMvc mockMvc; + + @SpyBean //need to init it for the controller + private SchemaService schemaService; + + final ClassLoader cl = this.getClass().getClassLoader(); + + private static Stream schemaRequestValues() { + final Map> cases = new EnumMap<>(ElementType.class); + for (ElementType elementType : ElementType.values()) { + final Map subCases = new EnumMap<>(InfoType.class); + cases.put(elementType, subCases); + for (InfoType infoType : InfoType.values()) { + subCases.put(infoType, null); + } + } + final String dtoPath = "schemas/org/gridsuite/network/map/dto/definition/"; + cases.get(ElementType.BATTERY).put(InfoType.TAB, dtoPath + "battery/BatteryTabInfos-schema.json"); + cases.get(ElementType.BUS).put(InfoType.TAB, dtoPath + "bus/BusTabInfos-schema.json"); + cases.get(ElementType.BUSBAR_SECTION).put(InfoType.TAB, dtoPath + "busbarsection/BusBarSectionTabInfos-schema.json"); + cases.get(ElementType.DANGLING_LINE).put(InfoType.TAB, dtoPath + "danglingline/DanglingLineTabInfos-schema.json"); + cases.get(ElementType.GENERATOR).put(InfoType.TAB, dtoPath + "generator/GeneratorTabInfos-schema.json"); + final String hvdcTabInfosSchema = dtoPath + "hvdc/HvdcTabInfos-schema.json"; + cases.get(ElementType.HVDC_LINE).put(InfoType.TAB, hvdcTabInfosSchema); + cases.get(ElementType.HVDC_LINE_LCC).put(InfoType.TAB, hvdcTabInfosSchema); + cases.get(ElementType.HVDC_LINE_VSC).put(InfoType.TAB, hvdcTabInfosSchema); + cases.get(ElementType.LCC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "lccconverterstation/LccConverterStationTabInfos-schema.json"); + cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "line/LineTabInfos-schema.json"); + cases.get(ElementType.LOAD).put(InfoType.TAB, dtoPath + "load/LoadTabInfos-schema.json"); + cases.get(ElementType.SHUNT_COMPENSATOR).put(InfoType.TAB, dtoPath + "shuntcompensator/ShuntCompensatorTabInfos-schema.json"); + cases.get(ElementType.STATIC_VAR_COMPENSATOR).put(InfoType.TAB, dtoPath + "staticvarcompensator/StaticVarCompensatorTabInfos-schema.json"); + cases.get(ElementType.SUBSTATION).put(InfoType.TAB, dtoPath + "substation/SubstationTabInfos-schema.json"); + cases.get(ElementType.THREE_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "threewindingstransformer/ThreeWindingsTransformerTabInfos-schema.json"); + cases.get(ElementType.TIE_LINE).put(InfoType.TAB, dtoPath + "tieline/TieLineTabInfos-schema.json"); + cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); + cases.get(ElementType.VOLTAGE_LEVEL).put(InfoType.TAB, dtoPath + "voltagelevel/VoltageLevelTabInfos-schema.json"); + cases.get(ElementType.VSC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "vscconverterstation/VscConverterStationTabInfos-schema.json"); + return cases.entrySet().stream().flatMap(e1 -> e1.getValue().entrySet().stream().map(e2 -> Arguments.of(e1.getKey(), e2.getKey(), e2.getValue()))); + } + + @ParameterizedTest(name = "{0} (view {1})") + @MethodSource("schemaRequestValues") + void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iType, @Nullable final String resultPath) throws Exception { + ResultActions result = this.mockMvc.perform(get("/v1/schemas/{eType}/{iType}", eType, iType)).andDo(log()); + if (resultPath != null) { + try (final InputStream json = cl.getResourceAsStream(resultPath)) { + result.andExpectAll( + status().isOk(), + content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), + content().json(new String(json.readAllBytes(), StandardCharsets.UTF_8), true) + ); + } + } else { + result.andExpectAll(status().isNotImplemented()); + } + //assertThat("").isEqualToIgnoringWhitespace() + } +} From 45b92819c58346b9ab7860139a6780815cd8f4bc Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 14:17:32 +0200 Subject: [PATCH 03/26] Add schema description endpoint --- .../gridsuite/network/map/NetworkMapApi.java | 19 +++++++++++++++++++ .../network/map/NetworkMapController.java | 7 ++----- .../network/map/NetworkMapSwaggerConfig.java | 2 +- .../network/map/SchemaController.java | 5 ++--- .../network/map/services/SchemaService.java | 6 ++++-- .../network/map/SchemaControllerTest.java | 1 - 6 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 src/main/java/org/gridsuite/network/map/NetworkMapApi.java diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapApi.java b/src/main/java/org/gridsuite/network/map/NetworkMapApi.java new file mode 100644 index 00000000..95065773 --- /dev/null +++ b/src/main/java/org/gridsuite/network/map/NetworkMapApi.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2025, 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; + +/** + * @author Hugo Marcellin + */ + +public final class NetworkMapApi { + + private NetworkMapApi() { + } + + public static final String API_VERSION = "v1"; +} diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapController.java b/src/main/java/org/gridsuite/network/map/NetworkMapController.java index f053fabf..97b36ce2 100644 --- a/src/main/java/org/gridsuite/network/map/NetworkMapController.java +++ b/src/main/java/org/gridsuite/network/map/NetworkMapController.java @@ -32,14 +32,11 @@ * @author Franck Lecuyer */ @RestController -@RequestMapping(value = "/" + NetworkMapController.API_VERSION + "/") -@Tag(name = "network-map-server") +@RequestMapping(value = "/" + NetworkMapApi.API_VERSION + "/") +@Tag(name = "Network map server") @ComponentScan(basePackageClasses = NetworkMapService.class) @AllArgsConstructor public class NetworkMapController { - - public static final String API_VERSION = "v1"; - private final NetworkMapService networkMapService; @PostMapping(value = "/networks/{networkUuid}/elements-ids", produces = APPLICATION_JSON_VALUE) diff --git a/src/main/java/org/gridsuite/network/map/NetworkMapSwaggerConfig.java b/src/main/java/org/gridsuite/network/map/NetworkMapSwaggerConfig.java index 43517e80..5feb32af 100644 --- a/src/main/java/org/gridsuite/network/map/NetworkMapSwaggerConfig.java +++ b/src/main/java/org/gridsuite/network/map/NetworkMapSwaggerConfig.java @@ -22,6 +22,6 @@ public OpenAPI createOpenApi() { .info(new Info() .title("Network map API") .description("This is the documentation of network map REST API") - .version(NetworkMapController.API_VERSION)); + .version(NetworkMapApi.API_VERSION)); } } diff --git a/src/main/java/org/gridsuite/network/map/SchemaController.java b/src/main/java/org/gridsuite/network/map/SchemaController.java index aeca90e6..248c71d0 100644 --- a/src/main/java/org/gridsuite/network/map/SchemaController.java +++ b/src/main/java/org/gridsuite/network/map/SchemaController.java @@ -16,11 +16,10 @@ import org.springframework.web.server.ResponseStatusException; @RestController -@RequestMapping(value = "/" + SchemaController.API_VERSION + "/schemas") -@Tag(name = "network-map-server") +@RequestMapping(value = "/" + NetworkMapApi.API_VERSION + "/schemas") +@Tag(name = "Network map server - Schemas") @AllArgsConstructor public class SchemaController { - public static final String API_VERSION = "v1"; public static final String APPLICATION_JSON_SCHEMA_VALUE = "application/schema+json"; private final SchemaService schemaService; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index ac63ee28..7f745cbb 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -5,20 +5,21 @@ import org.gridsuite.network.map.dto.ElementInfos.InfoType; import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; +import org.gridsuite.network.map.dto.definition.branch.BranchTabInfos; +import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; import org.gridsuite.network.map.dto.definition.generator.GeneratorTabInfos; import org.gridsuite.network.map.dto.definition.hvdc.HvdcTabInfos; import org.gridsuite.network.map.dto.definition.lccconverterstation.LccConverterStationTabInfos; -import org.gridsuite.network.map.dto.definition.line.LineTabInfos; import org.gridsuite.network.map.dto.definition.load.LoadTabInfos; import org.gridsuite.network.map.dto.definition.shuntcompensator.ShuntCompensatorTabInfos; import org.gridsuite.network.map.dto.definition.staticvarcompensator.StaticVarCompensatorTabInfos; import org.gridsuite.network.map.dto.definition.substation.SubstationTabInfos; import org.gridsuite.network.map.dto.definition.threewindingstransformer.ThreeWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.tieline.TieLineTabInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.voltagelevel.VoltageLevelTabInfos; import org.gridsuite.network.map.dto.definition.vscconverterstation.VscConverterStationTabInfos; import org.springframework.core.io.ResourceLoader; @@ -55,6 +56,7 @@ private static Class getTabInfosClass(final ElementType elementType) { case TWO_WINDINGS_TRANSFORMER -> TwoWindingsTransformerTabInfos.class; case VOLTAGE_LEVEL -> VoltageLevelTabInfos.class; case VSC_CONVERTER_STATION -> VscConverterStationTabInfos.class; + case BRANCH -> BranchTabInfos.class; }; } diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index ca6f13a0..2d633d07 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -84,6 +84,5 @@ void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iTy } else { result.andExpectAll(status().isNotImplemented()); } - //assertThat("").isEqualToIgnoringWhitespace() } } From b92aa91edd57f3a664d432a6245cbe6bdffc3509 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 14:29:37 +0200 Subject: [PATCH 04/26] Add failIfNoClassesMatch --- pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6d664e22..4f2d04c4 100644 --- a/pom.xml +++ b/pom.xml @@ -93,7 +93,9 @@ ${project.build.outputDirectory}/schemas {1}/{0}-schema.json DRAFT_2020_12 - + + false + PLAIN_JSON PLAIN_JSON From 16aad655e63a7b79fba841951e48d772c2307324 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 14:39:50 +0200 Subject: [PATCH 06/26] Add junit-bom back --- pom.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 49e23cb2..631e05f2 100644 --- a/pom.xml +++ b/pom.xml @@ -159,7 +159,14 @@ - + + + org.junit + junit-bom + 5.13.4 + pom + import + From 232179ce893bd985e1cb2d1df920971182180cb4 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 14:50:07 +0200 Subject: [PATCH 07/26] Use mockbean instead of spybean --- .../java/org/gridsuite/network/map/SchemaControllerTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 2d633d07..4c6bcc1b 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; @@ -31,7 +32,7 @@ class SchemaControllerTest implements WithAssertions { @Autowired private MockMvc mockMvc; - @SpyBean //need to init it for the controller + @MockBean //need to init it for the controller private SchemaService schemaService; final ClassLoader cl = this.getClass().getClassLoader(); From 25afeac623e8ac5c8454cd5e2efa3273c9c6fc45 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 14:51:26 +0200 Subject: [PATCH 08/26] checkstyle --- .../java/org/gridsuite/network/map/SchemaControllerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 4c6bcc1b..5e4f0ac6 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.test.web.servlet.MockMvc; From e58b368c574b7fe6afd3e1cb8cbfd43aba530c94 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 15:21:24 +0200 Subject: [PATCH 09/26] rollback mockbean --- .../java/org/gridsuite/network/map/SchemaControllerTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 5e4f0ac6..a83f98f1 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.test.web.servlet.MockMvc; @@ -31,7 +32,7 @@ class SchemaControllerTest implements WithAssertions { @Autowired private MockMvc mockMvc; - @MockBean //need to init it for the controller + @SpyBean //need to init it for the controller private SchemaService schemaService; final ClassLoader cl = this.getClass().getClassLoader(); From 5966ef97f76e7f7ffe3e8d4933df58a652417c95 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 15:25:06 +0200 Subject: [PATCH 10/26] checkstyle --- .../java/org/gridsuite/network/map/SchemaControllerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index a83f98f1..2d633d07 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -9,7 +9,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; From 1995670c5cfde06768e7ef9e6a85b39b61e5b61b Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 15:35:02 +0200 Subject: [PATCH 11/26] add check at SchemaService construction --- .../gridsuite/network/map/services/SchemaService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index 7f745cbb..c0896a9d 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -69,9 +69,14 @@ public SchemaService(final ResourceLoader resourceLoader) throws IOException { this.tabInfosSchemas = new EnumMap<>(ElementType.class); final var cl = this.getClass().getClassLoader(); for (ElementType elementType : ElementType.values()) { - this.tabInfosSchemas.put(elementType, - objectMapper.readTree(resourceLoader.getResource("classpath:schemas/" + getTabInfosClass(elementType).getCanonicalName().replace('.', '/') + "-schema.json").getContentAsString(StandardCharsets.UTF_8) - ).toString()); // we store minimized version of the json + final var resource = resourceLoader.getResource( + "classpath:schemas/" + getTabInfosClass(elementType).getCanonicalName().replace('.', '/') + "-schema.json" + ); + if (resource.exists()) { + this.tabInfosSchemas.put(elementType, + objectMapper.readTree(resource.getContentAsString(StandardCharsets.UTF_8)).toString() + ); + } } } From c7de41f5cdec195779f29ac96bd96c9949166957 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 16:00:25 +0200 Subject: [PATCH 12/26] Fix branches tests --- .../definition/{branch => }/line/LineFormInfos.java | 2 +- .../dto/definition/{branch => }/line/LineMapInfos.java | 2 +- .../{branch => }/line/LineOperatingStatusInfos.java | 2 +- .../dto/definition/{branch => }/line/LineTabInfos.java | 2 +- .../definition/{branch => }/line/LineTooltipInfos.java | 2 +- .../TwoWindingsTransformerFormInfos.java | 2 +- .../TwoWindingsTransformerOperatingStatusInfos.java | 2 +- .../TwoWindingsTransformerTabInfos.java | 2 +- .../TwoWindingsTransformerTooltipInfos.java | 2 +- .../network/map/dto/mapper/LineInfosMapper.java | 4 ++-- .../dto/mapper/TwoWindingsTransformerInfosMapper.java | 10 +++++----- .../gridsuite/network/map/services/SchemaService.java | 4 ++-- .../gridsuite/network/map/SchemaControllerTest.java | 1 + 13 files changed, 19 insertions(+), 18 deletions(-) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineFormInfos.java (98%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineMapInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineOperatingStatusInfos.java (93%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineTabInfos.java (94%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineTooltipInfos.java (95%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerFormInfos.java (97%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java (89%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerTabInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java (93%) diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java similarity index 98% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java index 829ec972..633773a8 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java index fec9f801..9c260878 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java index cd3bcca4..74b8d862 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java similarity index 94% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java index a5e37bd2..3a4de078 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java similarity index 95% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java index 2a5a8625..43856653 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java similarity index 97% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java index e4722503..12606678 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java similarity index 89% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java index 31bf43de..7a762da7 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java index 8d894cfa..c072cce7 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java index 8b7bb2d2..722c9f54 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java index 5c11e701..1918bb35 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java @@ -12,8 +12,8 @@ import com.powsybl.iidm.network.extensions.Measurement.Type; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.branch.line.*; -import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos.LineTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.line.*; +import org.gridsuite.network.map.dto.definition.line.LineTabInfos.LineTabInfosBuilder; import org.gridsuite.network.map.dto.utils.ExtensionUtils; import static org.gridsuite.network.map.dto.InfoTypeParameters.QUERY_PARAM_DC_POWERFACTOR; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java index 655a7d76..eee6a077 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java @@ -15,11 +15,11 @@ import com.powsybl.iidm.network.extensions.TwoWindingsTransformerToBeEstimated; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerFormInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTooltipInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerFormInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTooltipInfos; import org.gridsuite.network.map.dto.definition.extension.TwoWindingsTransformerToBeEstimatedInfos; import org.gridsuite.network.map.dto.utils.ElementUtils; import org.gridsuite.network.map.dto.utils.ExtensionUtils; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index c0896a9d..4c2fd0d4 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -6,8 +6,8 @@ import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; import org.gridsuite.network.map.dto.definition.branch.BranchTabInfos; -import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 2d633d07..f00097b0 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -47,6 +47,7 @@ private static Stream schemaRequestValues() { } final String dtoPath = "schemas/org/gridsuite/network/map/dto/definition/"; cases.get(ElementType.BATTERY).put(InfoType.TAB, dtoPath + "battery/BatteryTabInfos-schema.json"); + cases.get(ElementType.BRANCH).put(InfoType.TAB, dtoPath + "branch/BranchTabInfos-schema.json"); cases.get(ElementType.BUS).put(InfoType.TAB, dtoPath + "bus/BusTabInfos-schema.json"); cases.get(ElementType.BUSBAR_SECTION).put(InfoType.TAB, dtoPath + "busbarsection/BusBarSectionTabInfos-schema.json"); cases.get(ElementType.DANGLING_LINE).put(InfoType.TAB, dtoPath + "danglingline/DanglingLineTabInfos-schema.json"); From d67aff8212fb35f1f607cf44cbf711304d138184 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 16:04:14 +0200 Subject: [PATCH 13/26] Update path instead of move files --- .../definition/{ => branch}/line/LineFormInfos.java | 2 +- .../dto/definition/{ => branch}/line/LineMapInfos.java | 2 +- .../{ => branch}/line/LineOperatingStatusInfos.java | 2 +- .../dto/definition/{ => branch}/line/LineTabInfos.java | 2 +- .../definition/{ => branch}/line/LineTooltipInfos.java | 2 +- .../TwoWindingsTransformerFormInfos.java | 2 +- .../TwoWindingsTransformerOperatingStatusInfos.java | 2 +- .../TwoWindingsTransformerTabInfos.java | 2 +- .../TwoWindingsTransformerTooltipInfos.java | 2 +- .../network/map/dto/mapper/LineInfosMapper.java | 4 ++-- .../dto/mapper/TwoWindingsTransformerInfosMapper.java | 10 +++++----- .../gridsuite/network/map/services/SchemaService.java | 4 ++-- .../gridsuite/network/map/SchemaControllerTest.java | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineFormInfos.java (98%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineMapInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineOperatingStatusInfos.java (93%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineTabInfos.java (94%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineTooltipInfos.java (95%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerFormInfos.java (97%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java (89%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerTabInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java (93%) diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java similarity index 98% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java index 633773a8..829ec972 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java index 9c260878..fec9f801 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java index 74b8d862..cd3bcca4 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java similarity index 94% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java index 3a4de078..a5e37bd2 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java similarity index 95% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java index 43856653..2a5a8625 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java similarity index 97% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java index 12606678..e4722503 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java similarity index 89% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java index 7a762da7..31bf43de 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java index c072cce7..8d894cfa 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java index 722c9f54..8b7bb2d2 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.network.map.dto.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java index 1918bb35..5c11e701 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java @@ -12,8 +12,8 @@ import com.powsybl.iidm.network.extensions.Measurement.Type; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.line.*; -import org.gridsuite.network.map.dto.definition.line.LineTabInfos.LineTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.branch.line.*; +import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos.LineTabInfosBuilder; import org.gridsuite.network.map.dto.utils.ExtensionUtils; import static org.gridsuite.network.map.dto.InfoTypeParameters.QUERY_PARAM_DC_POWERFACTOR; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java index eee6a077..655a7d76 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java @@ -15,11 +15,11 @@ import com.powsybl.iidm.network.extensions.TwoWindingsTransformerToBeEstimated; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerFormInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTooltipInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerFormInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTooltipInfos; import org.gridsuite.network.map.dto.definition.extension.TwoWindingsTransformerToBeEstimatedInfos; import org.gridsuite.network.map.dto.utils.ElementUtils; import org.gridsuite.network.map.dto.utils.ExtensionUtils; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index 4c2fd0d4..c0896a9d 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -6,8 +6,8 @@ import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; import org.gridsuite.network.map.dto.definition.branch.BranchTabInfos; -import org.gridsuite.network.map.dto.definition.line.LineTabInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index f00097b0..98a00402 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -57,14 +57,14 @@ private static Stream schemaRequestValues() { cases.get(ElementType.HVDC_LINE_LCC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.HVDC_LINE_VSC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.LCC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "lccconverterstation/LccConverterStationTabInfos-schema.json"); - cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "line/LineTabInfos-schema.json"); + cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "branch/line/LineTabInfos-schema.json"); cases.get(ElementType.LOAD).put(InfoType.TAB, dtoPath + "load/LoadTabInfos-schema.json"); cases.get(ElementType.SHUNT_COMPENSATOR).put(InfoType.TAB, dtoPath + "shuntcompensator/ShuntCompensatorTabInfos-schema.json"); cases.get(ElementType.STATIC_VAR_COMPENSATOR).put(InfoType.TAB, dtoPath + "staticvarcompensator/StaticVarCompensatorTabInfos-schema.json"); cases.get(ElementType.SUBSTATION).put(InfoType.TAB, dtoPath + "substation/SubstationTabInfos-schema.json"); cases.get(ElementType.THREE_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "threewindingstransformer/ThreeWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.TIE_LINE).put(InfoType.TAB, dtoPath + "tieline/TieLineTabInfos-schema.json"); - cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); + cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "branch/twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.VOLTAGE_LEVEL).put(InfoType.TAB, dtoPath + "voltagelevel/VoltageLevelTabInfos-schema.json"); cases.get(ElementType.VSC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "vscconverterstation/VscConverterStationTabInfos-schema.json"); return cases.entrySet().stream().flatMap(e1 -> e1.getValue().entrySet().stream().map(e2 -> Arguments.of(e1.getKey(), e2.getKey(), e2.getValue()))); From badc3231b8fd9b00f24c8d1b25d16acec62c468f Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 28 Aug 2025 18:06:32 +0200 Subject: [PATCH 14/26] Undo --- .../definition/{branch => }/line/LineFormInfos.java | 2 +- .../dto/definition/{branch => }/line/LineMapInfos.java | 2 +- .../{branch => }/line/LineOperatingStatusInfos.java | 2 +- .../dto/definition/{branch => }/line/LineTabInfos.java | 2 +- .../definition/{branch => }/line/LineTooltipInfos.java | 2 +- .../TwoWindingsTransformerFormInfos.java | 2 +- .../TwoWindingsTransformerOperatingStatusInfos.java | 2 +- .../TwoWindingsTransformerTabInfos.java | 2 +- .../TwoWindingsTransformerTooltipInfos.java | 2 +- .../network/map/dto/mapper/LineInfosMapper.java | 4 ++-- .../dto/mapper/TwoWindingsTransformerInfosMapper.java | 10 +++++----- .../gridsuite/network/map/services/SchemaService.java | 4 ++-- .../gridsuite/network/map/SchemaControllerTest.java | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineFormInfos.java (98%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineMapInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineOperatingStatusInfos.java (93%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineTabInfos.java (94%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/line/LineTooltipInfos.java (95%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerFormInfos.java (97%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java (89%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerTabInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{branch => }/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java (93%) diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java similarity index 98% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java index 829ec972..633773a8 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java index fec9f801..9c260878 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java index cd3bcca4..74b8d862 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java similarity index 94% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java index a5e37bd2..3a4de078 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java similarity index 95% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java index 2a5a8625..43856653 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.line; +package org.gridsuite.network.map.dto.definition.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java similarity index 97% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java index e4722503..12606678 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java similarity index 89% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java index 31bf43de..7a762da7 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java index 8d894cfa..c072cce7 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java index 8b7bb2d2..722c9f54 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java index 5c11e701..1918bb35 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java @@ -12,8 +12,8 @@ import com.powsybl.iidm.network.extensions.Measurement.Type; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.branch.line.*; -import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos.LineTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.line.*; +import org.gridsuite.network.map.dto.definition.line.LineTabInfos.LineTabInfosBuilder; import org.gridsuite.network.map.dto.utils.ExtensionUtils; import static org.gridsuite.network.map.dto.InfoTypeParameters.QUERY_PARAM_DC_POWERFACTOR; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java index 655a7d76..eee6a077 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java @@ -15,11 +15,11 @@ import com.powsybl.iidm.network.extensions.TwoWindingsTransformerToBeEstimated; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerFormInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTooltipInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerFormInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTooltipInfos; import org.gridsuite.network.map.dto.definition.extension.TwoWindingsTransformerToBeEstimatedInfos; import org.gridsuite.network.map.dto.utils.ElementUtils; import org.gridsuite.network.map.dto.utils.ExtensionUtils; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index c0896a9d..4c2fd0d4 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -6,8 +6,8 @@ import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; import org.gridsuite.network.map.dto.definition.branch.BranchTabInfos; -import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos; -import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 98a00402..f00097b0 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -57,14 +57,14 @@ private static Stream schemaRequestValues() { cases.get(ElementType.HVDC_LINE_LCC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.HVDC_LINE_VSC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.LCC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "lccconverterstation/LccConverterStationTabInfos-schema.json"); - cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "branch/line/LineTabInfos-schema.json"); + cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "line/LineTabInfos-schema.json"); cases.get(ElementType.LOAD).put(InfoType.TAB, dtoPath + "load/LoadTabInfos-schema.json"); cases.get(ElementType.SHUNT_COMPENSATOR).put(InfoType.TAB, dtoPath + "shuntcompensator/ShuntCompensatorTabInfos-schema.json"); cases.get(ElementType.STATIC_VAR_COMPENSATOR).put(InfoType.TAB, dtoPath + "staticvarcompensator/StaticVarCompensatorTabInfos-schema.json"); cases.get(ElementType.SUBSTATION).put(InfoType.TAB, dtoPath + "substation/SubstationTabInfos-schema.json"); cases.get(ElementType.THREE_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "threewindingstransformer/ThreeWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.TIE_LINE).put(InfoType.TAB, dtoPath + "tieline/TieLineTabInfos-schema.json"); - cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "branch/twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); + cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.VOLTAGE_LEVEL).put(InfoType.TAB, dtoPath + "voltagelevel/VoltageLevelTabInfos-schema.json"); cases.get(ElementType.VSC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "vscconverterstation/VscConverterStationTabInfos-schema.json"); return cases.entrySet().stream().flatMap(e1 -> e1.getValue().entrySet().stream().map(e2 -> Arguments.of(e1.getKey(), e2.getKey(), e2.getValue()))); From de97b436979450cc78f31705ca42dde68c783fdc Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Fri, 29 Aug 2025 10:18:35 +0200 Subject: [PATCH 15/26] Remove pom comments --- pom.xml | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index 631e05f2..888ea03e 100644 --- a/pom.xml +++ b/pom.xml @@ -95,24 +95,7 @@ {1}/{0}-schema.json DRAFT_2020_12 - - PLAIN_JSON - - - - - @@ -122,14 +105,12 @@ - Jackson - + @@ -139,14 +120,14 @@ JakartaValidation - + JavaxValidation - + From 0c0b6ce0546296d9a42f8fc129c751abe213f242 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Mon, 1 Sep 2025 10:29:06 +0200 Subject: [PATCH 16/26] Add null guard --- .../gridsuite/network/map/SchemaControllerTest.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index f00097b0..45559d98 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -76,11 +76,13 @@ void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iTy ResultActions result = this.mockMvc.perform(get("/v1/schemas/{eType}/{iType}", eType, iType)).andDo(log()); if (resultPath != null) { try (final InputStream json = cl.getResourceAsStream(resultPath)) { - result.andExpectAll( - status().isOk(), - content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), - content().json(new String(json.readAllBytes(), StandardCharsets.UTF_8), true) - ); + if(json != null) { + result.andExpectAll( + status().isOk(), + content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), + content().json(new String(json.readAllBytes(), StandardCharsets.UTF_8), true) + ); + } } } else { result.andExpectAll(status().isNotImplemented()); From 9c1204e8d3183424206a7ad02694d3dece9bb0c6 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Mon, 1 Sep 2025 10:30:09 +0200 Subject: [PATCH 17/26] checkstyle --- .../java/org/gridsuite/network/map/SchemaControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 45559d98..bc0686fc 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -76,7 +76,7 @@ void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iTy ResultActions result = this.mockMvc.perform(get("/v1/schemas/{eType}/{iType}", eType, iType)).andDo(log()); if (resultPath != null) { try (final InputStream json = cl.getResourceAsStream(resultPath)) { - if(json != null) { + if (json != null) { result.andExpectAll( status().isOk(), content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), From c460eb9c51046a6729494b8a9012f7a3bd0bcb04 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Mon, 1 Sep 2025 10:34:01 +0200 Subject: [PATCH 18/26] test --- .../definition/{ => branch}/line/LineFormInfos.java | 2 +- .../dto/definition/{ => branch}/line/LineMapInfos.java | 2 +- .../{ => branch}/line/LineOperatingStatusInfos.java | 2 +- .../dto/definition/{ => branch}/line/LineTabInfos.java | 2 +- .../definition/{ => branch}/line/LineTooltipInfos.java | 2 +- .../TwoWindingsTransformerFormInfos.java | 2 +- .../TwoWindingsTransformerOperatingStatusInfos.java | 2 +- .../TwoWindingsTransformerTabInfos.java | 2 +- .../TwoWindingsTransformerTooltipInfos.java | 2 +- .../network/map/dto/mapper/LineInfosMapper.java | 4 ++-- .../dto/mapper/TwoWindingsTransformerInfosMapper.java | 10 +++++----- .../gridsuite/network/map/services/SchemaService.java | 4 ++-- .../gridsuite/network/map/SchemaControllerTest.java | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineFormInfos.java (98%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineMapInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineOperatingStatusInfos.java (93%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineTabInfos.java (93%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/line/LineTooltipInfos.java (95%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerFormInfos.java (97%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java (89%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerTabInfos.java (96%) rename src/main/java/org/gridsuite/network/map/dto/definition/{ => branch}/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java (93%) diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java similarity index 98% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java index 633773a8..829ec972 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java index 9c260878..fec9f801 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineMapInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineMapInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java index 74b8d862..cd3bcca4 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java index 4ac0d622..9080233e 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java similarity index 95% rename from src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java index 43856653..2a5a8625 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/line/LineTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/line/LineTooltipInfos.java @@ -4,7 +4,7 @@ * 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.definition.line; +package org.gridsuite.network.map.dto.definition.branch.line; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java similarity index 97% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java index 12606678..e4722503 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerFormInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerFormInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java similarity index 89% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java index 7a762da7..31bf43de 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerOperatingStatusInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java similarity index 96% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java index 98bd2761..ecc98de8 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTabInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTabInfos.java @@ -4,7 +4,7 @@ * 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.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import com.powsybl.iidm.network.Country; diff --git a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java similarity index 93% rename from src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java rename to src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java index 722c9f54..8b7bb2d2 100644 --- a/src/main/java/org/gridsuite/network/map/dto/definition/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java +++ b/src/main/java/org/gridsuite/network/map/dto/definition/branch/twowindingstransformer/TwoWindingsTransformerTooltipInfos.java @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.gridsuite.network.map.dto.definition.twowindingstransformer; +package org.gridsuite.network.map.dto.definition.branch.twowindingstransformer; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java index 62b64cb4..5a07e51e 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/LineInfosMapper.java @@ -12,8 +12,8 @@ import com.powsybl.iidm.network.extensions.Measurement.Type; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.line.*; -import org.gridsuite.network.map.dto.definition.line.LineTabInfos.LineTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.branch.line.*; +import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos.LineTabInfosBuilder; import org.gridsuite.network.map.dto.utils.ExtensionUtils; import static org.gridsuite.network.map.dto.InfoTypeParameters.QUERY_PARAM_DC_POWERFACTOR; diff --git a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java index c8b51b56..eb4d6c65 100644 --- a/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java +++ b/src/main/java/org/gridsuite/network/map/dto/mapper/TwoWindingsTransformerInfosMapper.java @@ -15,11 +15,11 @@ import com.powsybl.iidm.network.extensions.TwoWindingsTransformerToBeEstimated; import org.gridsuite.network.map.dto.ElementInfos; import org.gridsuite.network.map.dto.InfoTypeParameters; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerFormInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTooltipInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerFormInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerOperatingStatusInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos.TwoWindingsTransformerTabInfosBuilder; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTooltipInfos; import org.gridsuite.network.map.dto.definition.extension.TwoWindingsTransformerToBeEstimatedInfos; import org.gridsuite.network.map.dto.utils.ElementUtils; import org.gridsuite.network.map.dto.utils.ExtensionUtils; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index 4c2fd0d4..c0896a9d 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -6,8 +6,8 @@ import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos; import org.gridsuite.network.map.dto.definition.branch.BranchTabInfos; -import org.gridsuite.network.map.dto.definition.line.LineTabInfos; -import org.gridsuite.network.map.dto.definition.twowindingstransformer.TwoWindingsTransformerTabInfos; +import org.gridsuite.network.map.dto.definition.branch.line.LineTabInfos; +import org.gridsuite.network.map.dto.definition.branch.twowindingstransformer.TwoWindingsTransformerTabInfos; import org.gridsuite.network.map.dto.definition.bus.BusTabInfos; import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos; import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos; diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index bc0686fc..2269d417 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -57,14 +57,14 @@ private static Stream schemaRequestValues() { cases.get(ElementType.HVDC_LINE_LCC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.HVDC_LINE_VSC).put(InfoType.TAB, hvdcTabInfosSchema); cases.get(ElementType.LCC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "lccconverterstation/LccConverterStationTabInfos-schema.json"); - cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "line/LineTabInfos-schema.json"); + cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "branch/line/LineTabInfos-schema.json"); cases.get(ElementType.LOAD).put(InfoType.TAB, dtoPath + "load/LoadTabInfos-schema.json"); cases.get(ElementType.SHUNT_COMPENSATOR).put(InfoType.TAB, dtoPath + "shuntcompensator/ShuntCompensatorTabInfos-schema.json"); cases.get(ElementType.STATIC_VAR_COMPENSATOR).put(InfoType.TAB, dtoPath + "staticvarcompensator/StaticVarCompensatorTabInfos-schema.json"); cases.get(ElementType.SUBSTATION).put(InfoType.TAB, dtoPath + "substation/SubstationTabInfos-schema.json"); cases.get(ElementType.THREE_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "threewindingstransformer/ThreeWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.TIE_LINE).put(InfoType.TAB, dtoPath + "tieline/TieLineTabInfos-schema.json"); - cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); + cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "branch/twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); cases.get(ElementType.VOLTAGE_LEVEL).put(InfoType.TAB, dtoPath + "voltagelevel/VoltageLevelTabInfos-schema.json"); cases.get(ElementType.VSC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "vscconverterstation/VscConverterStationTabInfos-schema.json"); return cases.entrySet().stream().flatMap(e1 -> e1.getValue().entrySet().stream().map(e2 -> Arguments.of(e1.getKey(), e2.getKey(), e2.getValue()))); From 9bd7dcd2283f7c32457993969d0e0af0814e110a Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Mon, 1 Sep 2025 10:36:45 +0200 Subject: [PATCH 19/26] Licence and unused variable --- .../java/org/gridsuite/network/map/SchemaController.java | 6 ++++++ .../org/gridsuite/network/map/services/SchemaService.java | 7 ++++++- .../org/gridsuite/network/map/SchemaControllerTest.java | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/network/map/SchemaController.java b/src/main/java/org/gridsuite/network/map/SchemaController.java index 248c71d0..51ab8a4f 100644 --- a/src/main/java/org/gridsuite/network/map/SchemaController.java +++ b/src/main/java/org/gridsuite/network/map/SchemaController.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) 2025, 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; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index c0896a9d..472771eb 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) 2025, 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.services; import com.fasterxml.jackson.databind.ObjectMapper; @@ -67,7 +73,6 @@ private static Class getTabInfosClass(final ElementType elementType) { public SchemaService(final ResourceLoader resourceLoader) throws IOException { final ObjectMapper objectMapper = new ObjectMapper(); //just need a simple parser to minimize this.tabInfosSchemas = new EnumMap<>(ElementType.class); - final var cl = this.getClass().getClassLoader(); for (ElementType elementType : ElementType.values()) { final var resource = resourceLoader.getResource( "classpath:schemas/" + getTabInfosClass(elementType).getCanonicalName().replace('.', '/') + "-schema.json" diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 2269d417..11227588 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) 2025, 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; import org.assertj.core.api.WithAssertions; From cf0d28623757bed7716d289baa3688fd123791bb Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Mon, 1 Sep 2025 10:41:19 +0200 Subject: [PATCH 20/26] Tweak comment --- .../java/org/gridsuite/network/map/services/SchemaService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index 472771eb..d6d699b6 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -37,7 +37,8 @@ @Service public class SchemaService { - //TODO transform to a EnumMap> later + + // TODO transform to a EnumMap> once multiple InfoType are handled private final EnumMap tabInfosSchemas; /** From 7543d5a5bd866a890abd7d59df7a22180b030a6f Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 4 Sep 2025 10:29:45 +0200 Subject: [PATCH 21/26] Switch to jackson jsonSchema --- pom.xml | 89 ++----------------- .../network/map/SchemaController.java | 6 +- .../network/map/services/SchemaService.java | 37 ++------ .../network/map/SchemaControllerTest.java | 62 ++++--------- 4 files changed, 37 insertions(+), 157 deletions(-) diff --git a/pom.xml b/pom.xml index 888ea03e..75c0c666 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,6 @@ - 4.38.0 42.0.0 gridsuite org.gridsuite:network-map-server @@ -75,66 +74,6 @@ io.github.git-commit-id git-commit-id-maven-plugin - - com.github.victools - jsonschema-maven-plugin - ${victools.jsonschema.version} - - - process-sources - generate - - - - - org/gridsuite/network/map/dto/**TabInfos - - false - WITH_ALL_DEPENDENCIES - ${project.build.outputDirectory}/schemas - {1}/{0}-schema.json - DRAFT_2020_12 - - PLAIN_JSON - - - - - - - - - - - - - - Jackson - - - - - - - - - - JakartaValidation - - - - - - - JavaxValidation - - - - - - - - @@ -157,13 +96,6 @@ pom import - - com.github.victools - jsonschema-generator-bom - ${victools.jsonschema.version} - pom - import - @@ -176,22 +108,6 @@ lombok provided - - com.github.victools - jsonschema-generator - - - com.github.victools - jsonschema-module-jackson - - - com.github.victools - jsonschema-module-jakarta-validation - - - com.github.victools - jsonschema-module-javax-validation - @@ -212,6 +128,11 @@ + + com.fasterxml.jackson.module + jackson-module-jsonSchema + 2.15.2 + com.powsybl powsybl-config-classic diff --git a/src/main/java/org/gridsuite/network/map/SchemaController.java b/src/main/java/org/gridsuite/network/map/SchemaController.java index 51ab8a4f..a3ae5d50 100644 --- a/src/main/java/org/gridsuite/network/map/SchemaController.java +++ b/src/main/java/org/gridsuite/network/map/SchemaController.java @@ -6,6 +6,8 @@ */ package org.gridsuite.network.map; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -32,11 +34,11 @@ public class SchemaController { @GetMapping(value = "/{elementType}/{infoType}", produces = APPLICATION_JSON_SCHEMA_VALUE) @Operation(summary = "Get network elements") @ApiResponse(responseCode = "200", description = "Elements description") - public String getElementSchema(@Parameter(description = "Element type") @PathVariable(name = "elementType") ElementType elementType, + public JsonSchema getElementSchema(@Parameter(description = "Element type") @PathVariable(name = "elementType") ElementType elementType, @Parameter(description = "Info type") @PathVariable(name = "infoType") InfoType infoType) { try { return schemaService.getSchema(elementType, infoType); - } catch (final UnsupportedOperationException ex) { + } catch (final UnsupportedOperationException | JsonMappingException ex) { throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "The view " + infoType + " for " + elementType + " type is not available yet."); } } diff --git a/src/main/java/org/gridsuite/network/map/services/SchemaService.java b/src/main/java/org/gridsuite/network/map/services/SchemaService.java index d6d699b6..9a853f7f 100644 --- a/src/main/java/org/gridsuite/network/map/services/SchemaService.java +++ b/src/main/java/org/gridsuite/network/map/services/SchemaService.java @@ -6,7 +6,11 @@ */ package org.gridsuite.network.map.services; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; +import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator; +import lombok.AllArgsConstructor; import lombok.NonNull; import org.gridsuite.network.map.dto.ElementInfos.InfoType; import org.gridsuite.network.map.dto.ElementType; @@ -28,18 +32,13 @@ import org.gridsuite.network.map.dto.definition.tieline.TieLineTabInfos; import org.gridsuite.network.map.dto.definition.voltagelevel.VoltageLevelTabInfos; import org.gridsuite.network.map.dto.definition.vscconverterstation.VscConverterStationTabInfos; -import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.EnumMap; - @Service +@AllArgsConstructor public class SchemaService { - // TODO transform to a EnumMap> once multiple InfoType are handled - private final EnumMap tabInfosSchemas; + private final ObjectMapper objectMapper; /** * @apiNote use class instance to be more secure with enum and classes rename/moving/etc with IDE @@ -67,29 +66,11 @@ private static Class getTabInfosClass(final ElementType elementType) { }; } - /** - * Minimify the JSON and store in RAM for performance in giving it to clients. - * @implNote Not done as static because if a file is missing, the exception will block the class loading by the classloader. - */ - public SchemaService(final ResourceLoader resourceLoader) throws IOException { - final ObjectMapper objectMapper = new ObjectMapper(); //just need a simple parser to minimize - this.tabInfosSchemas = new EnumMap<>(ElementType.class); - for (ElementType elementType : ElementType.values()) { - final var resource = resourceLoader.getResource( - "classpath:schemas/" + getTabInfosClass(elementType).getCanonicalName().replace('.', '/') + "-schema.json" - ); - if (resource.exists()) { - this.tabInfosSchemas.put(elementType, - objectMapper.readTree(resource.getContentAsString(StandardCharsets.UTF_8)).toString() - ); - } - } - } - - public String getSchema(@NonNull final ElementType elementType, @NonNull final InfoType infoType) { + public JsonSchema getSchema(@NonNull final ElementType elementType, @NonNull final InfoType infoType) throws JsonMappingException { if (infoType != InfoType.TAB) { throw new UnsupportedOperationException("This info type is not currently supported."); } - return tabInfosSchemas.get(elementType); + JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(objectMapper); + return schemaGen.generateSchema(getTabInfosClass(elementType)); } } diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index 11227588..dabc0507 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -6,6 +6,10 @@ */ package org.gridsuite.network.map; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; +import org.apache.commons.lang3.tuple.Pair; import org.assertj.core.api.WithAssertions; import org.gridsuite.network.map.dto.ElementInfos.InfoType; import org.gridsuite.network.map.dto.ElementType; @@ -17,14 +21,11 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.EnumMap; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Stream; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -43,53 +44,28 @@ class SchemaControllerTest implements WithAssertions { final ClassLoader cl = this.getClass().getClassLoader(); private static Stream schemaRequestValues() { - final Map> cases = new EnumMap<>(ElementType.class); + final List> cases = new ArrayList<>(); for (ElementType elementType : ElementType.values()) { - final Map subCases = new EnumMap<>(InfoType.class); - cases.put(elementType, subCases); for (InfoType infoType : InfoType.values()) { - subCases.put(infoType, null); + cases.add(Pair.of(elementType, infoType)); } } - final String dtoPath = "schemas/org/gridsuite/network/map/dto/definition/"; - cases.get(ElementType.BATTERY).put(InfoType.TAB, dtoPath + "battery/BatteryTabInfos-schema.json"); - cases.get(ElementType.BRANCH).put(InfoType.TAB, dtoPath + "branch/BranchTabInfos-schema.json"); - cases.get(ElementType.BUS).put(InfoType.TAB, dtoPath + "bus/BusTabInfos-schema.json"); - cases.get(ElementType.BUSBAR_SECTION).put(InfoType.TAB, dtoPath + "busbarsection/BusBarSectionTabInfos-schema.json"); - cases.get(ElementType.DANGLING_LINE).put(InfoType.TAB, dtoPath + "danglingline/DanglingLineTabInfos-schema.json"); - cases.get(ElementType.GENERATOR).put(InfoType.TAB, dtoPath + "generator/GeneratorTabInfos-schema.json"); - final String hvdcTabInfosSchema = dtoPath + "hvdc/HvdcTabInfos-schema.json"; - cases.get(ElementType.HVDC_LINE).put(InfoType.TAB, hvdcTabInfosSchema); - cases.get(ElementType.HVDC_LINE_LCC).put(InfoType.TAB, hvdcTabInfosSchema); - cases.get(ElementType.HVDC_LINE_VSC).put(InfoType.TAB, hvdcTabInfosSchema); - cases.get(ElementType.LCC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "lccconverterstation/LccConverterStationTabInfos-schema.json"); - cases.get(ElementType.LINE).put(InfoType.TAB, dtoPath + "branch/line/LineTabInfos-schema.json"); - cases.get(ElementType.LOAD).put(InfoType.TAB, dtoPath + "load/LoadTabInfos-schema.json"); - cases.get(ElementType.SHUNT_COMPENSATOR).put(InfoType.TAB, dtoPath + "shuntcompensator/ShuntCompensatorTabInfos-schema.json"); - cases.get(ElementType.STATIC_VAR_COMPENSATOR).put(InfoType.TAB, dtoPath + "staticvarcompensator/StaticVarCompensatorTabInfos-schema.json"); - cases.get(ElementType.SUBSTATION).put(InfoType.TAB, dtoPath + "substation/SubstationTabInfos-schema.json"); - cases.get(ElementType.THREE_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "threewindingstransformer/ThreeWindingsTransformerTabInfos-schema.json"); - cases.get(ElementType.TIE_LINE).put(InfoType.TAB, dtoPath + "tieline/TieLineTabInfos-schema.json"); - cases.get(ElementType.TWO_WINDINGS_TRANSFORMER).put(InfoType.TAB, dtoPath + "branch/twowindingstransformer/TwoWindingsTransformerTabInfos-schema.json"); - cases.get(ElementType.VOLTAGE_LEVEL).put(InfoType.TAB, dtoPath + "voltagelevel/VoltageLevelTabInfos-schema.json"); - cases.get(ElementType.VSC_CONVERTER_STATION).put(InfoType.TAB, dtoPath + "vscconverterstation/VscConverterStationTabInfos-schema.json"); - return cases.entrySet().stream().flatMap(e1 -> e1.getValue().entrySet().stream().map(e2 -> Arguments.of(e1.getKey(), e2.getKey(), e2.getValue()))); + return cases.stream().map(e1 -> Arguments.of(e1.getKey(), e1.getValue())); } @ParameterizedTest(name = "{0} (view {1})") @MethodSource("schemaRequestValues") - void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iType, @Nullable final String resultPath) throws Exception { + void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iType) throws Exception { ResultActions result = this.mockMvc.perform(get("/v1/schemas/{eType}/{iType}", eType, iType)).andDo(log()); - if (resultPath != null) { - try (final InputStream json = cl.getResourceAsStream(resultPath)) { - if (json != null) { - result.andExpectAll( - status().isOk(), - content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), - content().json(new String(json.readAllBytes(), StandardCharsets.UTF_8), true) - ); - } - } + if (iType.equals(InfoType.TAB)) { + JsonSchema schema = schemaService.getSchema(eType, iType); + ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); + String json = ow.writeValueAsString(schema); + result.andExpectAll( + status().isOk(), + content().contentType(SchemaController.APPLICATION_JSON_SCHEMA_VALUE), + content().json(json) + ); } else { result.andExpectAll(status().isNotImplemented()); } From 535ae7036ca430bc18fd1548550c7a138f9e4cc3 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 4 Sep 2025 10:41:19 +0200 Subject: [PATCH 22/26] Clean tests --- .../org/gridsuite/network/map/SchemaControllerTest.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java index dabc0507..fbf79a69 100644 --- a/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java +++ b/src/test/java/org/gridsuite/network/map/SchemaControllerTest.java @@ -10,7 +10,6 @@ import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; import org.apache.commons.lang3.tuple.Pair; -import org.assertj.core.api.WithAssertions; import org.gridsuite.network.map.dto.ElementInfos.InfoType; import org.gridsuite.network.map.dto.ElementType; import org.gridsuite.network.map.services.SchemaService; @@ -34,15 +33,13 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(SchemaController.class) -class SchemaControllerTest implements WithAssertions { +class SchemaControllerTest { @Autowired private MockMvc mockMvc; - @SpyBean //need to init it for the controller + @SpyBean private SchemaService schemaService; - final ClassLoader cl = this.getClass().getClassLoader(); - private static Stream schemaRequestValues() { final List> cases = new ArrayList<>(); for (ElementType elementType : ElementType.values()) { @@ -67,7 +64,7 @@ void schemaRequest(@NonNull final ElementType eType, @NonNull final InfoType iTy content().json(json) ); } else { - result.andExpectAll(status().isNotImplemented()); + result.andExpect(status().isNotImplemented()); } } } From c9637f1bccee22c76f6fe117ef90b0e5e86afe8a Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 9 Sep 2025 10:37:29 +0200 Subject: [PATCH 23/26] Add jackson json schema version to pom properties --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index dc777795..0e39eb83 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ - + 2.15.2 43.0.0 gridsuite org.gridsuite:network-map-server @@ -131,7 +131,7 @@ com.fasterxml.jackson.module jackson-module-jsonSchema - 2.15.2 + ${jackson-module-jsonSchema.version} com.powsybl From d4d12095c80e10730b4e1c40f6b850f794857b05 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 9 Sep 2025 14:49:00 +0200 Subject: [PATCH 24/26] various fixes --- pom.xml | 9 ++++++++- .../java/org/gridsuite/network/map/SchemaController.java | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 0e39eb83..2a1d43e2 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,14 @@ pom import + + + com.fasterxml.jackson.module + jackson-module-jsonSchema + ${jackson-module-jsonSchema.version} + pom + runtime + @@ -131,7 +139,6 @@ com.fasterxml.jackson.module jackson-module-jsonSchema - ${jackson-module-jsonSchema.version} com.powsybl diff --git a/src/main/java/org/gridsuite/network/map/SchemaController.java b/src/main/java/org/gridsuite/network/map/SchemaController.java index a3ae5d50..38669798 100644 --- a/src/main/java/org/gridsuite/network/map/SchemaController.java +++ b/src/main/java/org/gridsuite/network/map/SchemaController.java @@ -32,10 +32,10 @@ public class SchemaController { private final SchemaService schemaService; @GetMapping(value = "/{elementType}/{infoType}", produces = APPLICATION_JSON_SCHEMA_VALUE) - @Operation(summary = "Get network elements") - @ApiResponse(responseCode = "200", description = "Elements description") + @Operation(summary = "Get element schema description") + @ApiResponse(responseCode = "200", description = "Element schema") public JsonSchema getElementSchema(@Parameter(description = "Element type") @PathVariable(name = "elementType") ElementType elementType, - @Parameter(description = "Info type") @PathVariable(name = "infoType") InfoType infoType) { + @Parameter(description = "Info type") @PathVariable(name = "infoType") InfoType infoType) { try { return schemaService.getSchema(elementType, infoType); } catch (final UnsupportedOperationException | JsonMappingException ex) { From 3bfd4f587e928cecc9cc39b6f11f42a95cda9461 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 9 Sep 2025 15:10:31 +0200 Subject: [PATCH 25/26] Remove useless config --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2a1d43e2..ed202d8d 100644 --- a/pom.xml +++ b/pom.xml @@ -102,8 +102,6 @@ com.fasterxml.jackson.module jackson-module-jsonSchema ${jackson-module-jsonSchema.version} - pom - runtime From 2525cbe07e83b15913215b2df2d89ed1b4a25617 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 9 Sep 2025 15:18:43 +0200 Subject: [PATCH 26/26] Reorganize deps position --- pom.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index ed202d8d..3bdbf2c3 100644 --- a/pom.xml +++ b/pom.xml @@ -80,6 +80,12 @@ + + com.fasterxml.jackson.module + jackson-module-jsonSchema + ${jackson-module-jsonSchema.version} + + org.junit @@ -97,12 +103,6 @@ pom import - - - com.fasterxml.jackson.module - jackson-module-jsonSchema - ${jackson-module-jsonSchema.version} - @@ -116,6 +116,10 @@ + + com.fasterxml.jackson.module + jackson-module-jsonSchema + com.powsybl powsybl-network-store-client @@ -134,10 +138,6 @@ - - com.fasterxml.jackson.module - jackson-module-jsonSchema - com.powsybl powsybl-config-classic