diff --git a/src/main/java/org/gridsuite/study/server/controller/StudyController.java b/src/main/java/org/gridsuite/study/server/controller/StudyController.java index bdd17914a..5716f8389 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -279,17 +279,15 @@ public ResponseEntity cutAndPasteNode(@PathVariable("studyUuid") UUID stud return ResponseEntity.ok().build(); } - @RequestMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network", method = RequestMethod.HEAD) + @GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network") @Operation(summary = "check study root network existence") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "The network does exist"), @ApiResponse(responseCode = "204", description = "The network doesn't exist")}) - public ResponseEntity checkNetworkExistence(@PathVariable("studyUuid") UUID studyUuid, @PathVariable("rootNetworkUuid") UUID rootNetworkUuid) { + public ResponseEntity checkNetworkExistence(@PathVariable("studyUuid") UUID studyUuid, @PathVariable("rootNetworkUuid") UUID rootNetworkUuid) { UUID networkUUID = rootNetworkService.getNetworkUuid(rootNetworkUuid); - return networkStoreService.doesNetworkExist(networkUUID) - ? ResponseEntity.ok().build() - : ResponseEntity.noContent().build(); - + return ResponseEntity.ok().body(new RootNetworkStatusInfos(networkStoreService.doesNetworkExist(networkUUID), + rootNetworkService.getRootNetworkLoadStatus(rootNetworkUuid))); } @PostMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network", params = {"caseUuid"}) diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java new file mode 100644 index 000000000..5eda08326 --- /dev/null +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2026, 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; + +/** + * @author Bassel El Cheikh + */ +public record RootNetworkStatusInfos(boolean exists, RootNetworkLoadStatus rootNetworkLoadStatus) { +} diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java index 6c90f4bf8..83dff1c41 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -89,6 +89,11 @@ public UUID getNetworkUuid(UUID rootNetworkUuid) { return getRootNetwork(rootNetworkUuid).map(RootNetworkEntity::getNetworkUuid).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); } + public RootNetworkLoadStatus getRootNetworkLoadStatus(UUID networkUuid) { + Optional rootNetworkEntity = getRootNetwork(networkUuid); + return rootNetworkEntity.map(RootNetworkEntity::getLoadStatus).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); + } + public UUID getRootReportUuid(UUID rootNetworkUuid) { return getRootNetwork(rootNetworkUuid).map(RootNetworkEntity::getReportUuid).orElse(null); } diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkControllerTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkControllerTest.java index 980253c1c..55d5c411d 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkControllerTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkControllerTest.java @@ -49,8 +49,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.head; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -162,7 +164,7 @@ void testCheckNetworkExistenceReturnsOk() throws Exception { } @Test - void testCheckNetworkExistenceReturnsNotContent() throws Exception { + void testCheckNetworkExistenceReturnsNetworkNotFound() throws Exception { Map importParameters = new HashMap<>(); importParameters.put("param1", "changedValue1, changedValue2"); importParameters.put("param2", "changedValue"); @@ -170,9 +172,10 @@ void testCheckNetworkExistenceReturnsNotContent() throws Exception { UUID studyUuid = createStudy(userId, importParameters); UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyUuid); when(networkStoreService.getNetwork(NETWORK_UUID)).thenThrow(new PowsyblException("Network '" + NETWORK_UUID + "' not found")); - mockMvc.perform(head("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network", studyUuid, firstRootNetworkUuid) + mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/network", studyUuid, firstRootNetworkUuid) .header(USER_ID_HEADER, userId)) - .andExpect(status().isNoContent()); + .andExpect(status().isOk()) + .andExpect(jsonPath("$.exists").value(false)); } @Test