diff --git a/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersController.java b/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersController.java index 5bab588e..0edb61b9 100644 --- a/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersController.java +++ b/src/main/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersController.java @@ -11,12 +11,14 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import org.gridsuite.securityanalysis.server.dto.LimitReductionsByVoltageLevel; import org.gridsuite.securityanalysis.server.dto.SecurityAnalysisParametersValues; import org.gridsuite.securityanalysis.server.service.SecurityAnalysisParametersService; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.UUID; /** @@ -103,4 +105,13 @@ public ResponseEntity updateProvider( parametersService.updateProvider(parametersUuid, provider); return ResponseEntity.ok().build(); } + + @GetMapping(value = "/default-limit-reductions", produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Get default limit reductions") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The default limit reductions")}) + public ResponseEntity> getDefaultLimitReductions() { + return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON) + .body(parametersService.getDefaultLimitReductions()); + } + } diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisParametersService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisParametersService.java index 849de6c9..6c446699 100644 --- a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisParametersService.java +++ b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisParametersService.java @@ -176,4 +176,8 @@ public void updateProvider(UUID parametersUuid, String provider) { .orElseThrow() .updateProvider(provider != null ? provider : defaultProvider); } + + public List getDefaultLimitReductions() { + return limitReductionService.createDefaultLimitReductions(); + } } diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java index 1afe2c3a..43c74d85 100644 --- a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java +++ b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java @@ -6,6 +6,7 @@ */ package org.gridsuite.securityanalysis.server; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.gridsuite.securityanalysis.server.dto.LimitReductionsByVoltageLevel; import org.gridsuite.securityanalysis.server.dto.SecurityAnalysisParametersValues; @@ -341,6 +342,20 @@ void testRemoveParameters() throws Exception { assertNull(securityAnalysisParametersRepository.findById(createdParametersUuid).orElse(null)); } + @Test + void testGetDefaultLimitReductions() throws Exception { + MvcResult mvcResult = mockMvc.perform(get("/v1/parameters/default-limit-reductions") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andReturn(); + + String responseContent = mvcResult.getResponse().getContentAsString(); + List limitReductions = objectMapper.readValue(responseContent, new TypeReference<>() { }); + + assertNotNull(limitReductions); + assertFalse(limitReductions.isEmpty()); + } + private void assertSecurityAnalysisParametersEntityAreEquals(UUID parametersUuid, double lowVoltageAbsoluteThreshold, double lowVoltageProportionalThreshold, double highVoltageAbsoluteThreshold, double highVoltageProportionalThreshold, double flowProportionalThreshold) { SecurityAnalysisParametersEntity securityAnalysisParametersEntity = securityAnalysisParametersRepository.findById(parametersUuid).orElseThrow(); assertEquals(lowVoltageAbsoluteThreshold, securityAnalysisParametersEntity.getLowVoltageAbsoluteThreshold(), 0.001);