Skip to content

Commit f69795c

Browse files
Add globalFilter parameter to filter voltage init results (#801)
* Add globalFilter parameter to filter voltage init results Signed-off-by: Franck LECUYER <[email protected]>
1 parent 68a0e76 commit f69795c

File tree

5 files changed

+35
-18
lines changed

5 files changed

+35
-18
lines changed

src/main/java/org/gridsuite/study/server/controller/StudyController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -865,8 +865,9 @@ public ResponseEntity<Void> stopVoltageInit(@Parameter(description = "Study uuid
865865
@ApiResponse(responseCode = "404", description = "The voltage init has not been found")})
866866
public ResponseEntity<String> getVoltageInitResult(@Parameter(description = "study UUID") @PathVariable("studyUuid") UUID studyUuid,
867867
@Parameter(description = "rootNetworkUuid") @PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
868-
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid) {
869-
String result = rootNetworkNodeInfoService.getVoltageInitResult(nodeUuid, rootNetworkUuid);
868+
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid,
869+
@Parameter(description = "JSON array of global filters") @RequestParam(name = "globalFilters", required = false) String globalFilters) {
870+
String result = studyService.getVoltageInitResult(nodeUuid, rootNetworkUuid, globalFilters);
870871
return result != null ? ResponseEntity.ok().body(result) :
871872
ResponseEntity.noContent().build();
872873
}

src/main/java/org/gridsuite/study/server/service/RootNetworkNodeInfoService.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -610,12 +610,6 @@ public byte[] getShortCircuitAnalysisCsvResult(UUID nodeUuid, UUID rootNetworkUu
610610
return shortCircuitService.getShortCircuitAnalysisCsvResult(resultUuid, headerCsv);
611611
}
612612

613-
@Transactional(readOnly = true)
614-
public String getVoltageInitResult(UUID nodeUuid, UUID rootNetworkUuid) {
615-
UUID resultUuid = getComputationResultUuid(nodeUuid, rootNetworkUuid, VOLTAGE_INITIALIZATION);
616-
return voltageInitService.getVoltageInitResult(resultUuid);
617-
}
618-
619613
@Transactional(readOnly = true)
620614
public String getStateEstimationResult(UUID nodeUuid, UUID rootNetworkUuid) {
621615
UUID resultUuid = getComputationResultUuid(nodeUuid, rootNetworkUuid, STATE_ESTIMATION);

src/main/java/org/gridsuite/study/server/service/StudyService.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,7 +1867,7 @@ private void invalidateNode(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid)
18671867

18681868
deleteInvalidationInfos(invalidateNodeInfos);
18691869

1870-
emitAllComputationStatusChanged(studyUuid, nodeUuid, rootNetworkUuid, ComputationsInvalidationMode.ALL);
1870+
emitAllComputationStatusChanged(studyUuid, nodeUuid, rootNetworkUuid, InvalidateNodeTreeParameters.ComputationsInvalidationMode.ALL);
18711871

18721872
if (startTime.get() != null) {
18731873
LOGGER.trace("unbuild node '{}' of study '{}' : {} seconds", nodeUuid, studyUuid,
@@ -3155,8 +3155,8 @@ public String getNonEvacuatedEnergyProvider(UUID studyUuid) {
31553155
.orElse("");
31563156
}
31573157

3158-
private void emitAllComputationStatusChanged(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, ComputationsInvalidationMode computationsInvalidationMode) {
3159-
if (!ComputationsInvalidationMode.isPreserveLoadFlowResults(computationsInvalidationMode)) {
3158+
private void emitAllComputationStatusChanged(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, InvalidateNodeTreeParameters.ComputationsInvalidationMode computationsInvalidationMode) {
3159+
if (!InvalidateNodeTreeParameters.ComputationsInvalidationMode.isPreserveLoadFlowResults(computationsInvalidationMode)) {
31603160
notificationService.emitStudyChanged(studyUuid, nodeUuid, rootNetworkUuid, NotificationService.UPDATE_TYPE_LOADFLOW_STATUS);
31613161
}
31623162
notificationService.emitStudyChanged(studyUuid, nodeUuid, rootNetworkUuid, NotificationService.UPDATE_TYPE_SECURITY_ANALYSIS_STATUS);
@@ -3398,4 +3398,12 @@ public void reorderSpreadsheetConfigs(UUID studyUuid, UUID collectionUuid, List<
33983398
studyConfigService.reorderSpreadsheetConfigs(collectionUuid, newOrder);
33993399
notificationService.emitSpreadsheetCollectionChanged(studyUuid, collectionUuid);
34003400
}
3401+
3402+
@Transactional(readOnly = true)
3403+
public String getVoltageInitResult(UUID nodeUuid, UUID rootNetworkUuid, String globalFilters) {
3404+
UUID networkuuid = rootNetworkService.getNetworkUuid(rootNetworkUuid);
3405+
String variantId = networkModificationTreeService.getVariantId(nodeUuid, rootNetworkUuid);
3406+
UUID resultUuid = rootNetworkNodeInfoService.getComputationResultUuid(nodeUuid, rootNetworkUuid, VOLTAGE_INITIALIZATION);
3407+
return voltageInitService.getVoltageInitResult(resultUuid, networkuuid, variantId, globalFilters);
3408+
}
34013409
}

src/main/java/org/gridsuite/study/server/service/VoltageInitService.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,22 @@ public UUID runVoltageInit(UUID networkUuid, String variantId, UUID parametersUu
9292
return restTemplate.exchange(voltageInitServerBaseUri + path, HttpMethod.POST, new HttpEntity<>(headers), UUID.class).getBody();
9393
}
9494

95-
private String getVoltageInitResultOrStatus(UUID resultUuid, String suffix) {
95+
private String getVoltageInitResultOrStatus(UUID resultUuid, String suffix, UUID networkUuid, String variantId, String globalFilters) {
9696
String result;
9797

9898
if (resultUuid == null) {
9999
return null;
100100
}
101101

102-
String path = UriComponentsBuilder.fromPath(DELIMITER + VOLTAGE_INIT_API_VERSION + "/results/{resultUuid}" + suffix)
103-
.buildAndExpand(resultUuid).toUriString();
104-
102+
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + VOLTAGE_INIT_API_VERSION + "/results/{resultUuid}" + suffix);
103+
if (!StringUtils.isEmpty(globalFilters)) {
104+
uriComponentsBuilder.queryParam("globalFilters", URLEncoder.encode(globalFilters, StandardCharsets.UTF_8));
105+
uriComponentsBuilder.queryParam("networkUuid", networkUuid);
106+
if (!StringUtils.isBlank(variantId)) {
107+
uriComponentsBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantId);
108+
}
109+
}
110+
String path = uriComponentsBuilder.buildAndExpand(resultUuid).toUriString();
105111
try {
106112
result = restTemplate.getForObject(voltageInitServerBaseUri + path, String.class);
107113
} catch (HttpStatusCodeException e) {
@@ -113,12 +119,12 @@ private String getVoltageInitResultOrStatus(UUID resultUuid, String suffix) {
113119
return result;
114120
}
115121

116-
public String getVoltageInitResult(UUID resultUuid) {
117-
return getVoltageInitResultOrStatus(resultUuid, "");
122+
public String getVoltageInitResult(UUID resultUuid, UUID networkUuid, String variantId, String globalFilters) {
123+
return getVoltageInitResultOrStatus(resultUuid, "", networkUuid, variantId, globalFilters);
118124
}
119125

120126
public String getVoltageInitStatus(UUID resultUuid) {
121-
return getVoltageInitResultOrStatus(resultUuid, "/status");
127+
return getVoltageInitResultOrStatus(resultUuid, "/status", null, null, null);
122128
}
123129

124130
public VoltageInitParametersInfos getVoltageInitParameters(UUID parametersUuid) {

src/test/java/org/gridsuite/study/server/VoltageInitTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,8 @@ public MockResponse dispatch(RecordedRequest request) {
337337
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), voltageInitErrorResultUuidStr);
338338
} else if (path.matches("/v1/results/" + VOLTAGE_INIT_RESULT_UUID)) {
339339
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), VOLTAGE_INIT_RESULT_JSON);
340+
} else if (path.matches("/v1/results/" + VOLTAGE_INIT_RESULT_UUID + "\\?globalFilters=.*networkUuid=.*variantId.*")) {
341+
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), VOLTAGE_INIT_RESULT_JSON);
340342
} else if (path.matches("/v1/results/" + VOLTAGE_INIT_RESULT_UUID + "/status")) {
341343
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), VOLTAGE_INIT_STATUS_JSON);
342344
} else if (path.matches("/v1/results/" + VOLTAGE_INIT_RESULT_UUID + "/modifications-group-uuid")) {
@@ -588,6 +590,12 @@ void testVoltageInit(final MockWebServer server) throws Exception {
588590
content().string(VOLTAGE_INIT_RESULT_JSON));
589591
TestUtils.assertRequestMatches("GET", "/v1/results/" + VOLTAGE_INIT_RESULT_UUID, server);
590592

593+
// get voltage init result with globalFilters
594+
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/voltage-init/result?globalFilters=ss", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll(
595+
status().isOk(),
596+
content().string(VOLTAGE_INIT_RESULT_JSON));
597+
TestUtils.assertRequestMatches("GET", "/v1/results/" + VOLTAGE_INIT_RESULT_UUID + "\\?globalFilters=.*\\&networkUuid=.*\\&variantId=.*", server);
598+
591599
// get voltage init status
592600
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/voltage-init/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll(
593601
status().isOk(),

0 commit comments

Comments
 (0)