Skip to content

Commit da673de

Browse files
committed
more refacto.
Signed-off-by: AAJELLAL <[email protected]>
1 parent 734df7f commit da673de

File tree

4 files changed

+45
-21
lines changed

4 files changed

+45
-21
lines changed

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

+24-2
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,27 @@ public void invalidateBuild(UUID nodeUuid, UUID rootNetworkUuid, boolean invalid
800800
notificationService.emitNodeBuildStatusUpdated(studyId, changedNodes.stream().distinct().collect(Collectors.toList()), rootNetworkUuid);
801801
}
802802

803+
//oldName: invalidateBuild
804+
// unbuild the node and the children
805+
@Transactional
806+
public void unbuildNodeTree(UUID nodeUuid, UUID rootNetworkUuid, boolean invalidateOnlyChildrenBuildStatus, InvalidateNodeInfos invalidateNodeInfos, boolean deleteVoltageInitResults) {
807+
final List<UUID> changedNodes = new ArrayList<>();
808+
changedNodes.add(nodeUuid);
809+
UUID studyId = self.getStudyUuidForNodeId(nodeUuid);
810+
nodesRepository.findById(nodeUuid).ifPresent(nodeEntity -> {
811+
fillIndexedModificationsInfosToInvalidate(invalidateNodeInfos, nodeUuid, rootNetworkUuid, invalidateOnlyChildrenBuildStatus);
812+
if (rootNetworkService.exists(rootNetworkUuid)) {
813+
if (nodeEntity.getType().equals(NodeType.NETWORK_MODIFICATION)) {
814+
//TODO: to be replaced with : unbuildRootNetworkNode
815+
rootNetworkNodeInfoService.invalidateRootNetworkNodeInfoProper(nodeUuid, rootNetworkUuid, invalidateNodeInfos, invalidateOnlyChildrenBuildStatus, changedNodes, deleteVoltageInitResults);
816+
}
817+
invalidateChildrenBuildStatus(nodeUuid, rootNetworkUuid, changedNodes, invalidateNodeInfos, deleteVoltageInitResults);
818+
}
819+
});
820+
821+
notificationService.emitNodeBuildStatusUpdated(studyId, changedNodes.stream().distinct().toList(), rootNetworkUuid);
822+
}
823+
803824
private void fillIndexedModificationsInfosToInvalidate(InvalidateNodeInfos invalidateNodeInfos, UUID nodeUuid, UUID rootNetworkUuid, boolean invalidateOnlyChildrenBuildStatus) {
804825
// when invalidating node
805826
// we need to invalidate indexed modifications up to it's last built parent, not included
@@ -892,14 +913,14 @@ && hasAnyBuiltChildren(child, rootNetworkUuid, checkedChildren)) {
892913

893914
@Transactional
894915
// old name: invalidateBuildOfNodeOnly
895-
public void unbuild(UUID nodeUuid, UUID rootNetworkUuid, InvalidateNodeInfos invalidateNodeInfos) {
916+
public void unbuild(UUID nodeUuid, UUID rootNetworkUuid, InvalidateNodeInfos invalidateNodeInfos, boolean shouldUnbuildChildrenOnly) {
896917
final List<UUID> changedNodes = new ArrayList<>();
897918
changedNodes.add(nodeUuid);
898919
UUID studyId = self.getStudyUuidForNodeId(nodeUuid);
899920

900921
nodesRepository.findById(nodeUuid).ifPresent(nodeEntity -> {
901922
if (nodeEntity.getType().equals(NodeType.NETWORK_MODIFICATION) && rootNetworkService.exists(rootNetworkUuid)) {
902-
rootNetworkNodeInfoService.unbuildRootNetworkNode(nodeUuid, rootNetworkUuid, invalidateNodeInfos, changedNodes);
923+
rootNetworkNodeInfoService.unbuildRootNetworkNode(nodeUuid, rootNetworkUuid, invalidateNodeInfos, changedNodes, shouldUnbuildChildrenOnly);
903924
}
904925
}
905926
);
@@ -922,6 +943,7 @@ private void invalidateChildrenBuildStatus(UUID nodeUuid, UUID rootNetworkUuid,
922943
boolean deleteVoltageInitResults) {
923944
nodesRepository.findAllByParentNodeIdNode(nodeUuid)
924945
.forEach(child -> {
946+
//TODO: to be replaced with : unbuildRootNetworkNode
925947
rootNetworkNodeInfoService.invalidateRootNetworkNodeInfoProper(child.getIdNode(), rootNetworkUuid, invalidateNodeInfos, false, changedNodes, deleteVoltageInitResults);
926948
invalidateChildrenBuildStatus(child.getIdNode(), rootNetworkUuid, changedNodes, invalidateNodeInfos, deleteVoltageInitResults);
927949
});

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

+11-10
Original file line numberDiff line numberDiff line change
@@ -260,14 +260,15 @@ public void invalidateRootNetworkNodeInfoProper(UUID nodeUuid, UUID rootNetworUu
260260
}
261261

262262
//old name : invalidateRootNetworkNodeInfoProper
263-
public void unbuildRootNetworkNode(UUID nodeUuid, UUID rootNetworUuid, InvalidateNodeInfos invalidateNodeInfos, List<UUID> changedNodes) {
263+
public void unbuildRootNetworkNode(UUID nodeUuid, UUID rootNetworUuid, InvalidateNodeInfos invalidateNodeInfos, List<UUID> changedNodes, boolean shouldUnbuildChildrenOnly) {
264264
RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(nodeUuid, rootNetworUuid).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND));
265265
// No need to invalidate a node with a status different of "BUILT"
266266
if (rootNetworkNodeInfoEntity.getNodeBuildStatus().toDto().isBuilt()) {
267267

268-
fillUnbuildRootNetworkNodeInfos(nodeUuid, rootNetworUuid, invalidateNodeInfos);
269-
invalidateRootNetworkNodeInfoBuildStatus(nodeUuid, rootNetworkNodeInfoEntity, changedNodes);
270-
268+
fillUnbuildRootNetworkNodeInfos(nodeUuid, rootNetworUuid, invalidateNodeInfos, shouldUnbuildChildrenOnly);
269+
if (!shouldUnbuildChildrenOnly) {
270+
invalidateRootNetworkNodeInfoBuildStatus(nodeUuid, rootNetworkNodeInfoEntity, changedNodes);
271+
}
271272
rootNetworkNodeInfoEntity.setLoadFlowResultUuid(null);
272273
rootNetworkNodeInfoEntity.setSecurityAnalysisResultUuid(null);
273274
rootNetworkNodeInfoEntity.setSensitivityAnalysisResultUuid(null);
@@ -332,13 +333,13 @@ private void fillInvalidateNodeInfos(UUID nodeUuid, UUID rootNetworkUuid, Invali
332333
}
333334

334335
//oldName: fillInvalidateNodeInfos
335-
private void fillUnbuildRootNetworkNodeInfos(UUID nodeUuid, UUID rootNetworkUuid, InvalidateNodeInfos invalidateNodeInfos) {
336+
private void fillUnbuildRootNetworkNodeInfos(UUID nodeUuid, UUID rootNetworkUuid, InvalidateNodeInfos invalidateNodeInfos, boolean shouldUnbuildChildrenOnly) {
336337
RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = getRootNetworkNodeInfo(nodeUuid, rootNetworkUuid).orElseThrow(() -> new StudyException(ROOT_NETWORK_NOT_FOUND));
337-
338-
// we want to delete associated report and variant in this case
339-
rootNetworkNodeInfoEntity.getModificationReports().forEach((key, value) -> invalidateNodeInfos.addReportUuid(value));
340-
invalidateNodeInfos.addVariantId(rootNetworkNodeInfoEntity.getVariantId());
341-
338+
if (!shouldUnbuildChildrenOnly) {
339+
// we want to delete associated report and variant in this case
340+
rootNetworkNodeInfoEntity.getModificationReports().forEach((key, value) -> invalidateNodeInfos.addReportUuid(value));
341+
invalidateNodeInfos.addVariantId(rootNetworkNodeInfoEntity.getVariantId());
342+
}
342343
// TODO: we want to delete associated computation reports except for voltage initialization : only if deleteVoltageInitResults is true
343344
rootNetworkNodeInfoEntity.getComputationReports().forEach((key, value) -> {
344345
invalidateNodeInfos.addReportUuid(value);

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

+8-8
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ private void postRootNetworkUpdate(UUID studyUuid, UUID rootNetworkUuid, boolean
386386
rootNetworkService.deleteRootNetworkRequest(rootNetworkModificationRequestEntityOpt.get());
387387
}
388388
UUID rootNodeUuid = networkModificationTreeService.getStudyRootNodeUuid(studyUuid);
389-
invalidateBuild(studyUuid, rootNodeUuid, rootNetworkUuid, false, false, true);
389+
//invalidateBuild(studyUuid, rootNodeUuid, rootNetworkUuid, false, false, true);
390+
unbuildNodeTree(studyUuid, rootNodeUuid, rootNetworkUuid);
390391
notificationService.emitRootNetworkUpdated(studyUuid, rootNetworkUuid);
391392
} else {
392393
notificationService.emitRootNetworksUpdated(studyUuid);
@@ -1601,7 +1602,7 @@ private void assertCanBuildNode(@NonNull UUID studyUuid, @NonNull UUID rootNetwo
16011602
@Transactional
16021603
public void unbuildNode(@NonNull UUID studyUuid, @NonNull UUID nodeUuid, @NonNull UUID rootNetworkUuid) {
16031604
// invalidateBuild(studyUuid, nodeUuid, rootNetworkUuid, false, true, true);
1604-
unbuildStudyNode(studyUuid, nodeUuid, rootNetworkUuid);
1605+
unbuildStudyNode(studyUuid, nodeUuid, rootNetworkUuid, false);
16051606
emitAllComputationStatusChanged(studyUuid, nodeUuid, rootNetworkUuid);
16061607
}
16071608

@@ -1640,7 +1641,7 @@ public void moveStudyNode(UUID studyUuid, UUID nodeToMoveUuid, UUID referenceNod
16401641
} else {
16411642
getStudyRootNetworks(studyUuid).forEach(rootNetworkEntity ->
16421643
//invalidateBuild(studyUuid, nodeToMoveUuid, rootNetworkEntity.getId(), false, true, true)
1643-
unbuildStudyNode(studyUuid, nodeToMoveUuid, rootNetworkEntity.getId())
1644+
unbuildStudyNode(studyUuid, nodeToMoveUuid, rootNetworkEntity.getId(), false)
16441645
);
16451646
}
16461647
notificationService.emitElementUpdated(studyUuid, userId);
@@ -1728,13 +1729,13 @@ public void invalidateBuild(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid,
17281729
}
17291730

17301731
//OldName: invalidateBuild
1731-
public void unbuildStudyNode(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid) {
1732+
public void unbuildStudyNode(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, boolean shouldUnbuildChildrenOnly) {
17321733
AtomicReference<Long> startTime = new AtomicReference<>(null);
17331734
startTime.set(System.nanoTime());
17341735
InvalidateNodeInfos invalidateNodeInfos = new InvalidateNodeInfos();
17351736
invalidateNodeInfos.setNetworkUuid(rootNetworkService.getNetworkUuid(rootNetworkUuid));
17361737

1737-
networkModificationTreeService.unbuild(nodeUuid, rootNetworkUuid, invalidateNodeInfos);
1738+
networkModificationTreeService.unbuild(nodeUuid, rootNetworkUuid, invalidateNodeInfos, shouldUnbuildChildrenOnly);
17381739
deleteNodeResults(invalidateNodeInfos);
17391740

17401741
if (startTime.get() != null) {
@@ -1974,8 +1975,7 @@ public void stashNode(UUID studyUuid, UUID nodeId, boolean stashChildren, String
19741975

19751976
AtomicReference<Long> startTime = new AtomicReference<>(null);
19761977
startTime.set(System.nanoTime());
1977-
boolean invalidateChildrenBuild = stashChildren || networkModificationTreeService.hasModifications(nodeId, false);
1978-
unbuildStashedNode(studyUuid, nodeId, invalidateChildrenBuild);
1978+
unbuildStashedNode(studyUuid, nodeId, stashChildren);
19791979
networkModificationTreeService.doStashNode(nodeId, stashChildren);
19801980

19811981
if (startTime.get() != null) {
@@ -1998,7 +1998,7 @@ public void unbuildStashedNode(UUID studyUuid, UUID nodeId, boolean stashChildre
19981998
});
19991999
} else {
20002000
studyRootNetworks.forEach(rootNetworkEntity -> {
2001-
unbuildStudyNode(studyUuid, nodeId, rootNetworkEntity.getId());
2001+
unbuildStudyNode(studyUuid, nodeId, rootNetworkEntity.getId(), false);
20022002
});
20032003
}
20042004
}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,8 @@ public void invalidateAllNodesBuilds(UUID studyUuid) {
320320
UUID rootNodeUuid = networkModificationTreeService.getStudyRootNodeUuid(studyUuid);
321321
//TODO: to parallelize ?
322322
studyService.getExistingBasicRootNetworkInfos(studyUuid).forEach(rootNetwork ->
323-
studyService.invalidateBuild(studyUuid, rootNodeUuid, rootNetwork.rootNetworkUuid(), false, false, true)
323+
//studyService.invalidateBuild(studyUuid, rootNodeUuid, rootNetwork.rootNetworkUuid(), false, false, true)
324+
studyService.unbuildNodeTree(studyUuid, rootNodeUuid, rootNetwork.rootNetworkUuid())
324325
);
325326

326327
LOGGER.trace("Nodes builds deletion for study {} in : {} seconds", studyUuid, TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - startTime.get()));

0 commit comments

Comments
 (0)