Skip to content

Commit f6535e8

Browse files
authored
Change mapping to post and pass ids (substations/voltage levels) in request body (#139)
Signed-off-by: BOUHOURS Antoine <[email protected]>
1 parent 744de7f commit f6535e8

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

src/main/java/com/powsybl/sld/server/GeoDataService.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class GeoDataService {
2828
public static final String GEO_DATA_API_VERSION = "v1";
2929
public static final String QUERY_PARAM_VARIANT_ID = "variantId";
3030
public static final String NETWORK_UUID = "networkUuid";
31-
static final String SUBSTATIONS = "substations";
31+
static final String SUBSTATIONS_INFOS = "substations/infos";
3232
private static final String DELIMITER = "/";
3333
private final RestTemplate restTemplate;
3434
@Setter
@@ -45,22 +45,18 @@ private String getGeoDataServerURI() {
4545
}
4646

4747
public String getSubstationsGraphics(UUID networkUuid, String variantId, List<String> substationsIds) {
48-
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(getGeoDataServerURI() + SUBSTATIONS)
48+
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(getGeoDataServerURI() + SUBSTATIONS_INFOS)
4949
.queryParam(NETWORK_UUID, networkUuid);
5050

5151
if (!StringUtils.isBlank(variantId)) {
5252
uriComponentsBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantId);
5353
}
5454

55-
if (substationsIds != null) {
56-
uriComponentsBuilder.queryParam(QUERY_PARAM_SUBSTATION_ID, substationsIds);
57-
}
58-
5955
var path = uriComponentsBuilder
6056
.buildAndExpand()
6157
.toUriString();
6258

63-
return restTemplate.getForObject(path, String.class);
59+
return restTemplate.postForObject(path, substationsIds, String.class);
6460
}
6561
}
6662

src/main/java/com/powsybl/sld/server/SingleLineDiagramController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,12 @@ public ResponseEntity<Collection<String>> getAvailableSvgComponentLibraries() {
260260
}
261261

262262
// network area diagram
263-
@GetMapping(value = "/network-area-diagram/{networkUuid}", produces = MediaType.APPLICATION_JSON_VALUE)
263+
@PostMapping(value = "/network-area-diagram/{networkUuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
264264
@Operation(summary = "Get network area diagram image")
265265
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The network area diagram svg")})
266266
public @ResponseBody String getNetworkAreaDiagramSvg(
267267
@Parameter(description = "Network UUID") @PathVariable("networkUuid") UUID networkUuid,
268-
@Parameter(description = "Voltage levels ids") @RequestParam(name = "voltageLevelsIds", required = false) List<String> voltageLevelsIds,
268+
@RequestBody List<String> voltageLevelsIds,
269269
@Parameter(description = "Variant Id") @RequestParam(name = "variantId", required = false) String variantId,
270270
@Parameter(description = "depth") @RequestParam(name = "depth", required = false) int depth,
271271
@Parameter(description = "Initialize NAD with Geographical Data") @RequestParam(name = "withGeoData", defaultValue = "true") boolean withGeoData) {

src/test/java/com/powsybl/sld/server/GeoDataServiceTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void testGetSubstationsGraphics() {
5050
List<String> substationsIds = List.of("subFr1", "subFr2");
5151

5252
String expectedResponse = "Substations graphics data";
53-
when(restTemplate.getForObject(ArgumentMatchers.anyString(), ArgumentMatchers.eq(String.class)))
53+
when(restTemplate.postForObject(ArgumentMatchers.anyString(), ArgumentMatchers.anyList(), ArgumentMatchers.eq(String.class)))
5454
.thenReturn(expectedResponse);
5555

5656
String response = geoDataService.getSubstationsGraphics(networkUuid, variantId, substationsIds);
@@ -67,7 +67,7 @@ void testGetSubstationsGraphicsWithoutVariantId() {
6767
substationGeoData.setCoordinate(new Coordinate(48.8588443, 2.2943506));
6868
substationGeoData.setCountry(Country.FR);
6969
String expectedResponse = substationGeoData.toString();
70-
when(restTemplate.getForObject(ArgumentMatchers.anyString(), ArgumentMatchers.eq(String.class)))
70+
when(restTemplate.postForObject(ArgumentMatchers.anyString(), ArgumentMatchers.anyList(), ArgumentMatchers.eq(String.class)))
7171
.thenReturn(expectedResponse);
7272

7373
String response = geoDataService.getSubstationsGraphics(networkUuid, null, substationsIds);

src/test/java/com/powsybl/sld/server/SingleLineDiagramTest.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import static org.mockito.Mockito.times;
6464
import static org.mockito.Mockito.verify;
6565
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
66+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
6667
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
6768
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
6869

@@ -318,7 +319,9 @@ void testNetworkAreaDiagram() throws Exception {
318319
given(networkStoreService.getNetwork(testNetworkId, PreloadingStrategy.COLLECTION)).willReturn(createNetwork());
319320
given(networkStoreService.getNetwork(notFoundNetworkId, PreloadingStrategy.COLLECTION)).willThrow(new PowsyblException());
320321

321-
MvcResult result = mvc.perform(get("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=0" + "&voltageLevelsIds=vlFr1A", testNetworkId))
322+
MvcResult result = mvc.perform(post("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=0", testNetworkId)
323+
.contentType(MediaType.APPLICATION_JSON)
324+
.content("[\"vlFr1A\"]"))
322325
.andExpect(status().isOk())
323326
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON_VALUE))
324327
.andReturn();
@@ -328,7 +331,9 @@ void testNetworkAreaDiagram() throws Exception {
328331
assertTrue(stringResult.contains("additionalMetadata"));
329332
assertTrue(stringResult.contains("<?xml"));
330333

331-
result = mvc.perform(get("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=2" + "&voltageLevelsIds=vlFr1A", testNetworkId))
334+
mvc.perform(post("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=2", testNetworkId)
335+
.contentType(MediaType.APPLICATION_JSON)
336+
.content("[\"vlFr1A\"]"))
332337
.andExpect(status().isOk())
333338
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON_VALUE))
334339
.andReturn();
@@ -338,7 +343,9 @@ void testNetworkAreaDiagram() throws Exception {
338343
assertTrue(stringResult.contains("additionalMetadata"));
339344
assertTrue(stringResult2.contains("<?xml"));
340345

341-
mvc.perform(get("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=2" + "&voltageLevelsIds=notFound", testNetworkId))
346+
mvc.perform(post("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=2", testNetworkId)
347+
.contentType(MediaType.APPLICATION_JSON)
348+
.content("[\"notFound\"]"))
342349
.andExpect(status().isNotFound());
343350
}
344351

@@ -659,7 +666,9 @@ void testNetworkAreaDiagramWithMissingVoltageLevel() throws Exception {
659666
assertNotNull(voltageLevels);
660667
assertEquals(1, voltageLevels.size());
661668
assertEquals("vlFr1A", voltageLevels.get(0).get("id"));
662-
mvc.perform(get("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=0" + "&voltageLevelsIds=vlNotFound1,vlNotFound2", testNetworkId))
669+
mvc.perform(post("/v1/network-area-diagram/{networkUuid}?variantId=" + VARIANT_2_ID + "&depth=0", testNetworkId)
670+
.contentType(MediaType.APPLICATION_JSON)
671+
.content("[\"vlNotFound1\", \"vlNotFound2\"]"))
663672
.andExpect(status().isNotFound());
664673
}
665674

0 commit comments

Comments
 (0)