Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ private StudyConstants() {
public static final String NETWORK_UUID = "networkUuid";
public static final String CASE_UUID = "caseUuid";
public static final String CASE_FORMAT = "caseFormat";
public static final String CURRENT_LIMIT_VIOLATIONS_INFOS = "currentLimitViolationsInfos";

public static final String DELIMITER = "/";
public static final String QUERY_PARAM_VARIANT_ID = "variantId";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ public ResponseEntity<Void> duplicateSubtree(@Parameter(description = "The study
return ResponseEntity.ok().build();
}

@GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg")
@PostMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg")
@Operation(summary = "get the voltage level diagram for the given network and voltage level")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The svg"),
@ApiResponse(responseCode = "404", description = "The voltage level has not been found")})
Expand All @@ -383,7 +383,8 @@ public ResponseEntity<byte[]> generateVoltageLevelDiagram(
@Parameter(description = "topologicalColoring") @RequestParam(name = "topologicalColoring", defaultValue = "false") boolean topologicalColoring,
@Parameter(description = "component library name") @RequestParam(name = "componentLibrary", required = false) String componentLibrary,
@Parameter(description = "Sld display mode") @RequestParam(name = "sldDisplayMode", defaultValue = "STATE_VARIABLE") SldDisplayMode sldDisplayMode,
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language) {
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language,
@RequestBody(required = false) Map<String, Object> sldRequestInfos) {
DiagramParameters diagramParameters = DiagramParameters.builder()
.useName(useName)
.labelCentered(centerLabel)
Expand All @@ -397,12 +398,13 @@ public ResponseEntity<byte[]> generateVoltageLevelDiagram(
voltageLevelId,
diagramParameters,
nodeUuid,
rootNetworkUuid);
rootNetworkUuid,
Objects.requireNonNullElse(sldRequestInfos, new HashMap<>()));
return result != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(result) :
ResponseEntity.noContent().build();
}

@GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg-and-metadata")
@PostMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/voltage-levels/{voltageLevelId}/svg-and-metadata")
@Operation(summary = "get the voltage level diagram for the given network and voltage level")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The svg and metadata"),
@ApiResponse(responseCode = "404", description = "The voltage level has not been found")})
Expand All @@ -417,7 +419,8 @@ public ResponseEntity<String> generateVoltageLevelDiagramAndMetadata(
@Parameter(description = "topologicalColoring") @RequestParam(name = "topologicalColoring", defaultValue = "false") boolean topologicalColoring,
@Parameter(description = "component library name") @RequestParam(name = "componentLibrary", required = false) String componentLibrary,
@Parameter(description = "Sld display mode") @RequestParam(name = "sldDisplayMode", defaultValue = "STATE_VARIABLE") SldDisplayMode sldDisplayMode,
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language) {
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language,
@RequestBody(required = false) Map<String, Object> sldRequestInfos) {
DiagramParameters diagramParameters = DiagramParameters.builder()
.useName(useName)
.labelCentered(centerLabel)
Expand All @@ -431,7 +434,8 @@ public ResponseEntity<String> generateVoltageLevelDiagramAndMetadata(
voltageLevelId,
diagramParameters,
nodeUuid,
rootNetworkUuid);
rootNetworkUuid,
Objects.requireNonNullElse(sldRequestInfos, new HashMap<>()));
return result != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(result) :
ResponseEntity.noContent().build();
}
Expand Down Expand Up @@ -1168,7 +1172,7 @@ public ResponseEntity<String> getShortCircuitParameters(@PathVariable("studyUuid
return ResponseEntity.ok().body(studyService.getShortCircuitParametersInfo(studyUuid));
}

@GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg")
@PostMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg")
@Operation(summary = "get the substation diagram for the given network and substation")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The svg"),
@ApiResponse(responseCode = "404", description = "The substation has not been found")})
Expand All @@ -1183,7 +1187,8 @@ public ResponseEntity<byte[]> generateSubstationDiagram(
@Parameter(description = "topologicalColoring") @RequestParam(name = "topologicalColoring", defaultValue = "false") boolean topologicalColoring,
@Parameter(description = "substationLayout") @RequestParam(name = "substationLayout", defaultValue = "horizontal") String substationLayout,
@Parameter(description = "component library name") @RequestParam(name = "componentLibrary", required = false) String componentLibrary,
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language) {
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language,
@RequestBody(required = false) Map<String, Object> sldRequestInfos) {
DiagramParameters diagramParameters = DiagramParameters.builder()
.useName(useName)
.labelCentered(centerLabel)
Expand All @@ -1193,12 +1198,12 @@ public ResponseEntity<byte[]> generateSubstationDiagram(
.language(language)
.build();
byte[] result = studyService.generateSubstationSvg(substationId,
diagramParameters, substationLayout, nodeUuid, rootNetworkUuid);
diagramParameters, substationLayout, nodeUuid, rootNetworkUuid, Objects.requireNonNullElse(sldRequestInfos, new HashMap<>()));
return result != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(result) :
ResponseEntity.noContent().build();
}

@GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg-and-metadata")
@PostMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/network/substations/{substationId}/svg-and-metadata")
@Operation(summary = "get the substation diagram for the given network and substation")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The svg and metadata"),
@ApiResponse(responseCode = "404", description = "The substation has not been found")})
Expand All @@ -1213,7 +1218,8 @@ public ResponseEntity<String> generateSubstationDiagramAndMetadata(
@Parameter(description = "topologicalColoring") @RequestParam(name = "topologicalColoring", defaultValue = "false") boolean topologicalColoring,
@Parameter(description = "substationLayout") @RequestParam(name = "substationLayout", defaultValue = "horizontal") String substationLayout,
@Parameter(description = "component library name") @RequestParam(name = "componentLibrary", required = false) String componentLibrary,
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language) {
@Parameter(description = "language") @RequestParam(name = "language", defaultValue = "en") String language,
@RequestBody(required = false) Map<String, Object> sldRequestInfos) {
DiagramParameters diagramParameters = DiagramParameters.builder()
.useName(useName)
.labelCentered(centerLabel)
Expand All @@ -1227,7 +1233,8 @@ public ResponseEntity<String> generateSubstationDiagramAndMetadata(
diagramParameters,
substationLayout,
nodeUuid,
rootNetworkUuid);
rootNetworkUuid,
Objects.requireNonNullElse(sldRequestInfos, new HashMap<>()));
return result != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(result) :
ResponseEntity.noContent().build();
}
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/org/gridsuite/study/server/dto/BaseVoltageInfos.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* 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.study.server.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
* @author Caroline Jeandat <caroline.jeandat at rte-france.com>
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
public class BaseVoltageInfos {
String name;
Integer minValue;
Integer maxValue;
String profile;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* 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.study.server.dto;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
* @author Caroline Jeandat <caroline.jeandat at rte-france.com>
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
public class BaseVoltagesConfigInfos {
private List<BaseVoltageInfos> baseVoltages;
private String defaultProfile;
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import org.gridsuite.study.server.dto.DiagramParameters;
import org.gridsuite.study.server.dto.diagramgridlayout.diagramlayout.NetworkAreaDiagramLayoutDetails;
import org.gridsuite.study.server.dto.diagramgridlayout.nad.NadConfigInfos;
import org.gridsuite.study.server.dto.CurrentLimitViolationInfos;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*;
Expand Down Expand Up @@ -74,7 +73,7 @@ public List<String> getAvailableSvgComponentLibraries() {
}).getBody();
}

public byte[] generateVoltageLevelSvg(UUID networkUuid, String variantId, String voltageLevelId, DiagramParameters diagramParameters, List<CurrentLimitViolationInfos> limitViolations) {
public byte[] generateVoltageLevelSvg(UUID networkUuid, String variantId, String voltageLevelId, DiagramParameters diagramParameters, Map<String, Object> sldRequestInfos) {
var uriComponentsBuilder = UriComponentsBuilder
.fromPath(DELIMITER + SINGLE_LINE_DIAGRAM_API_VERSION + "/svg/{networkUuid}/{voltageLevelId}")
.queryParam(QUERY_PARAM_USE_NAME, diagramParameters.isUseName())
Expand All @@ -91,7 +90,7 @@ public byte[] generateVoltageLevelSvg(UUID networkUuid, String variantId, String
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<List<CurrentLimitViolationInfos>> httpEntity = new HttpEntity<>(limitViolations, headers);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(sldRequestInfos, headers);

byte[] result;
try {
Expand All @@ -106,7 +105,7 @@ public byte[] generateVoltageLevelSvg(UUID networkUuid, String variantId, String
return result;
}

public String generateVoltageLevelSvgAndMetadata(UUID networkUuid, String variantId, String voltageLevelId, DiagramParameters diagramParameters, List<CurrentLimitViolationInfos> limitViolations) {
public String generateVoltageLevelSvgAndMetadata(UUID networkUuid, String variantId, String voltageLevelId, DiagramParameters diagramParameters, Map<String, Object> sldRequestInfos) {
var uriComponentsBuilder = UriComponentsBuilder
.fromPath(DELIMITER + SINGLE_LINE_DIAGRAM_API_VERSION
+ "/svg-and-metadata/{networkUuid}/{voltageLevelId}")
Expand All @@ -121,7 +120,7 @@ public String generateVoltageLevelSvgAndMetadata(UUID networkUuid, String varian
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<List<CurrentLimitViolationInfos>> httpEntity = new HttpEntity<>(limitViolations, headers);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(sldRequestInfos, headers);
String result;
try {
var path = uriComponentsBuilder.buildAndExpand(networkUuid, voltageLevelId).toUriString();
Expand All @@ -136,7 +135,7 @@ public String generateVoltageLevelSvgAndMetadata(UUID networkUuid, String varian
return result;
}

public byte[] generateSubstationSvg(UUID networkUuid, String variantId, String substationId, DiagramParameters diagramParameters, String substationLayout, List<CurrentLimitViolationInfos> limitViolations) {
public byte[] generateSubstationSvg(UUID networkUuid, String variantId, String substationId, DiagramParameters diagramParameters, String substationLayout, Map<String, Object> sldRequestInfos) {
var uriComponentsBuilder = UriComponentsBuilder
.fromPath(DELIMITER + SINGLE_LINE_DIAGRAM_API_VERSION + "/substation-svg/{networkUuid}/{substationId}")
.queryParam(QUERY_PARAM_USE_NAME, diagramParameters.isUseName())
Expand All @@ -151,7 +150,7 @@ public byte[] generateSubstationSvg(UUID networkUuid, String variantId, String s
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<List<CurrentLimitViolationInfos>> httpEntity = new HttpEntity<>(limitViolations, headers);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(sldRequestInfos, headers);
try {
result = restTemplate.postForObject(singleLineDiagramServerBaseUri + path, httpEntity, byte[].class);
} catch (HttpStatusCodeException e) {
Expand All @@ -164,7 +163,7 @@ public byte[] generateSubstationSvg(UUID networkUuid, String variantId, String s
return result;
}

public String generateSubstationSvgAndMetadata(UUID networkUuid, String variantId, String substationId, DiagramParameters diagramParameters, String substationLayout, List<CurrentLimitViolationInfos> limitViolations) {
public String generateSubstationSvgAndMetadata(UUID networkUuid, String variantId, String substationId, DiagramParameters diagramParameters, String substationLayout, Map<String, Object> sldRequestInfos) {
var uriComponentsBuilder = UriComponentsBuilder
.fromPath(DELIMITER + SINGLE_LINE_DIAGRAM_API_VERSION + "/substation-svg-and-metadata/{networkUuid}/{substationId}")
.queryParam(QUERY_PARAM_USE_NAME, diagramParameters.isUseName())
Expand All @@ -179,7 +178,7 @@ public String generateSubstationSvgAndMetadata(UUID networkUuid, String variantI
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<List<CurrentLimitViolationInfos>> httpEntity = new HttpEntity<>(limitViolations, headers);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(sldRequestInfos, headers);
try {
result = restTemplate.postForEntity(singleLineDiagramServerBaseUri + uriComponentsBuilder.build().toUriString(), httpEntity, String.class, networkUuid, substationId).getBody();
} catch (HttpStatusCodeException e) {
Expand Down
Loading