Skip to content

Commit ee669ca

Browse files
authored
Set proper Nad name when we create a new study with a Nad in user profile (#836)
Signed-off-by: David BRAQUART <[email protected]>
1 parent 28d7794 commit ee669ca

File tree

8 files changed

+70
-11
lines changed

8 files changed

+70
-11
lines changed

src/main/java/org/gridsuite/study/server/StudyConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ private StudyConstants() {
3636
public static final String DYNAMIC_MAPPING_API_VERSION = ""; // mapping server is now without version, must be v1 in the next time
3737
public static final String FILTER_API_VERSION = "v1";
3838
public static final String STATE_ESTIMATION_API_VERSION = "v1";
39+
public static final String DIRECTORY_API_VERSION = "v1";
3940

4041
public static final String NETWORK_UUID = "networkUuid";
4142
public static final String CASE_UUID = "caseUuid";

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public class ConsumerService {
6868
private final UserAdminService userAdminService;
6969
private final NetworkModificationTreeService networkModificationTreeService;
7070
private final StudyConfigService studyConfigService;
71+
private final DirectoryService directoryService;
7172
private final ShortCircuitService shortCircuitService;
7273
private final RootNetworkNodeInfoService rootNetworkNodeInfoService;
7374
private final VoltageInitService voltageInitService;
@@ -87,6 +88,7 @@ public ConsumerService(ObjectMapper objectMapper,
8788
NetworkModificationTreeService networkModificationTreeService,
8889
SensitivityAnalysisService sensitivityAnalysisService,
8990
StudyConfigService studyConfigService,
91+
DirectoryService directoryService,
9092
RootNetworkNodeInfoService rootNetworkNodeInfoService,
9193
VoltageInitService voltageInitService,
9294
DynamicSecurityAnalysisService dynamicSecurityAnalysisService,
@@ -102,6 +104,7 @@ public ConsumerService(ObjectMapper objectMapper,
102104
this.networkModificationTreeService = networkModificationTreeService;
103105
this.sensitivityAnalysisService = sensitivityAnalysisService;
104106
this.studyConfigService = studyConfigService;
107+
this.directoryService = directoryService;
105108
this.shortCircuitService = shortCircuitService;
106109
this.rootNetworkNodeInfoService = rootNetworkNodeInfoService;
107110
this.voltageInitService = voltageInitService;
@@ -308,12 +311,14 @@ private void insertStudy(UUID studyUuid, String userId, NetworkInfos networkInfo
308311

309312
private UUID createGridLayoutFromNadDiagram(String userId, UserProfileInfos userProfileInfos) {
310313
if (userProfileInfos != null && userProfileInfos.getDiagramConfigId() != null) {
314+
UUID sourceNadConfig = userProfileInfos.getDiagramConfigId();
311315
try {
312-
UUID clonedNadConfig = singleLineDiagramService.duplicateNadConfig(userProfileInfos.getDiagramConfigId());
313-
return studyConfigService.createGridLayoutFromNadDiagram(userProfileInfos.getDiagramConfigId(), clonedNadConfig);
316+
UUID clonedNadConfig = singleLineDiagramService.duplicateNadConfig(sourceNadConfig);
317+
String nadConfigName = directoryService.getElementName(sourceNadConfig);
318+
return studyConfigService.createGridLayoutFromNadDiagram(sourceNadConfig, clonedNadConfig, nadConfigName);
314319
} catch (Exception e) {
315-
LOGGER.error(String.format("Could not create a diagram grid layout with NAD elment id '%s' from user/profile '%s/%s'. No layout created",
316-
userProfileInfos.getDiagramConfigId(), userId, userProfileInfos.getName()), e);
320+
LOGGER.error(String.format("Could not create a diagram grid layout cloning NAD elment id '%s' from user/profile '%s/%s'. No layout created",
321+
sourceNadConfig, userId, userProfileInfos.getName()), e);
317322
}
318323
}
319324
return null;
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* Copyright (c) 2024, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
package org.gridsuite.study.server.service;
8+
9+
import lombok.Setter;
10+
import org.gridsuite.study.server.RemoteServicesProperties;
11+
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.stereotype.Service;
13+
import org.springframework.web.client.RestTemplate;
14+
import org.springframework.web.util.UriComponentsBuilder;
15+
import java.util.UUID;
16+
17+
import static org.gridsuite.study.server.StudyConstants.DELIMITER;
18+
import static org.gridsuite.study.server.StudyConstants.DIRECTORY_API_VERSION;
19+
20+
/**
21+
* @author David Braquart <david.braquart at rte-france.com>
22+
*/
23+
@Service
24+
public class DirectoryService {
25+
26+
private final RestTemplate restTemplate;
27+
28+
@Setter
29+
private String directoryServerServerBaseUri;
30+
31+
@Autowired
32+
public DirectoryService(RemoteServicesProperties remoteServicesProperties, RestTemplate restTemplate) {
33+
this.directoryServerServerBaseUri = remoteServicesProperties.getServiceUri("directory-server");
34+
this.restTemplate = restTemplate;
35+
}
36+
37+
public String getElementName(UUID elementUuid) {
38+
UriComponentsBuilder pathBuilder = UriComponentsBuilder.fromPath(DELIMITER + DIRECTORY_API_VERSION + "/elements/{elementUuid}/name");
39+
String path = pathBuilder.buildAndExpand(elementUuid).toUriString();
40+
return restTemplate.getForObject(directoryServerServerBaseUri + path, String.class);
41+
}
42+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,14 +478,15 @@ public void updateDiagramGridLayout(UUID diagramGridLayoutUuid, DiagramGridLayou
478478
}
479479
}
480480

481-
public UUID createGridLayoutFromNadDiagram(UUID sourceNadConfigUuid, UUID clonedNadConfigUuid) {
481+
public UUID createGridLayoutFromNadDiagram(UUID sourceNadConfigUuid, UUID clonedNadConfigUuid, String nadDiagramConfigName) {
482482
if (sourceNadConfigUuid == null) {
483483
return null;
484484
}
485485
DiagramGridLayout diagramGridLayout = DiagramGridLayout.builder()
486486
.diagramLayouts(List.of(NetworkAreaDiagramLayout.builder()
487487
.originalNadConfigUuid(sourceNadConfigUuid)
488488
.currentNadConfigUuid(clonedNadConfigUuid)
489+
.name(nadDiagramConfigName)
489490
.build()))
490491
.build();
491492

src/main/resources/application-local.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,6 @@ gridsuite:
8282
-
8383
name: study-config-server
8484
base-uri: http://localhost:5035/
85+
-
86+
name: directory-server
87+
base-uri: http://localhost:5026

src/main/resources/config/application.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,9 @@ gridsuite:
224224
-
225225
name: study-config-server
226226
base-uri: http://study-config-server/
227+
-
228+
name: directory-server
229+
base-uri: http://directory-server/
227230

228231
study:
229232
max-root-network-by-study: 4

src/test/java/org/gridsuite/study/server/service/ConsumerServiceTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,17 @@ class ConsumerServiceTest {
1414

1515
private StudyConfigService studyConfigService;
1616
private SingleLineDiagramService singleLineDiagramService;
17+
private DirectoryService directoryService;
1718
private ConsumerService consumerService;
1819

1920
@BeforeEach
2021
void setUp() {
2122
studyConfigService = mock(StudyConfigService.class);
2223
singleLineDiagramService = mock(SingleLineDiagramService.class);
24+
directoryService = mock(DirectoryService.class);
2325
consumerService = new ConsumerService(null, null, null, null, null,
2426
null, null, null, null, null,
25-
studyConfigService, null, null, null, null,
27+
studyConfigService, directoryService, null, null, null, null,
2628
singleLineDiagramService);
2729
}
2830

@@ -31,16 +33,18 @@ void createGridLayoutFromNadDiagram() {
3133
UUID diagramConfigId = UUID.randomUUID();
3234
UUID clonedConfigId = UUID.randomUUID();
3335
UUID gridLayoutUuid = UUID.randomUUID();
36+
String nadElementName = "N";
3437
UserProfileInfos profile = UserProfileInfos.builder().diagramConfigId(diagramConfigId).build();
3538

3639
when(singleLineDiagramService.duplicateNadConfig(diagramConfigId)).thenReturn(clonedConfigId);
37-
when(studyConfigService.createGridLayoutFromNadDiagram(diagramConfigId, clonedConfigId)).thenReturn(gridLayoutUuid);
40+
when(directoryService.getElementName(diagramConfigId)).thenReturn(nadElementName);
41+
when(studyConfigService.createGridLayoutFromNadDiagram(diagramConfigId, clonedConfigId, nadElementName)).thenReturn(gridLayoutUuid);
3842

3943
UUID result = ReflectionTestUtils.invokeMethod(consumerService, "createGridLayoutFromNadDiagram", "user", profile);
4044

4145
assertEquals(gridLayoutUuid, result);
4246
verify(singleLineDiagramService).duplicateNadConfig(diagramConfigId);
43-
verify(studyConfigService).createGridLayoutFromNadDiagram(diagramConfigId, clonedConfigId);
47+
verify(studyConfigService).createGridLayoutFromNadDiagram(diagramConfigId, clonedConfigId, nadElementName);
4448
}
4549

4650
@Test

src/test/java/org/gridsuite/study/server/service/StudyConfigServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void createGridLayoutFromNadDiagram() {
3636
eq(HttpMethod.POST), captor.capture(), eq(UUID.class)))
3737
.thenReturn(ResponseEntity.ok(expected));
3838

39-
assertEquals(expected, service.createGridLayoutFromNadDiagram(src, clone));
39+
assertEquals(expected, service.createGridLayoutFromNadDiagram(src, clone, "N"));
4040

4141
DiagramGridLayout body = captor.getValue().getBody();
4242
NetworkAreaDiagramLayout layout = (NetworkAreaDiagramLayout) body.getDiagramLayouts().get(0);
@@ -51,7 +51,7 @@ void createGridLayoutFromNadDiagramNullSource() {
5151
when(properties.getServiceUri("study-config-server")).thenReturn("http://study-config");
5252
StudyConfigService service = new StudyConfigService(properties, restTemplate);
5353

54-
assertNull(service.createGridLayoutFromNadDiagram(null, UUID.randomUUID()));
54+
assertNull(service.createGridLayoutFromNadDiagram(null, UUID.randomUUID(), "N"));
5555
verifyNoInteractions(restTemplate);
5656
}
5757

@@ -69,6 +69,6 @@ void createGridLayoutFromNadDiagramRestError() {
6969
eq(HttpMethod.POST), any(HttpEntity.class), eq(UUID.class)))
7070
.thenThrow(new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR));
7171

72-
assertThrows(StudyException.class, () -> service.createGridLayoutFromNadDiagram(src, clone));
72+
assertThrows(StudyException.class, () -> service.createGridLayoutFromNadDiagram(src, clone, "N"));
7373
}
7474
}

0 commit comments

Comments
 (0)