diff --git a/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisController.java b/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisController.java index f646d15e..f359bfe8 100644 --- a/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisController.java +++ b/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisController.java @@ -156,15 +156,15 @@ public ResponseEntity getNResultZippedCsv(@Parameter(description = "Resu } @GetMapping(value = "/results/{resultUuid}/nmk-contingencies-result/paged", produces = APPLICATION_JSON_VALUE) - @Operation(summary = "Get a security analysis result from the database - NMK contingencies result") + @Operation(summary = "Get a paged security analysis result from the database - NMK contingencies result") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result"), @ApiResponse(responseCode = "404", description = "Security analysis result has not been found")}) - public ResponseEntity> getNmKContingenciesResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid, - @Parameter(description = "network Uuid") @RequestParam(name = "networkUuid", required = false) UUID networkUuid, - @Parameter(description = "variant Id") @RequestParam(name = "variantId", required = false) String variantId, - @Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters, - @Parameter(description = "Global Filters") @RequestParam(name = "globalFilters", required = false) String globalFilters, - @Parameter(description = "Pagination parameters") Pageable pageable) { + public ResponseEntity> getPagedNmKContingenciesResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid, + @Parameter(description = "network Uuid") @RequestParam(name = "networkUuid", required = false) UUID networkUuid, + @Parameter(description = "variant Id") @RequestParam(name = "variantId", required = false) String variantId, + @Parameter(description = "Filters") @RequestParam(name = "filters", required = false) String stringFilters, + @Parameter(description = "Global Filters") @RequestParam(name = "globalFilters", required = false) String globalFilters, + @Parameter(description = "Pagination parameters") Pageable pageable) { String decodedStringFilters = stringFilters != null ? URLDecoder.decode(stringFilters, StandardCharsets.UTF_8) : null; String decodedStringGlobalFilters = globalFilters != null ? URLDecoder.decode(globalFilters, StandardCharsets.UTF_8) : null; Page result = securityAnalysisResultService.findNmKContingenciesPaged(resultUuid, networkUuid, variantId, decodedStringFilters, decodedStringGlobalFilters, pageable); @@ -174,6 +174,18 @@ public ResponseEntity> getNmKContingenciesResult(@Par : ResponseEntity.notFound().build(); } + @GetMapping(value = "/results/{resultUuid}/nmk-contingencies-result", produces = APPLICATION_JSON_VALUE) + @Operation(summary = "Get a full security analysis result from the database - NMK contingencies result") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result"), + @ApiResponse(responseCode = "404", description = "Security analysis result has not been found")}) + public ResponseEntity> getNmKContingenciesResult(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid) { + List result = securityAnalysisResultService.findNmKContingenciesResult(resultUuid); + + return result != null + ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(result) + : ResponseEntity.notFound().build(); + } + @PostMapping(value = "/results/{resultUuid}/nmk-contingencies-result/csv", produces = APPLICATION_OCTET_STREAM_VALUE, consumes = APPLICATION_JSON_VALUE) @Operation(summary = "Get a security analysis result from the database - NMK contingencies result - CSV export") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis result csv export"), diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java index 8b961d16..eb9404ab 100644 --- a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java +++ b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java @@ -864,6 +864,38 @@ void saveResultTest() throws Exception { .isEqualTo(securityAnalysisResult); } + @Test + void getNmKContingenciesResult() throws Exception { + UUID resultUuid = UUID.randomUUID(); + + List serviceResult = SecurityAnalysisProviderMock.RESULT_CONTINGENCIES; + + doReturn(serviceResult).when(securityAnalysisResultService).findNmKContingenciesResult(resultUuid); + + mockMvc.perform(get("/" + VERSION + "/results/" + resultUuid + "/nmk-contingencies-result") + .accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + .andExpect(content().json(mapper.writeValueAsString(serviceResult))); + + verify(securityAnalysisResultService, times(1)) + .findNmKContingenciesResult(resultUuid); + } + + @Test + void getNmKContingenciesResultNotFound() throws Exception { + UUID resultUuid = UUID.randomUUID(); + + doReturn(null).when(securityAnalysisResultService).findNmKContingenciesResult(resultUuid); + + mockMvc.perform(get("/" + VERSION + "/results/" + resultUuid + "/nmk-contingencies-result") + .accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()); + + verify(securityAnalysisResultService, times(1)) + .findNmKContingenciesResult(resultUuid); + } + @Test void getZippedCsvResults() throws Exception { // running computation to create some results