@@ -140,6 +140,7 @@ public class StudyService {
140
140
private final StateEstimationService stateEstimationService ;
141
141
private final RootNetworkService rootNetworkService ;
142
142
private final RootNetworkNodeInfoService rootNetworkNodeInfoService ;
143
+ private final DirectoryService directoryService ;
143
144
144
145
private final ObjectMapper objectMapper ;
145
146
@@ -202,7 +203,8 @@ public StudyService(
202
203
StateEstimationService stateEstimationService ,
203
204
@ Lazy StudyService studyService ,
204
205
RootNetworkService rootNetworkService ,
205
- RootNetworkNodeInfoService rootNetworkNodeInfoService ) {
206
+ RootNetworkNodeInfoService rootNetworkNodeInfoService ,
207
+ DirectoryService directoryService ) {
206
208
this .defaultNonEvacuatedEnergyProvider = defaultNonEvacuatedEnergyProvider ;
207
209
this .defaultDynamicSimulationProvider = defaultDynamicSimulationProvider ;
208
210
this .studyRepository = studyRepository ;
@@ -239,6 +241,7 @@ public StudyService(
239
241
this .self = studyService ;
240
242
this .rootNetworkService = rootNetworkService ;
241
243
this .rootNetworkNodeInfoService = rootNetworkNodeInfoService ;
244
+ this .directoryService = directoryService ;
242
245
}
243
246
244
247
private CreatedStudyBasicInfos toStudyInfos (UUID studyUuid ) {
@@ -656,6 +659,30 @@ public CreatedStudyBasicInfos updateNetwork(UUID studyUuid, UUID rootNetworkUuid
656
659
return createdStudyBasicInfos ;
657
660
}
658
661
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
+
659
686
private void duplicateStudyNodeAliases (StudyEntity newStudyEntity , StudyEntity sourceStudyEntity ) {
660
687
if (!CollectionUtils .isEmpty (sourceStudyEntity .getNodeAliases ())) {
661
688
Map <UUID , AbstractNode > newStudyNodes = networkModificationTreeService .getAllStudyNodesByUuid (newStudyEntity .getId ());
@@ -683,7 +710,7 @@ private StudyEntity duplicateStudy(BasicStudyInfos studyInfos, UUID sourceStudyU
683
710
684
711
StudyEntity sourceStudy = studyRepository .findById (sourceStudyUuid ).orElseThrow (() -> new StudyException (STUDY_NOT_FOUND ));
685
712
686
- StudyEntity newStudyEntity = duplicateStudyEntity (sourceStudy , studyInfos .getId ());
713
+ StudyEntity newStudyEntity = duplicateStudyEntity (sourceStudy , studyInfos .getId (), userId );
687
714
rootNetworkService .duplicateStudyRootNetworks (newStudyEntity , sourceStudy );
688
715
networkModificationTreeService .duplicateStudyNodes (newStudyEntity , sourceStudy );
689
716
duplicateStudyNodeAliases (newStudyEntity , sourceStudy );
@@ -695,7 +722,7 @@ private StudyEntity duplicateStudy(BasicStudyInfos studyInfos, UUID sourceStudyU
695
722
return newStudyEntity ;
696
723
}
697
724
698
- private StudyEntity duplicateStudyEntity (StudyEntity sourceStudyEntity , UUID newStudyId ) {
725
+ private StudyEntity duplicateStudyEntity (StudyEntity sourceStudyEntity , UUID newStudyId , String userId ) {
699
726
UUID copiedLoadFlowParametersUuid = null ;
700
727
if (sourceStudyEntity .getLoadFlowParametersUuid () != null ) {
701
728
copiedLoadFlowParametersUuid = loadflowService .duplicateLoadFlowParameters (sourceStudyEntity .getLoadFlowParametersUuid ());
@@ -742,6 +769,9 @@ private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID new
742
769
copiedStateEstimationParametersUuid = stateEstimationService .duplicateStateEstimationParameters (sourceStudyEntity .getStateEstimationParametersUuid ());
743
770
}
744
771
772
+ UserProfileInfos userProfile = getUserProfile (userId );
773
+ UUID diagramGridLayoutId = createGridLayoutFromNadDiagram (userId , userProfile );
774
+
745
775
return studyRepository .save (StudyEntity .builder ()
746
776
.id (newStudyId )
747
777
.loadFlowParametersUuid (copiedLoadFlowParametersUuid )
@@ -756,6 +786,7 @@ private StudyEntity duplicateStudyEntity(StudyEntity sourceStudyEntity, UUID new
756
786
.spreadsheetConfigCollectionUuid (copiedSpreadsheetConfigCollectionUuid )
757
787
.nonEvacuatedEnergyParameters (NonEvacuatedEnergyService .toEntity (nonEvacuatedEnergyParametersInfos ))
758
788
.stateEstimationParametersUuid (copiedStateEstimationParametersUuid )
789
+ .diagramGridLayoutUuid (diagramGridLayoutId )
759
790
.build ());
760
791
}
761
792
0 commit comments