Skip to content

Commit 4be4bf6

Browse files
authored
add globalFilters to getSensitivityAnalysisResult endpoint (#786)
Signed-off-by: Rehili Ghazwa <[email protected]>
1 parent e499911 commit 4be4bf6

File tree

4 files changed

+29
-9
lines changed

4 files changed

+29
-9
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
@@ -1715,9 +1715,10 @@ public ResponseEntity<String> getSensitivityAnalysisResult(
17151715
@Parameter(description = "rootNetworkUuid") @PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
17161716
@Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid,
17171717
@Parameter(description = "results selector") @RequestParam("selector") String selector,
1718-
@Parameter(description = "JSON array of filters") @RequestParam(name = "filters", required = false) String filters
1718+
@Parameter(description = "JSON array of filters") @RequestParam(name = "filters", required = false) String filters,
1719+
@Parameter(description = "JSON array of global filters") @RequestParam(name = "globalFilters", required = false) String globalFilters
17191720
) {
1720-
String result = rootNetworkNodeInfoService.getSensitivityAnalysisResult(nodeUuid, rootNetworkUuid, selector, filters);
1721+
String result = rootNetworkNodeInfoService.getSensitivityAnalysisResult(nodeUuid, rootNetworkUuid, selector, filters, globalFilters);
17211722
return result != null ? ResponseEntity.ok().body(result) :
17221723
ResponseEntity.noContent().build();
17231724
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,9 +570,12 @@ public List<TimelineEventInfos> getDynamicSimulationTimeline(UUID nodeUuid, UUID
570570
}
571571

572572
@Transactional(readOnly = true)
573-
public String getSensitivityAnalysisResult(UUID nodeUuid, UUID rootNetworkUuid, String selector, String filters) {
573+
public String getSensitivityAnalysisResult(UUID nodeUuid, UUID rootNetworkUuid, String selector, String filters, String globalFilters) {
574+
RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(nodeUuid, rootNetworkUuid).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND));
575+
String variantId = rootNetworkNodeInfoEntity.getVariantId();
576+
UUID networkUuid = rootNetworkNodeInfoEntity.getRootNetwork().getNetworkUuid();
574577
UUID resultUuid = getComputationResultUuid(nodeUuid, rootNetworkUuid, SENSITIVITY_ANALYSIS);
575-
return sensitivityAnalysisService.getSensitivityAnalysisResult(resultUuid, selector, filters);
578+
return sensitivityAnalysisService.getSensitivityAnalysisResult(resultUuid, networkUuid, variantId, selector, filters, globalFilters);
576579
}
577580

578581
@Transactional(readOnly = true)

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public UUID runSensitivityAnalysis(UUID nodeUuid, UUID rootNetworkUuid, UUID net
105105
return restTemplate.exchange(sensitivityAnalysisServerBaseUri + path, HttpMethod.POST, httpEntity, UUID.class).getBody();
106106
}
107107

108-
public String getSensitivityAnalysisResult(UUID resultUuid, String selector, String filters) {
108+
public String getSensitivityAnalysisResult(UUID resultUuid, UUID networkUuid, String variantId, String selector, String filters, String globalFilters) {
109109
String result;
110110

111111
if (resultUuid == null) {
@@ -120,6 +120,13 @@ public String getSensitivityAnalysisResult(UUID resultUuid, String selector, Str
120120
if (StringUtils.isNotBlank(filters)) {
121121
uriBuilder.queryParam("filters", URLEncoder.encode(filters, StandardCharsets.UTF_8));
122122
}
123+
if (!StringUtils.isEmpty(globalFilters)) {
124+
uriBuilder.queryParam("globalFilters", URLEncoder.encode(globalFilters, StandardCharsets.UTF_8));
125+
uriBuilder.queryParam("networkUuid", networkUuid);
126+
if (!StringUtils.isBlank(variantId)) {
127+
uriBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantId);
128+
}
129+
}
123130
URI uri = uriBuilder.build().encode().toUri();
124131

125132
try {

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.gridsuite.study.server.repository.nonevacuatedenergy.NonEvacuatedEnergyParametersEntity;
3434
import org.gridsuite.study.server.repository.rootnetwork.RootNetworkNodeInfoRepository;
3535
import org.gridsuite.study.server.service.*;
36-
import org.gridsuite.study.server.service.LoadFlowService;
3736
import org.gridsuite.study.server.utils.SendInput;
3837
import org.gridsuite.study.server.utils.TestUtils;
3938
import org.gridsuite.study.server.utils.elasticsearch.DisableElasticsearch;
@@ -303,7 +302,9 @@ public MockResponse dispatch(RecordedRequest request) {
303302
} else if (path.matches("/v1/parameters") && method.equals("POST")) {
304303
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SENSITIVITY_ANALYSIS_PARAMETERS_UUID));
305304
} else if (path.matches("/v1/parameters/default") && method.equals("POST")) {
306-
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SENSITIVITY_ANALYSIS_PARAMETERS_UUID));
305+
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SENSITIVITY_ANALYSIS_PARAMETERS_UUID));
306+
} else if (path.matches("/v1/results/" + SENSITIVITY_ANALYSIS_RESULT_UUID + "\\?filters=.*globalFilters=.*networkUuid=.*variantId.*sort=.*")) {
307+
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SENSITIVITY_ANALYSIS_RESULT_UUID);
307308
} else {
308309
LOGGER.error("Unhandled method+path: " + request.getMethod() + " " + request.getPath());
309310
return new MockResponse.Builder().code(418).body("Unhandled method+path: " + request.getMethod() + " " + request.getPath()).build();
@@ -350,6 +351,14 @@ private void testSensitivityAnalysisWithRootNetworkUuidAndNodeUuid(final MockWeb
350351
.andExpectAll(status().isOk(), content().string(FAKE_RESULT_JSON));
351352
assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.contains("/v1/results/" + resultUuid + "/filter-options")));
352353

354+
// get result with filters , globalFilters and sort
355+
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result?filters=lineId2&selector=subjectId&globalFilters=ss", studyUuid, rootNetworkUuid, nodeUuid))
356+
.andExpectAll(status().isOk(), content().string(FAKE_RESULT_JSON));
357+
358+
Set<String> actualRequests = TestUtils.getRequestsDone(1, server);
359+
assertTrue(actualRequests.stream().anyMatch(request -> request.contains("/v1/results/" + resultUuid) && request.contains("selector=subjectId") && request.contains("filters=lineId2") && request.contains("globalFilters=ss")
360+
));
361+
353362
// get sensitivity analysis status
354363
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/status", studyUuid, rootNetworkUuid, nodeUuid)).andExpectAll(
355364
status().isOk(),
@@ -414,7 +423,7 @@ void testSensitivityAnalysis(final MockWebServer server) throws Exception {
414423

415424
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result?selector={selector}",
416425
studyNameUserIdUuid, firstRootNetworkUuid, UUID.randomUUID(), "fakeJsonSelector"))
417-
.andExpectAll(status().isNoContent());
426+
.andExpectAll(status().isNotFound());
418427

419428
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result/filter-options?selector={selector}",
420429
studyNameUserIdUuid, firstRootNetworkUuid, UUID.randomUUID(), "fakeJsonSelector"))
@@ -490,7 +499,7 @@ void testGetSensitivityResultWithWrongId() throws Exception {
490499
UUID studyUuid = studyEntity.getId();
491500
UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyUuid);
492501
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result?selector={selector}", studyUuid, firstRootNetworkUuid, UUID.randomUUID(), FAKE_RESULT_JSON))
493-
.andExpect(status().isNoContent()).andReturn();
502+
.andExpect(status().isNotFound()).andReturn();
494503

495504
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/sensitivity-analysis/result/filter-options?selector={selector}", studyUuid, firstRootNetworkUuid, UUID.randomUUID(), FAKE_RESULT_JSON))
496505
.andExpect(status().isNoContent()).andReturn();

0 commit comments

Comments
 (0)