@@ -603,6 +603,42 @@ public void assertIsRootOrConstructionNode(UUID nodeUuid) {
603
603
}
604
604
}
605
605
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
+
606
642
public boolean isConstructionNode (UUID nodeUuid ) {
607
643
return getNetworkModificationNodeInfoEntity (nodeUuid ).getNodeType () == NetworkModificationNodeType .CONSTRUCTION ;
608
644
}
0 commit comments