Skip to content

Commit e61ff6b

Browse files
authored
initialise nad layout at study duplication (#845)
Signed-off-by: Abdelsalem <[email protected]>
1 parent 2ba515d commit e61ff6b

File tree

4 files changed

+115
-51
lines changed

4 files changed

+115
-51
lines changed

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

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ private void handleConsumeCaseImportSucceeded(CaseImportReceiver receiver, UUID
291291

292292
private void insertStudy(UUID studyUuid, String userId, NetworkInfos networkInfos, CaseInfos caseInfos,
293293
Map<String, String> importParameters, UUID importReportUuid) {
294-
UserProfileInfos userProfileInfos = getUserProfile(userId);
294+
UserProfileInfos userProfileInfos = studyService.getUserProfile(userId);
295295

296296
DynamicSimulationParametersInfos dynamicSimulationParameters = DynamicSimulationService.getDefaultDynamicSimulationParameters();
297297
UUID loadFlowParametersUuid = createDefaultLoadFlowParameters(userId, userProfileInfos);
@@ -303,7 +303,7 @@ private void insertStudy(UUID studyUuid, String userId, NetworkInfos networkInfo
303303
UUID dynamicSecurityAnalysisParametersUuid = createDefaultDynamicSecurityAnalysisParameters(userId, userProfileInfos);
304304
UUID stateEstimationParametersUuid = createDefaultStateEstimationParameters();
305305
UUID spreadsheetConfigCollectionUuid = createDefaultSpreadsheetConfigCollection(userId, userProfileInfos);
306-
UUID diagramGridLayoutUuid = createGridLayoutFromNadDiagram(userId, userProfileInfos);
306+
UUID diagramGridLayoutUuid = studyService.createGridLayoutFromNadDiagram(userId, userProfileInfos);
307307

308308
studyService.insertStudy(studyUuid, userId, networkInfos, caseInfos, loadFlowParametersUuid,
309309
shortCircuitParametersUuid, DynamicSimulationService.toEntity(dynamicSimulationParameters, objectMapper),
@@ -312,30 +312,6 @@ private void insertStudy(UUID studyUuid, String userId, NetworkInfos networkInfo
312312
importParameters, importReportUuid);
313313
}
314314

315-
private UUID createGridLayoutFromNadDiagram(String userId, UserProfileInfos userProfileInfos) {
316-
if (userProfileInfos != null && userProfileInfos.getDiagramConfigId() != null) {
317-
UUID sourceNadConfig = userProfileInfos.getDiagramConfigId();
318-
try {
319-
UUID clonedNadConfig = singleLineDiagramService.duplicateNadConfig(sourceNadConfig);
320-
String nadConfigName = directoryService.getElementName(sourceNadConfig);
321-
return studyConfigService.createGridLayoutFromNadDiagram(sourceNadConfig, clonedNadConfig, nadConfigName);
322-
} catch (Exception e) {
323-
LOGGER.error(String.format("Could not create a diagram grid layout cloning NAD elment id '%s' from user/profile '%s/%s'. No layout created",
324-
sourceNadConfig, userId, userProfileInfos.getName()), e);
325-
}
326-
}
327-
return null;
328-
}
329-
330-
private UserProfileInfos getUserProfile(String userId) {
331-
try {
332-
return userAdminService.getUserProfile(userId).orElse(null);
333-
} catch (Exception e) {
334-
LOGGER.error(String.format("Could not access to profile for user '%s'", userId), e);
335-
}
336-
return null;
337-
}
338-
339315
private UUID createDefaultLoadFlowParameters(String userId, UserProfileInfos userProfileInfos) {
340316
if (userProfileInfos != null && userProfileInfos.getLoadFlowParameterId() != null) {
341317
// try to access/duplicate the user profile LF parameters

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

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ public class StudyService {
140140
private final StateEstimationService stateEstimationService;
141141
private final RootNetworkService rootNetworkService;
142142
private final RootNetworkNodeInfoService rootNetworkNodeInfoService;
143+
private final DirectoryService directoryService;
143144

144145
private final ObjectMapper objectMapper;
145146

@@ -202,7 +203,8 @@ public StudyService(
202203
StateEstimationService stateEstimationService,
203204
@Lazy StudyService studyService,
204205
RootNetworkService rootNetworkService,
205-
RootNetworkNodeInfoService rootNetworkNodeInfoService) {
206+
RootNetworkNodeInfoService rootNetworkNodeInfoService,
207+
DirectoryService directoryService) {
206208
this.defaultNonEvacuatedEnergyProvider = defaultNonEvacuatedEnergyProvider;
207209
this.defaultDynamicSimulationProvider = defaultDynamicSimulationProvider;
208210
this.studyRepository = studyRepository;
@@ -239,6 +241,7 @@ public StudyService(
239241
this.self = studyService;
240242
this.rootNetworkService = rootNetworkService;
241243
this.rootNetworkNodeInfoService = rootNetworkNodeInfoService;
244+
this.directoryService = directoryService;
242245
}
243246

244247
private CreatedStudyBasicInfos toStudyInfos(UUID studyUuid) {
@@ -656,6 +659,30 @@ public CreatedStudyBasicInfos updateNetwork(UUID studyUuid, UUID rootNetworkUuid
656659
return createdStudyBasicInfos;
657660
}
658661

662+
public UUID createGridLayoutFromNadDiagram(String userId, UserProfileInfos userProfileInfos) {
663+
if (userProfileInfos != null && userProfileInfos.getDiagramConfigId() != null) {
664+
UUID sourceNadConfig = userProfileInfos.getDiagramConfigId();
665+
try {
666+
UUID clonedNadConfig = singleLineDiagramService.duplicateNadConfig(sourceNadConfig);
667+
String nadConfigName = directoryService.getElementName(sourceNadConfig);
668+
return studyConfigService.createGridLayoutFromNadDiagram(sourceNadConfig, clonedNadConfig, nadConfigName);
669+
} catch (Exception e) {
670+
LOGGER.error(String.format("Could not create a diagram grid layout cloning NAD elment id '%s' from user/profile '%s/%s'. No layout created",
671+
sourceNadConfig, userId, userProfileInfos.getName()), e);
672+
}
673+
}
674+
return null;
675+
}
676+
677+
public UserProfileInfos getUserProfile(String userId) {
678+
try {
679+
return userAdminService.getUserProfile(userId).orElse(null);
680+
} catch (Exception e) {
681+
LOGGER.error(String.format("Could not access to profile for user '%s'", userId), e);
682+
}
683+
return null;
684+
}
685+
659686
private void duplicateStudyNodeAliases(StudyEntity newStudyEntity, StudyEntity sourceStudyEntity) {
660687
if (!CollectionUtils.isEmpty(sourceStudyEntity.getNodeAliases())) {
661688
Map<UUID, AbstractNode> newStudyNodes = networkModificationTreeService.getAllStudyNodesByUuid(newStudyEntity.getId());
@@ -683,7 +710,7 @@ private StudyEntity duplicateStudy(BasicStudyInfos studyInfos, UUID sourceStudyU
683710

684711
StudyEntity sourceStudy = studyRepository.findById(sourceStudyUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND));
685712

686-
StudyEntity newStudyEntity = duplicateStudyEntity(sourceStudy, studyInfos.getId());
713+
StudyEntity newStudyEntity = duplicateStudyEntity(sourceStudy, studyInfos.getId(), userId);
687714
rootNetworkService.duplicateStudyRootNetworks(newStudyEntity, sourceStudy);
688715
networkModificationTreeService.duplicateStudyNodes(newStudyEntity, sourceStudy);
689716
duplicateStudyNodeAliases(newStudyEntity, sourceStudy);
@@ -695,7 +722,7 @@ private StudyEntity duplicateStudy(BasicStudyInfos studyInfos, UUID sourceStudyU
695722
return newStudyEntity;
696723
}
697724

698-
private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID newStudyId) {
725+
private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID newStudyId, String userId) {
699726
UUID copiedLoadFlowParametersUuid = null;
700727
if (sourceStudyEntity.getLoadFlowParametersUuid() != null) {
701728
copiedLoadFlowParametersUuid = loadflowService.duplicateLoadFlowParameters(sourceStudyEntity.getLoadFlowParametersUuid());
@@ -742,6 +769,9 @@ private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID new
742769
copiedStateEstimationParametersUuid = stateEstimationService.duplicateStateEstimationParameters(sourceStudyEntity.getStateEstimationParametersUuid());
743770
}
744771

772+
UserProfileInfos userProfile = getUserProfile(userId);
773+
UUID diagramGridLayoutId = createGridLayoutFromNadDiagram(userId, userProfile);
774+
745775
return studyRepository.save(StudyEntity.builder()
746776
.id(newStudyId)
747777
.loadFlowParametersUuid(copiedLoadFlowParametersUuid)
@@ -756,6 +786,7 @@ private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID new
756786
.spreadsheetConfigCollectionUuid(copiedSpreadsheetConfigCollectionUuid)
757787
.nonEvacuatedEnergyParameters(NonEvacuatedEnergyService.toEntity(nonEvacuatedEnergyParametersInfos))
758788
.stateEstimationParametersUuid(copiedStateEstimationParametersUuid)
789+
.diagramGridLayoutUuid(diagramGridLayoutId)
759790
.build());
760791
}
761792

0 commit comments

Comments
 (0)