From 8eafbe2aa49d2ed6c2f41a8e9d9083a631d6b001 Mon Sep 17 00:00:00 2001 From: basseche Date: Fri, 4 Sep 2026 11:54:03 +0200 Subject: [PATCH 1/4] Change checkExistence endpoint's body to include network load status Signed-off-by: basseche --- .../study/server/controller/StudyController.java | 10 ++++------ .../study/server/dto/RootNetworkExistence.java | 4 ++++ .../study/server/service/RootNetworkService.java | 5 +++++ 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java 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 33caae6c1..70ee7c1fe 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 RootNetworkExistence(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/RootNetworkExistence.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java new file mode 100644 index 000000000..58f209d95 --- /dev/null +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java @@ -0,0 +1,4 @@ +package org.gridsuite.study.server.dto; + +public record RootNetworkExistence(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 6a9f666fc..2e0bdecf2 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).orElse(null); + } + public UUID getRootReportUuid(UUID rootNetworkUuid) { return getRootNetwork(rootNetworkUuid).map(RootNetworkEntity::getReportUuid).orElse(null); } From 2a4ae5180f80b54aabfc70aeb7ff7c3064081800 Mon Sep 17 00:00:00 2001 From: basseche Date: Fri, 4 Sep 2026 13:27:42 +0200 Subject: [PATCH 2/4] fix tests Signed-off-by: basseche --- .../server/rootnetworks/RootNetworkControllerTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 From a238f4b5b05dad22d4120a3aacc763da5a294dee Mon Sep 17 00:00:00 2001 From: basseche Date: Tue, 8 Sep 2026 14:26:22 +0200 Subject: [PATCH 3/4] review Signed-off-by: basseche --- .../gridsuite/study/server/controller/StudyController.java | 4 ++-- .../org/gridsuite/study/server/dto/RootNetworkExistence.java | 4 ---- .../gridsuite/study/server/dto/RootNetworkStatusInfos.java | 4 ++++ .../gridsuite/study/server/service/RootNetworkService.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java create mode 100644 src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java 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 508ca2f8f..5716f8389 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -284,9 +284,9 @@ public ResponseEntity cutAndPasteNode(@PathVariable("studyUuid") UUID stud @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 ResponseEntity.ok().body(new RootNetworkExistence(networkStoreService.doesNetworkExist(networkUUID), + return ResponseEntity.ok().body(new RootNetworkStatusInfos(networkStoreService.doesNetworkExist(networkUUID), rootNetworkService.getRootNetworkLoadStatus(rootNetworkUuid))); } diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java deleted file mode 100644 index 58f209d95..000000000 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkExistence.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.gridsuite.study.server.dto; - -public record RootNetworkExistence(Boolean exists, RootNetworkLoadStatus rootNetworkLoadStatus) { -} 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..d3d2eb5fd --- /dev/null +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java @@ -0,0 +1,4 @@ +package org.gridsuite.study.server.dto; + +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 05a05b284..83dff1c41 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -91,7 +91,7 @@ public UUID getNetworkUuid(UUID rootNetworkUuid) { public RootNetworkLoadStatus getRootNetworkLoadStatus(UUID networkUuid) { Optional rootNetworkEntity = getRootNetwork(networkUuid); - return rootNetworkEntity.map(RootNetworkEntity::getLoadStatus).orElse(null); + return rootNetworkEntity.map(RootNetworkEntity::getLoadStatus).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); } public UUID getRootReportUuid(UUID rootNetworkUuid) { From 31337f17fc0167864d9b3578f0e4b239fdd605dd Mon Sep 17 00:00:00 2001 From: basseche Date: Tue, 8 Sep 2026 15:04:21 +0200 Subject: [PATCH 4/4] author and copyright Signed-off-by: basseche Signed-off-by: basseche --- .../study/server/dto/RootNetworkStatusInfos.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java index d3d2eb5fd..5eda08326 100644 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkStatusInfos.java @@ -1,4 +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) { }