Skip to content

Commit bbe6353

Browse files
authored
create security node and adjust network modification node creation rules (#802)
* create security node and adjust network modification node creation rules --------- Signed-off-by: SOUISSI Maissa (Externe) <[email protected]>
1 parent f69795c commit bbe6353

File tree

3 files changed

+235
-83
lines changed

3 files changed

+235
-83
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,42 @@ public void assertIsRootOrConstructionNode(UUID nodeUuid) {
603603
}
604604
}
605605

606+
private NetworkModificationNodeType getReferenceNodeType(NodeEntity referenceNode) {
607+
return referenceNode.getType().equals(NodeType.ROOT)
608+
? null
609+
: getNetworkModificationNodeInfoEntity(referenceNode.getIdNode()).getNodeType();
610+
}
611+
612+
private boolean isConstructionUnderSecurityNode(NetworkModificationNodeType newNodeType, NetworkModificationNodeType referenceNodeType) {
613+
return newNodeType == NetworkModificationNodeType.CONSTRUCTION &&
614+
referenceNodeType == NetworkModificationNodeType.SECURITY;
615+
}
616+
617+
private boolean isInvalidSecurityNodeInsertion(NetworkModificationNodeType newNodeType, InsertMode insertMode, NetworkModificationNodeType referenceNodeType) {
618+
return newNodeType == NetworkModificationNodeType.SECURITY &&
619+
insertMode != InsertMode.CHILD &&
620+
referenceNodeType != NetworkModificationNodeType.SECURITY;
621+
}
622+
623+
private void assertIsNetworkModificationInsertionAllowed(
624+
NodeEntity nodeEntity,
625+
NetworkModificationNodeType newNodeType,
626+
InsertMode insertMode
627+
) {
628+
NetworkModificationNodeType referenceNodeType = getReferenceNodeType(nodeEntity);
629+
630+
if (isConstructionUnderSecurityNode(newNodeType, referenceNodeType) ||
631+
isInvalidSecurityNodeInsertion(newNodeType, insertMode, referenceNodeType)) {
632+
throw new StudyException(NOT_ALLOWED);
633+
}
634+
}
635+
636+
public void assertIsNetworkModificationNodeCreationAllowed(UUID nodeId, NetworkModificationNode nodeInfo, InsertMode insertMode) {
637+
NetworkModificationNodeType newNodeType = nodeInfo.getNodeType();
638+
NodeEntity nodeEntity = getNodeEntity(nodeId);
639+
assertIsNetworkModificationInsertionAllowed(nodeEntity, newNodeType, insertMode);
640+
}
641+
606642
public boolean isConstructionNode(UUID nodeUuid) {
607643
return getNetworkModificationNodeInfoEntity(nodeUuid).getNodeType() == NetworkModificationNodeType.CONSTRUCTION;
608644
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3253,7 +3253,7 @@ public void createOrUpdateStateEstimationParameters(StudyEntity studyEntity, Str
32533253
@Transactional
32543254
public NetworkModificationNode createNode(UUID studyUuid, UUID nodeId, NetworkModificationNode nodeInfo, InsertMode insertMode, String userId) {
32553255
StudyEntity study = studyRepository.findById(studyUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND));
3256-
networkModificationTreeService.assertIsRootOrConstructionNode(nodeId);
3256+
networkModificationTreeService.assertIsNetworkModificationNodeCreationAllowed(nodeId, nodeInfo, insertMode);
32573257
NetworkModificationNode newNode = networkModificationTreeService.createNode(study, nodeId, nodeInfo, insertMode, userId);
32583258

32593259
UUID parentUuid = networkModificationTreeService.getParentNodeUuid(newNode.getId()).orElse(null);

0 commit comments

Comments
 (0)