From ca26defd9848199fedc278741c481fc0fb7a727e Mon Sep 17 00:00:00 2001 From: Guillaume Coutable Date: Fri, 20 Mar 2026 16:04:26 +0100 Subject: [PATCH 1/2] [cleanup] Reduce uses of deprecated (for removal) in tests Signed-off-by: Guillaume Coutable --- CHANGELOG.adoc | 3 + .../diagrams/checkers/CheckBorderNode.java | 10 +- .../diagrams/checkers/CheckChildNode.java | 10 +- .../checkers/CheckNodeInCompartment.java | 10 +- .../checkers/DiagramCheckerService.java | 16 +- .../ActionTransitionUsagesTests.java | 9 +- .../compartments/StartActionTests.java | 11 +- .../GVActionDefinitionParameterTests.java | 2 +- ...tateWithReferencedStateFromPartsTests.java | 2 +- ...AddNewFeatureTypingFromPartUsageTests.java | 52 ++--- .../GVAddNewSubsettingFromPartUsageTests.java | 2 +- .../view/GVAnnotatingElementTests.java | 4 +- .../view/GVBorderNodePortCreationTests.java | 2 +- .../general/view/GVEdgeItemUsageTests.java | 4 +- .../view/GVNewStartDoneActionsTests.java | 2 +- .../GVSubNodeActionFlowCreationTests.java | 104 +++++----- .../view/GVSubNodeAnalysisCreationTests.java | 110 +++++------ .../view/GVSubNodeExtensionCreationTests.java | 14 +- ...GVSubNodeInterconnectionCreationTests.java | 140 +++++++------- .../GVSubNodeRequirementCreationTests.java | 180 +++++++++--------- ...GVSubNodeStateTransitionCreationTests.java | 32 ++-- .../view/GVSubNodeStructureCreationTests.java | 146 +++++++------- .../view/GVSubNodeTemporalCreationTests.java | 38 ++-- .../diagrams/testers/ToolTester.java | 14 +- ...eneralViewWithTopNodesTestProjectData.java | 64 ++++++- .../diagrams/NodeCreationTestsService.java | 32 ++-- 26 files changed, 524 insertions(+), 489 deletions(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index d0e6deaaa..136dfad2d 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -60,6 +60,9 @@ And the following methods have been added: **`org.eclipse.syson.tree.explorer.services.api.ISysONExplorerServiceDelegate` has a new `String getTreeItemTooltip(Object self);` method to provide tooltip for tree items in the explorer. ** `org.eclipse.syson.tree.explorer.services.api.ISysONExplorerFragment` has a new `String getTooltip(Object self);` method to provide tooltip for tree items in the explorer. +- [test] Reduce our call to `DiagramNavigator#nodeWithTargetObjectLabel` which has been deprecated for removal. ++ The API of `ToolTester#invokeTool` and `NodeCreationTestsService#createNode` has been updated accordingly to take a `targetObjectId` instead of a `label`. + === Dependency update - [releng] Update to https://github.com/eclipse-sirius/sirius-web[Sirius Web 2026.1.6] diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckBorderNode.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckBorderNode.java index ad1939e8f..51de4ab25 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckBorderNode.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckBorderNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2025 Obeo. + * Copyright (c) 2025, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -35,7 +35,7 @@ public class CheckBorderNode implements IDiagramChecker { private final DiagramComparator diagramComparator; - private String parentLabel; + private String parentTargetObjectId; private String borderNodeDescriptionName; @@ -44,8 +44,8 @@ public CheckBorderNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider this.diagramComparator = diagramComparator; } - public CheckBorderNode withParentLabel(String expectedParentLabel) { - this.parentLabel = expectedParentLabel; + public CheckBorderNode withParentTargetObjectId(String expectedParentTargetObjectId) { + this.parentTargetObjectId = expectedParentTargetObjectId; return this; } @@ -58,7 +58,7 @@ public CheckBorderNode hasBorderNodeDescriptionName(String expectedBorderNodeDes public void check(Diagram previousDiagram, Diagram newDiagram) { List newNodes = this.diagramComparator.newNodes(previousDiagram, newDiagram); DiagramNavigator diagramNavigator = new DiagramNavigator(newDiagram); - var parentNode = diagramNavigator.nodeWithTargetObjectLabel(this.parentLabel).getNode(); + var parentNode = diagramNavigator.nodeWithTargetObjectId(this.parentTargetObjectId).getNode(); assertThat(parentNode.getBorderNodes()).anySatisfy(borderNode -> { String borderNodeDescriptionId = this.diagramDescriptionIdProvider.getNodeDescriptionId(this.borderNodeDescriptionName); assertThat(borderNode).hasDescriptionId(borderNodeDescriptionId); diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckChildNode.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckChildNode.java index ac688ac3d..38281ae99 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckChildNode.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckChildNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024, 2025 Obeo. + * Copyright (c) 2024, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -35,7 +35,7 @@ public class CheckChildNode implements IDiagramChecker { private final DiagramComparator diagramComparator; - private String parentLabel; + private String parentTargetObjectId; private String parentNodeId; @@ -48,8 +48,8 @@ public CheckChildNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider, this.diagramComparator = Objects.requireNonNull(diagramComparator); } - public CheckChildNode withParentLabel(String expectedParentLabel) { - this.parentLabel = expectedParentLabel; + public CheckChildNode withParentTargetObjectId(String expectedParentTargetObjectId) { + this.parentTargetObjectId = expectedParentTargetObjectId; return this; } @@ -76,7 +76,7 @@ public void check(Diagram previousDiagram, Diagram newDiagram) { if (this.parentNodeId != null) { parentNode = diagramNavigator.nodeWithId(this.parentNodeId).getNode(); } else { - parentNode = diagramNavigator.nodeWithTargetObjectLabel(this.parentLabel).getNode(); + parentNode = diagramNavigator.nodeWithTargetObjectId(this.parentTargetObjectId).getNode(); } assertThat(parentNode).isNotNull(); assertThat(parentNode.getChildNodes()).anySatisfy(childNode -> { diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java index 885e3e9f0..25840149a 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024, 2025 Obeo. + * Copyright (c) 2024, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -36,7 +36,7 @@ public class CheckNodeInCompartment implements IDiagramChecker { private final DiagramComparator diagramComparator; - private String parentLabel; + private String targetObjectId; private String compartmentName; @@ -51,8 +51,8 @@ public CheckNodeInCompartment(DiagramDescriptionIdProvider diagramDescriptionIdP this.diagramComparator = diagramComparator; } - public CheckNodeInCompartment withParentLabel(String expectedParentLabel) { - this.parentLabel = expectedParentLabel; + public CheckNodeInCompartment withTargetObjectId(String expectedTargetObjectId) { + this.targetObjectId = expectedTargetObjectId; return this; } @@ -80,7 +80,7 @@ public CheckNodeInCompartment isRevealed() { public void check(Diagram previousDiagram, Diagram newDiagram) { List newNodes = this.diagramComparator.newNodes(previousDiagram, newDiagram); DiagramNavigator diagramNavigator = new DiagramNavigator(newDiagram); - var compartmentNode = diagramNavigator.nodeWithTargetObjectLabel(this.parentLabel) + var compartmentNode = diagramNavigator.nodeWithTargetObjectId(this.targetObjectId) .childNodeWithLabel(this.compartmentName) .getNode(); assertThat(compartmentNode.getChildNodes()).anySatisfy(childNode -> { diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/DiagramCheckerService.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/DiagramCheckerService.java index df7c127b8..f2a0c9d03 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/DiagramCheckerService.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/DiagramCheckerService.java @@ -53,8 +53,8 @@ public DiagramCheckerService(DiagramComparator diagramComparator, IDescriptionNa * the reference to the previous diagram state * @param diagramDescriptionIdProvider * the provider for diagram description IDs - * @param parentLabel - * the label of the parent node + * @param parentTargetObjectId + * the parent target object ID * @param childEClass * the EClass of the expected child node * @param compartmentCount @@ -65,7 +65,7 @@ public DiagramCheckerService(DiagramComparator diagramComparator, IDescriptionNa * the expected total number of new border nodes * @return a consumer that performs the graphical check */ - public Consumer childNodeGraphicalChecker(AtomicReference previousDiagram, DiagramDescriptionIdProvider diagramDescriptionIdProvider, String parentLabel, EClass childEClass, + public Consumer childNodeGraphicalChecker(AtomicReference previousDiagram, DiagramDescriptionIdProvider diagramDescriptionIdProvider, String parentTargetObjectId, EClass childEClass, int compartmentCount, int newNodesCount, int newBorderNodesCount) { return assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -76,7 +76,7 @@ public Consumer childNodeGraphicalChecker(AtomicReference previ String newNodeDescriptionName = this.descriptionNameGenerator.getNodeName(childEClass); new CheckChildNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(parentTargetObjectId) .hasNodeDescriptionName(newNodeDescriptionName) .hasCompartmentCount(compartmentCount) .check(previousDiagram.get(), newDiagram); @@ -90,8 +90,8 @@ public Consumer childNodeGraphicalChecker(AtomicReference previ * the reference to the previous diagram state * @param diagramDescriptionIdProvider * the provider for diagram description IDs - * @param parentLabel - * the label of the parent node + * @param parentTargetObjectId + * the parent target object ID * @param parentEClass * the EClass of the parent node * @param containmentReference @@ -102,7 +102,7 @@ public Consumer childNodeGraphicalChecker(AtomicReference previ * check only new nodes and edges that are visible on the diagram * @return a consumer that performs the graphical check */ - public Consumer compartmentNodeGraphicalChecker(AtomicReference previousDiagram, DiagramDescriptionIdProvider diagramDescriptionIdProvider, String parentLabel, + public Consumer compartmentNodeGraphicalChecker(AtomicReference previousDiagram, DiagramDescriptionIdProvider diagramDescriptionIdProvider, String parentTargetObjectId, EClass parentEClass, EReference containmentReference, String compartmentName, boolean onlyNewVisibleNodesAndEdges) { return assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -112,7 +112,7 @@ public Consumer compartmentNodeGraphicalChecker(AtomicReference String newNodeDescriptionName = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(parentTargetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(newNodeDescriptionName) .hasCompartmentCount(0) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/ActionTransitionUsagesTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/ActionTransitionUsagesTests.java index 79260cd54..7bc9e6aaa 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/ActionTransitionUsagesTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/ActionTransitionUsagesTests.java @@ -30,6 +30,7 @@ import org.eclipse.sirius.components.view.emf.diagram.IDiagramIdProvider; import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState; import org.eclipse.syson.AbstractIntegrationTests; +import org.eclipse.syson.GivenSysONServer; import org.eclipse.syson.application.controllers.diagrams.testers.ToolTester; import org.eclipse.syson.application.data.ActionTransitionUsagesProjectData; import org.eclipse.syson.services.diagrams.DiagramDescriptionIdProvider; @@ -47,8 +48,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.jdbc.Sql; -import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.test.context.transaction.TestTransaction; import org.springframework.transaction.annotation.Transactional; @@ -114,10 +113,8 @@ public void tearDown() { } } - @Sql(scripts = { ActionTransitionUsagesProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, - config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) - @Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) @DisplayName("GIVEN a model with TransitionUsage ending on 'start' or 'done' ActionUsage, WHEN adding existing nested element on the parent of the TransitionUsage, THEN the 'start' and 'done' node should be added to the ActionFlow compartment.") + @GivenSysONServer({ ActionTransitionUsagesProjectData.SCRIPT_PATH }) @Test public void addExistingNestedElementsOnActionUsage() { TestTransaction.flagForCommit(); @@ -126,7 +123,7 @@ public void addExistingNestedElementsOnActionUsage() { "Add existing nested elements"); assertThat(toolId).as("The tool 'Add existing elements' should exist on Action Usage").isNotNull(); - this.verifier.then(() -> this.nodeCreationTester.invokeTool(ActionTransitionUsagesProjectData.EDITING_CONTEXT_ID, this.diagram, "a0", toolId)); + this.verifier.then(() -> this.nodeCreationTester.invokeTool(ActionTransitionUsagesProjectData.EDITING_CONTEXT_ID, this.diagram, ActionTransitionUsagesProjectData.SemanticIds.A0_ID, toolId)); Consumer updatedDiagramConsumer = payload -> Optional.of(payload) .map(DiagramRefreshedEventPayload::diagram) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/StartActionTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/StartActionTests.java index 641ffd9fb..0420d9ae0 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/StartActionTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/StartActionTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2025 Obeo. + * Copyright (c) 2025, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -28,6 +28,7 @@ import org.eclipse.sirius.components.view.emf.diagram.IDiagramIdProvider; import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState; import org.eclipse.syson.AbstractIntegrationTests; +import org.eclipse.syson.GivenSysONServer; import org.eclipse.syson.application.controllers.diagrams.testers.ToolTester; import org.eclipse.syson.application.data.GeneralViewWithTopNodesTestProjectData; import org.eclipse.syson.services.diagrams.DiagramDescriptionIdProvider; @@ -43,8 +44,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.jdbc.Sql; -import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.transaction.annotation.Transactional; import reactor.core.publisher.Flux; @@ -92,9 +91,7 @@ public void beforeEach() { } @DisplayName("GIVEN an ActionUsage action1, WHEN using the 'New Start Action' tool is executed on action1, THEN the action flow compartment of action1 is revealed.") - @Sql(scripts = { GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, - config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) - @Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) + @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void addStartNode() { var flux = this.givenSubscriptionToDiagram(); @@ -117,7 +114,7 @@ public void addStartNode() { }); Runnable invokeTool = () -> { - this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "action", toolId); + this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID, toolId); }; Consumer updatedDiagramConsumer = assertRefreshedDiagramThat(diag -> { diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVActionDefinitionParameterTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVActionDefinitionParameterTests.java index 60f9c3d60..cf6a72c73 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVActionDefinitionParameterTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVActionDefinitionParameterTests.java @@ -120,7 +120,7 @@ private void checkItemParameterOnActionDefinition() { Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); - Runnable newCreationTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "UseCaseDefinition", creationToolId, variables); + Runnable newCreationTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_DEFINITION_ID, creationToolId, variables); Consumer updatedDiagramConsumer = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewExhibitStateWithReferencedStateFromPartsTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewExhibitStateWithReferencedStateFromPartsTests.java index f02a97769..63ff068c6 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewExhibitStateWithReferencedStateFromPartsTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewExhibitStateWithReferencedStateFromPartsTests.java @@ -127,7 +127,7 @@ public void testApplyNewExhibitStateWithReferencedStateToolFromPartUsage() { String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage()), "New Exhibit State with referenced State"); assertThat(creationToolId).as("The tool 'New Exhibit State with referenced State' should exist on a PartUsage").isNotNull(); - Runnable invokeTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "part", creationToolId, + Runnable invokeTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID, creationToolId, List.of(new ToolVariable("selectedObject", GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_USAGE_ID, ToolVariableType.OBJECT_ID))); String[] newExhibitStateId = new String[1]; diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewFeatureTypingFromPartUsageTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewFeatureTypingFromPartUsageTests.java index 44d4dd76e..d9a577b4b 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewFeatureTypingFromPartUsageTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewFeatureTypingFromPartUsageTests.java @@ -33,10 +33,9 @@ import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState; import org.eclipse.syson.AbstractIntegrationTests; import org.eclipse.syson.GivenSysONServer; -import org.eclipse.syson.SysONTestsProperties; import org.eclipse.syson.application.controllers.diagrams.checkers.CheckDiagramElementCount; import org.eclipse.syson.application.controllers.diagrams.testers.ToolTester; -import org.eclipse.syson.application.data.GeneralViewEmptyTestProjectData; +import org.eclipse.syson.application.data.GeneralViewWithTopNodesTestProjectData; import org.eclipse.syson.services.SemanticRunnableFactory; import org.eclipse.syson.services.UtilService; import org.eclipse.syson.services.diagrams.DiagramComparator; @@ -69,7 +68,7 @@ * @author Jerome Gout */ @Transactional -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = { SysONTestsProperties.NO_DEFAULT_LIBRARIES_PROPERTY }) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class GVAddNewFeatureTypingFromPartUsageTests extends AbstractIntegrationTests { @Autowired @@ -101,7 +100,7 @@ public class GVAddNewFeatureTypingFromPartUsageTests extends AbstractIntegration private final UtilService utilService = new UtilService(); private Flux givenSubscriptionToDiagram() { - var diagramEventInput = new DiagramEventInput(UUID.randomUUID(), GeneralViewEmptyTestProjectData.EDITING_CONTEXT, GeneralViewEmptyTestProjectData.GraphicalIds.DIAGRAM_ID); + var diagramEventInput = new DiagramEventInput(UUID.randomUUID(), GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, GeneralViewWithTopNodesTestProjectData.GraphicalIds.DIAGRAM_ID); return this.givenDiagramSubscription.subscribe(diagramEventInput); } @@ -112,35 +111,30 @@ public void setUp() { private static Stream partUsageNodeParameters() { return Stream.of( - Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), "part1", 11, 0), - Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), "allocation1", 6, 0), - Arguments.of(SysmlPackage.eINSTANCE.getInterfaceUsage(), "interface1", 17, 4)); + Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID, "part", 11, 0), + Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_USAGE_ID, "allocation", 6, 0), + Arguments.of(SysmlPackage.eINSTANCE.getInterfaceUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_USAGE_ID, "interface", 17, 4)); } @DisplayName("GIVEN a SysML Project, WHEN the New Feature Typing tool is requested on a PartUsage, THEN a new PartDefinition node and a FeatureTyping edge are created") - @GivenSysONServer({ GeneralViewEmptyTestProjectData.SCRIPT_PATH }) + @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @ParameterizedTest @MethodSource("partUsageNodeParameters") - public void testApplyTool(EClass eClass, String nodeName, int definitionCompartmentCount, int newBorderNodes) { + public void testApplyTool(EClass eClass, String targetObjectId, String nodeName, int definitionCompartmentCount, int newBorderNodes) { var flux = this.givenSubscriptionToDiagram(); - var diagramDescription = this.givenDiagramDescription.getDiagramDescription(GeneralViewEmptyTestProjectData.EDITING_CONTEXT, + var diagramDescription = this.givenDiagramDescription.getDiagramDescription(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); AtomicReference diagram = new AtomicReference<>(); Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); - String creationToolId = diagramDescriptionIdProvider.getDiagramCreationToolId(this.descriptionNameGenerator.getCreationToolName(eClass)); - Runnable invokeToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewEmptyTestProjectData.EDITING_CONTEXT, diagram, creationToolId); - - AtomicReference diagramAfterAddingElement = new AtomicReference<>(); - Consumer diagramAfterAddingContentConsumer = assertRefreshedDiagramThat(diagramAfterAddingElement::set); - var newName = this.getNewName(nodeName); - Runnable renameRunnable = () -> this.nodeCreationTester.renameRootNode(GeneralViewEmptyTestProjectData.EDITING_CONTEXT, - diagramAfterAddingElement, + Runnable renameRunnable = () -> this.nodeCreationTester.renameRootNode(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, + diagram, nodeName, + targetObjectId, newName); AtomicReference diagramAfterRenameElement = new AtomicReference<>(); @@ -149,14 +143,14 @@ public void testApplyTool(EClass eClass, String nodeName, int definitionCompartm String toolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(eClass), "New Feature Typing"); assertThat(toolId).as("The tool 'New Feature Typing' should exist on a ").isNotNull(); - Runnable invokeToolRunnable2 = () -> this.nodeCreationTester.invokeTool(GeneralViewEmptyTestProjectData.EDITING_CONTEXT, + Runnable invokeToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagramAfterRenameElement, - newName, + targetObjectId, toolId); - Runnable semanticChecker = this.semanticRunnableFactory.createRunnable(GeneralViewEmptyTestProjectData.EDITING_CONTEXT, + Runnable semanticChecker = this.semanticRunnableFactory.createRunnable(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, (editingContext, executeEditingContextFunctionInput) -> { - Object semanticRootObject = this.objectSearchService.getObject(editingContext, GeneralViewEmptyTestProjectData.SemanticIds.PACKAGE_1_ID).orElse(null); + Object semanticRootObject = this.objectSearchService.getObject(editingContext, GeneralViewWithTopNodesTestProjectData.SemanticIds.PACKAGE_1_ID).orElse(null); assertThat(semanticRootObject).isInstanceOf(Element.class); Element semanticRootElement = (Element) semanticRootObject; assertThat(semanticRootElement).isNotNull(); @@ -165,18 +159,14 @@ public void testApplyTool(EClass eClass, String nodeName, int definitionCompartm // should find the PartUsage var partUsage = semanticRootElement.getOwnedElement().stream().filter(eClass::isInstance).filter(elt -> Objects.equals(newName, elt.getDeclaredName())).findFirst(); assertThat(partUsage).isNotEmpty(); - // should find the PartDefinition - var partDefinition = semanticRootElement.getOwnedElement().stream().filter(definitionEClass::isInstance).findFirst(); - assertThat(partDefinition).isNotEmpty(); // PartUsage should contain a FeatureTyping relationship pointing to the PartDefinition (through its // type property) assertThat(partUsage.get().getOwnedRelationship()).isNotEmpty(); var featureTypingRelationship = partUsage.get().getOwnedRelationship().stream() .filter(FeatureTyping.class::isInstance) .map(FeatureTyping.class::cast) - .findFirst(); - assertThat(featureTypingRelationship).isNotEmpty(); - assertThat(featureTypingRelationship.get().getType()).isEqualTo(partDefinition.get()); + .toList(); + assertThat(featureTypingRelationship).anyMatch(featureTyping -> semanticRootElement.getOwnedElement().contains(featureTyping.getType())); return new ExecuteEditingContextFunctionSuccessPayload(executeEditingContextFunctionInput.id(), true); }); @@ -186,15 +176,13 @@ public void testApplyTool(EClass eClass, String nodeName, int definitionCompartm .hasNewNodeCount(1 + definitionCompartmentCount) .hasNewEdgeCount(1) .hasNewBorderNodeCount(newBorderNodes) - .check(diagramAfterAddingElement.get(), newDiagram)); + .check(diagram.get(), newDiagram)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) - .then(invokeToolRunnable) - .consumeNextWith(diagramAfterAddingContentConsumer) .then(renameRunnable) .consumeNextWith(diagramAfterRenameContentConsumer) - .then(invokeToolRunnable2) + .then(invokeToolRunnable) .then(semanticChecker) .consumeNextWith(diagramAfterRenameContentConsumer2) .thenCancel() diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewSubsettingFromPartUsageTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewSubsettingFromPartUsageTests.java index 2cdfb1c3b..5badec935 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewSubsettingFromPartUsageTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAddNewSubsettingFromPartUsageTests.java @@ -105,7 +105,7 @@ public void testApplyTool() { String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage()), "New Subsetting"); assertThat(creationToolId).as("The tool 'New Subsetting' should exist on a PartUsage").isNotNull(); - Runnable nodeCreationRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "part", creationToolId); + Runnable nodeCreationRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID, creationToolId); Consumer diagramAfterNodeCreationConsumer = assertRefreshedDiagramThat(newDiagram -> new CheckDiagramElementCount(this.diagramComparator) // we should have 1 more node (the new PartUsage) and one more edge (the new subsetting) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAnnotatingElementTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAnnotatingElementTests.java index 838bd930e..518cf9f3a 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAnnotatingElementTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVAnnotatingElementTests.java @@ -143,9 +143,9 @@ public void createTextualRepresentation() { AtomicReference diagram = new AtomicReference<>(); Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); - String parentLabel = "part"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID; - Runnable invokeCreationToolRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, SysmlPackage.eINSTANCE.getPartUsage(), parentLabel, + Runnable invokeCreationToolRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, SysmlPackage.eINSTANCE.getPartUsage(), targetObjectId, this.descriptionNameGenerator.getCreationToolName(SysmlPackage.eINSTANCE.getTextualRepresentation())); Consumer diagramCheckerConsumer = assertRefreshedDiagramThat(newDiagram -> { diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVBorderNodePortCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVBorderNodePortCreationTests.java index 5b2b2303d..050e9b607 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVBorderNodePortCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVBorderNodePortCreationTests.java @@ -105,7 +105,7 @@ public void testApplyTool() { assertThat(creationToolId).as("The tool 'New Port' should exist on a PartUsage").isNotNull(); Runnable nodeCreationRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, - "part", + GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID, creationToolId); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> new CheckDiagramElementCount(this.diagramComparator) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVEdgeItemUsageTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVEdgeItemUsageTests.java index b8adf1bf7..841cf8691 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVEdgeItemUsageTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVEdgeItemUsageTests.java @@ -165,7 +165,7 @@ private void checkItemParameterOnActionUsage(String kind) { var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getActionUsage()), "New Item " + kind); - Runnable creationToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "action", creationToolId); + Runnable creationToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID, creationToolId); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -226,7 +226,7 @@ private void checkItemParameterOnActionDefinition(String kind) { var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getActionDefinition()), "New Item " + kind); - Runnable creationToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "ActionDefinition", creationToolId); + Runnable creationToolRunnable = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID, creationToolId); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVNewStartDoneActionsTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVNewStartDoneActionsTests.java index 797854a23..9a070f928 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVNewStartDoneActionsTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVNewStartDoneActionsTests.java @@ -137,7 +137,7 @@ public void checkNewStartAction(String toolName) { assertThat(payload).isInstanceOf(ExecuteEditingContextFunctionSuccessPayload.class); }; - Runnable invokeCreationTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, "ActionDefinition", creationToolId); + Runnable invokeCreationTool = () -> this.nodeCreationTester.invokeTool(GeneralViewWithTopNodesTestProjectData.EDITING_CONTEXT_ID, diagram, GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID, creationToolId); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeActionFlowCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeActionFlowCreationTests.java index b29ff121f..4ca104286 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeActionFlowCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeActionFlowCreationTests.java @@ -236,9 +236,9 @@ public void createAcceptActionUsagePayload(EClass eClass) { var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAcceptActionUsage(); - String parentLabel = "acceptAction"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACCEPT_ACTION_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, this.descriptionNameGenerator.getCreationToolName("New {0} as Payload", eClass)); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -248,7 +248,7 @@ public void createAcceptActionUsagePayload(EClass eClass) { .check(diagram.get(), newDiagram); DiagramNavigator diagramNavigator = new DiagramNavigator(newDiagram); - Node updatedNode = diagramNavigator.nodeWithTargetObjectLabel(parentLabel).getNode(); + Node updatedNode = diagramNavigator.nodeWithTargetObjectId(targetObjectId).getNode(); assertThat(updatedNode).as("The updated node should exist").isNotNull(); assertThat(updatedNode.getInsideLabel()).as("The updated node label should exist").isNotNull(); assertThat(updatedNode.getInsideLabel().getText()) @@ -261,7 +261,7 @@ public void createAcceptActionUsagePayload(EClass eClass) { assertThat(semanticRootObject).isInstanceOf(Element.class); Element semanticRootElement = (Element) semanticRootObject; Optional optParentElement = EMFUtils.allContainedObjectOfType(semanticRootElement, Element.class) - .filter(element -> Objects.equals(element.getName(), parentLabel)) + .filter(element -> Objects.equals(element.getName(), "acceptAction")) .findFirst(); assertThat(optParentElement).isPresent(); assertThat(optParentElement.get()).isInstanceOf(AcceptActionUsage.class); @@ -295,13 +295,13 @@ public void createAcceptActionUsageReceiver() { var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAcceptActionUsage(); - String parentLabel = "acceptAction"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACCEPT_ACTION_USAGE_ID; EClass eClass = SysmlPackage.eINSTANCE.getPortUsage(); AtomicReference diagram = new AtomicReference<>(); Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, this.descriptionNameGenerator.getCreationToolName("New {0} as Receiver", eClass)); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -311,7 +311,7 @@ public void createAcceptActionUsageReceiver() { .check(diagram.get(), newDiagram); DiagramNavigator diagramNavigator = new DiagramNavigator(newDiagram); - Node updatedNode = diagramNavigator.nodeWithTargetObjectLabel(parentLabel).getNode(); + Node updatedNode = diagramNavigator.nodeWithTargetObjectId(targetObjectId).getNode(); assertThat(updatedNode).as("The updated node should exist").isNotNull(); assertThat(updatedNode.getInsideLabel()).as("The updated node label should exist").isNotNull(); assertThat(updatedNode.getInsideLabel().getText()) @@ -324,7 +324,7 @@ public void createAcceptActionUsageReceiver() { assertThat(semanticRootObject).isInstanceOf(Element.class); Element semanticRootElement = (Element) semanticRootObject; Optional optParentElement = EMFUtils.allContainedObjectOfType(semanticRootElement, Element.class) - .filter(element -> Objects.equals(element.getName(), parentLabel)) + .filter(element -> Objects.equals(element.getName(), "acceptAction")) .findFirst(); assertThat(optParentElement).isPresent(); assertThat(optParentElement.get()).isInstanceOf(AcceptActionUsage.class); @@ -362,13 +362,13 @@ public void createActionUsageSiblingNodes(EClass childEClass, EReference contain var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -393,8 +393,8 @@ public void createActionUsageListChildNodes(EClass childEClass, String compartme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -403,13 +403,13 @@ public void createActionUsageListChildNodes(EClass childEClass, String compartme .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -434,8 +434,8 @@ public void createActionUsageBorderAndChildNodes(EClass childEClass, String comp var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, toolName); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, toolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -445,18 +445,18 @@ public void createActionUsageBorderAndChildNodes(EClass childEClass, String comp .check(initialDiagram, newDiagram); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -481,8 +481,8 @@ public void createActionDefinitionBorderAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition(); - String parentLabel = "ActionDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, toolName); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, toolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -492,18 +492,18 @@ public void createActionDefinitionBorderAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ActionDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -528,14 +528,14 @@ public void createActionUsageFreeFormChildNodes(EClass childEClass, EReference c var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; String creationToolName = this.descriptionNameGenerator.getCreationToolName(childEClass); if (creationToolName.endsWith(" Node")) { creationToolName = creationToolName.substring(0, creationToolName.length() - 5); } - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); int createdNodesExpectedCount = 1 + compartmentCount; @@ -546,14 +546,14 @@ public void createActionUsageFreeFormChildNodes(EClass childEClass, EReference c String nodeName = this.getActionFlowNodeName(childEClass); String freeFormNodeDescription = this.descriptionNameGenerator.getNodeName(nodeName); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("action flow") .hasNodeDescriptionName(freeFormNodeDescription) .hasCompartmentCount(compartmentCountInNewChild) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -579,9 +579,9 @@ public void createActionUsageSiblingAndChildNodes(EClass childEClass, String com var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -590,13 +590,13 @@ public void createActionUsageSiblingAndChildNodes(EClass childEClass, String com .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -621,13 +621,13 @@ public void createReferencingPerformActionUsageInActionUsage() { EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); EClass childEClass = SysmlPackage.eINSTANCE.getPerformActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; String creationToolName = "New Perform"; EReference containmentReference = SysmlPackage.eINSTANCE.getUsage_NestedAction(); List variables = new ArrayList<>(); variables.add(new ToolVariable("selectedObject", GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID, ToolVariableType.OBJECT_ID)); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName, variables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName, variables); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -638,13 +638,13 @@ public void createReferencingPerformActionUsageInActionUsage() { .check(initialDiagram, newDiagram, true); String freeFormNodeDescription = this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPerformActionUsage()); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("action flow") .hasNodeDescriptionName(freeFormNodeDescription) .hasCompartmentCount(5) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -669,11 +669,11 @@ public void createPerformActionUsageInActionUsage() { EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); EClass childEClass = SysmlPackage.eINSTANCE.getPerformActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; String creationToolName = "New Perform action"; EReference containmentReference = SysmlPackage.eINSTANCE.getUsage_NestedAction(); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); int createdNodesExpectedCount = 13; @@ -683,13 +683,13 @@ public void createPerformActionUsageInActionUsage() { .check(initialDiagram, newDiagram); String freeFormNodeDescription = this.descriptionNameGenerator.getNodeName(childEClass); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("action flow") .hasNodeDescriptionName(freeFormNodeDescription) .hasCompartmentCount(5) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -714,10 +714,10 @@ public void createActionDefinitionSiblingNodes(EClass childEClass, EReference co var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition(); - String parentLabel = "ActionDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, 2); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ActionDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -742,14 +742,14 @@ public void createActionDefinitionFreeFormChildNodes(EClass childEClass, ERefere var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionDefinition(); - String parentLabel = "ActionDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_DEFINITION_ID; String creationToolName = this.descriptionNameGenerator.getCreationToolName(childEClass); if (creationToolName.endsWith(" Node")) { creationToolName = creationToolName.substring(0, creationToolName.length() - 5); } - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -761,14 +761,14 @@ public void createActionDefinitionFreeFormChildNodes(EClass childEClass, ERefere String nodeName = this.getActionFlowNodeName(childEClass); String freeFormNodeDescription = this.descriptionNameGenerator.getNodeName(nodeName); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("action flow") .hasNodeDescriptionName(freeFormNodeDescription) .hasCompartmentCount(compartmentCountInNewChild) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ActionDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -794,9 +794,9 @@ public void createActionDefinitionSiblingAndChildNodes(EClass childEClass, Strin var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getActionUsage(); - String parentLabel = ACTION; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -805,13 +805,13 @@ public void createActionDefinitionSiblingAndChildNodes(EClass childEClass, Strin .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(ACTION, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeAnalysisCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeAnalysisCreationTests.java index 93b8ed404..9fe8cb871 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeAnalysisCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeAnalysisCreationTests.java @@ -71,8 +71,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.jdbc.Sql; -import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.transaction.annotation.Transactional; import reactor.core.publisher.Flux; @@ -205,10 +203,10 @@ public void createCaseUsageSiblingNodes(EClass childEClass, EReference containme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getCaseUsage(); - String parentLabel = CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -233,8 +231,8 @@ public void createCaseUsageChildNodes(EClass childEClass, String compartmentName var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getCaseUsage(); - String parentLabel = CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -243,13 +241,13 @@ public void createCaseUsageChildNodes(EClass childEClass, String compartmentName .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -260,9 +258,7 @@ public void createCaseUsageChildNodes(EClass childEClass, String compartmentName .verify(Duration.ofSeconds(10)); } - @Sql(scripts = { GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, - config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) - @Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) + @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @ParameterizedTest @MethodSource("caseUsageBorderAndChildNodeParameters") public void createCaseUsageBorderAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, EClass borderNodeType) { @@ -276,8 +272,8 @@ public void createCaseUsageBorderAndChildNodes(EClass childEClass, String compar var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getCaseUsage(); - String parentLabel = CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -287,18 +283,18 @@ public void createCaseUsageBorderAndChildNodes(EClass childEClass, String compar .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -323,10 +319,10 @@ public void createCaseDefinitionChildNodes(EClass childEClass, String compartmen var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getCaseDefinition(); - String parentLabel = "CaseDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("CaseDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -351,10 +347,10 @@ public void createUseCaseUsageSiblingNodes(EClass childEClass, EReference contai var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getUseCaseUsage(); - String parentLabel = USE_CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(USE_CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -379,8 +375,8 @@ public void createUseCaseUsageChildNodes(EClass childEClass, String compartmentN var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getUseCaseUsage(); - String parentLabel = USE_CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -389,13 +385,13 @@ public void createUseCaseUsageChildNodes(EClass childEClass, String compartmentN .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(USE_CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -406,9 +402,7 @@ public void createUseCaseUsageChildNodes(EClass childEClass, String compartmentN .verify(Duration.ofSeconds(10)); } - @Sql(scripts = { GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, - config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) - @Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) + @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @ParameterizedTest @MethodSource("useCaseUsageBorderAndChildNodeParameters") public void createUseCaseUsageBorderAndChildNodes(EClass childEClass, String compartmentName, EReference containmentReference, EClass borderNodeType) { @@ -422,8 +416,8 @@ public void createUseCaseUsageBorderAndChildNodes(EClass childEClass, String com var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getUseCaseUsage(); - String parentLabel = USE_CASE; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -433,18 +427,18 @@ public void createUseCaseUsageBorderAndChildNodes(EClass childEClass, String com .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(USE_CASE, containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -469,10 +463,10 @@ public void createUseCaseDefinitionChildNodes(EClass childEClass, String compart var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getUseCaseDefinition(); - String parentLabel = "UseCaseDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("UseCaseDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -486,52 +480,52 @@ public void createUseCaseDefinitionChildNodes(EClass childEClass, String compart @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewUsageSubjectInCaseUsage() { - this.createSubjectWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), CASE); + this.createSubjectWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID, CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewUsageSubjectInUseCaseUsage() { - this.createSubjectWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), USE_CASE); + this.createSubjectWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID, USE_CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewDefinitionSubjectInCaseUsage() { - this.createSubjectWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), CASE); + this.createSubjectWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID, CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewDefinitionSubjectInUseCaseUsage() { - this.createSubjectWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), USE_CASE); + this.createSubjectWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID, USE_CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorWithSubsettingInCaseUsage() { - this.createActorWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), CASE); + this.createActorWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID, CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorWithSubsettingInUseCaseUsage() { - this.createActorWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), USE_CASE); + this.createActorWithSubsettingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID, USE_CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorWithFeatureTypingInCaseUsage() { - this.createActorWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), CASE); + this.createActorWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CASE_USAGE_ID, CASE); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorWithFeatureTypingInUseCaseUsage() { - this.createActorWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), USE_CASE); + this.createActorWithFeatureTypingInCaseUsage(SysmlPackage.eINSTANCE.getUseCaseUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.USE_CASE_USAGE_ID, USE_CASE); } - private void createSubjectWithSubsettingInCaseUsage(EClass caseUsageSubclass, String parentLabel) { + private void createSubjectWithSubsettingInCaseUsage(EClass caseUsageSubclass, String targetObjectId, String parentLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -548,7 +542,7 @@ private void createSubjectWithSubsettingInCaseUsage(EClass caseUsageSubclass, St String existingPartId = "2c5fe5a5-18fe-40f4-ab66-a2d91ab7df6a"; variables.add(new ToolVariable("selectedObject", existingPartId, ToolVariableType.OBJECT_ID)); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, parentLabel, creationToolName, variables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, targetObjectId, creationToolName, variables); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -565,7 +559,7 @@ private void createSubjectWithSubsettingInCaseUsage(EClass caseUsageSubclass, St .check(initialDiagram, newDiagram, true); String listNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(SysmlPackage.eINSTANCE.getCaseUsage(), containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("subject") .hasNodeDescriptionName(listNodeDescription) .hasCompartmentCount(0) @@ -598,7 +592,7 @@ private void createSubjectWithSubsettingInCaseUsage(EClass caseUsageSubclass, St .verify(Duration.ofSeconds(10)); } - private void createSubjectWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, String parentLabel) { + private void createSubjectWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, String targetObjectId, String parentLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -615,7 +609,7 @@ private void createSubjectWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, String existingPartDefId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; variables.add(new ToolVariable("selectedObject", existingPartDefId, ToolVariableType.OBJECT_ID)); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, parentLabel, creationToolName, variables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, targetObjectId, creationToolName, variables); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -632,7 +626,7 @@ private void createSubjectWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, .check(initialDiagram, newDiagram, true); String listNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(SysmlPackage.eINSTANCE.getCaseUsage(), containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("subject") .hasNodeDescriptionName(listNodeDescription) .hasCompartmentCount(0) @@ -665,7 +659,7 @@ private void createSubjectWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, .verify(Duration.ofSeconds(10)); } - private void createActorWithSubsettingInCaseUsage(EClass caseUsageSubclass, String parentLabel) { + private void createActorWithSubsettingInCaseUsage(EClass caseUsageSubclass, String targetObjectId, String parentLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -682,7 +676,7 @@ private void createActorWithSubsettingInCaseUsage(EClass caseUsageSubclass, Stri String existingPartId = "2c5fe5a5-18fe-40f4-ab66-a2d91ab7df6a"; variables.add(new ToolVariable("selectedObject", existingPartId, ToolVariableType.OBJECT_ID)); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, parentLabel, creationToolName, variables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, targetObjectId, creationToolName, variables); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -719,7 +713,7 @@ private void createActorWithSubsettingInCaseUsage(EClass caseUsageSubclass, Stri .verify(Duration.ofSeconds(10)); } - private void createActorWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, String parentLabel) { + private void createActorWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, String targetObjectId, String parentLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -736,7 +730,7 @@ private void createActorWithFeatureTypingInCaseUsage(EClass caseUsageSubclass, S String existingPartDefId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; variables.add(new ToolVariable("selectedObject", existingPartDefId, ToolVariableType.OBJECT_ID)); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, parentLabel, creationToolName, variables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, caseUsageSubclass, targetObjectId, creationToolName, variables); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeExtensionCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeExtensionCreationTests.java index aa5f0ca3a..66318ee37 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeExtensionCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeExtensionCreationTests.java @@ -145,10 +145,10 @@ public void createMetadataDefinitionSiblingNodes(EClass childEClass, EReference var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getMetadataDefinition(); - String parentLabel = "MetadataDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.METADATA_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("MetadataDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -173,8 +173,8 @@ public void createMetadataDefinitionChildNodes(EClass childEClass, String compar var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getMetadataDefinition(); - String parentLabel = "MetadataDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.METADATA_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -183,13 +183,13 @@ public void createMetadataDefinitionChildNodes(EClass childEClass, String compar .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("MetadataDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeInterconnectionCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeInterconnectionCreationTests.java index 59b1ac277..5ef15cdf0 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeInterconnectionCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeInterconnectionCreationTests.java @@ -249,10 +249,10 @@ public void createAllocationUsageSiblingNodes(EClass childEClass, EReference con var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationUsage(); - String parentLabel = "allocation"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("allocation", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -277,11 +277,11 @@ public void createAllocationUsageChildNodes(EClass childEClass, String compartme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationUsage(); - String parentLabel = "allocation"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("allocation", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -307,8 +307,8 @@ public void createAllocationUsageSiblingAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationUsage(); - String parentLabel = "allocation"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -317,13 +317,13 @@ public void createAllocationUsageSiblingAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("allocation", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -348,10 +348,10 @@ public void createAllocationDefinitionSiblingNodes(EClass childEClass, EReferenc var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationDefinition(); - String parentLabel = "AllocationDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, newNodesCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("AllocationDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -376,11 +376,11 @@ public void createAllocationDefinitionChildNodes(EClass childEClass, String comp var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationDefinition(); - String parentLabel = "AllocationDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("AllocationDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -405,10 +405,10 @@ public void createInterfaceUsageSiblingNodes(EClass childEClass, EReference cont var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceUsage(); - String parentLabel = "interface"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("interface", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -433,8 +433,8 @@ public void createInterfaceUsageChildNodes(EClass childEClass, String compartmen var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceUsage(); - String parentLabel = "interface"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -443,13 +443,13 @@ public void createInterfaceUsageChildNodes(EClass childEClass, String compartmen .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("interface", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -474,8 +474,8 @@ public void createInterfaceUsageBorderAndChildNodes(EClass childEClass, String c var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceUsage(); - String parentLabel = "interface"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -485,18 +485,18 @@ public void createInterfaceUsageBorderAndChildNodes(EClass childEClass, String c .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("interface", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -521,8 +521,8 @@ public void createInterfaceDefinitionChildNodes(EClass childEClass, String compa var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceDefinition(); - String parentLabel = "InterfaceDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -531,13 +531,13 @@ public void createInterfaceDefinitionChildNodes(EClass childEClass, String compa .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("InterfaceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -562,8 +562,8 @@ public void createInterfaceDefinitionSiblingAndChildNodes(EClass childEClass, St var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceDefinition(); - String parentLabel = "InterfaceDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -572,13 +572,13 @@ public void createInterfaceDefinitionSiblingAndChildNodes(EClass childEClass, St .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("InterfaceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -603,8 +603,8 @@ public void createInterfaceDefinitionBorderAndChildNodes(EClass childEClass, Str var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceDefinition(); - String parentLabel = "InterfaceDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -614,18 +614,18 @@ public void createInterfaceDefinitionBorderAndChildNodes(EClass childEClass, Str .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("InterfaceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -650,10 +650,10 @@ public void createPortUsageSiblingNodes(EClass childEClass, EReference containme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortUsage(); - String parentLabel = "port"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("port", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -678,8 +678,8 @@ public void createPortUsageBorderNodes(EClass childEClass, EReference containmen var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortUsage(); - String parentLabel = "port"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) .hasNewBorderNodeCount(borderNodeCount) @@ -687,7 +687,7 @@ public void createPortUsageBorderNodes(EClass childEClass, EReference containmen .hasNewEdgeCount(0) .check(diagram.get(), newDiagram, true); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("port", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -712,8 +712,8 @@ public void createPortUsageChildNodes(EClass childEClass, String compartmentName var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortUsage(); - String parentLabel = "port"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -722,13 +722,13 @@ public void createPortUsageChildNodes(EClass childEClass, String compartmentName .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("port", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -753,8 +753,8 @@ public void createPortUsageBorderAndChildNodes(EClass childEClass, String compar var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortUsage(); - String parentLabel = "port"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -764,18 +764,18 @@ public void createPortUsageBorderAndChildNodes(EClass childEClass, String compar .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("port", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -800,10 +800,10 @@ public void createPortDefinitionSiblingNodes(EClass childEClass, EReference cont var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortDefinition(); - String parentLabel = "PortDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PortDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -828,8 +828,8 @@ public void createPortDefinitionChildNodes(EClass childEClass, String compartmen var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortDefinition(); - String parentLabel = "PortDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -838,13 +838,13 @@ public void createPortDefinitionChildNodes(EClass childEClass, String compartmen .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PortDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -869,8 +869,8 @@ public void createPortDefinitionBorderAndChildNodes(EClass childEClass, String c var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getPortDefinition(); - String parentLabel = "PortDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PORT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -880,18 +880,18 @@ public void createPortDefinitionBorderAndChildNodes(EClass childEClass, String c .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PortDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeRequirementCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeRequirementCreationTests.java index 828f43ef3..2cabb21c7 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeRequirementCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeRequirementCreationTests.java @@ -261,10 +261,10 @@ public void createConcernUsageSiblingNodes(EClass childEClass, EReference contai var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernUsage(); - String parentLabel = "concern"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("concern", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -289,7 +289,7 @@ public void createConcernUsageChildNodes(EClass childEClass, String compartmentN var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernUsage(); - String parentLabel = "concern"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_USAGE_ID; final String creationToolName; if (creationToolNameParameter != null) { @@ -298,7 +298,7 @@ public void createConcernUsageChildNodes(EClass childEClass, String compartmentN creationToolName = this.descriptionNameGenerator.getCreationToolName(childEClass); } - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -307,13 +307,13 @@ public void createConcernUsageChildNodes(EClass childEClass, String compartmentN .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("concern", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -339,7 +339,7 @@ public void createConcernUsageSiblingAndChildNodes(EClass childEClass, String co var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernUsage(); - String parentLabel = "concern"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_USAGE_ID; final String creationToolName; if (creationToolNameParameter != null) { @@ -348,7 +348,7 @@ public void createConcernUsageSiblingAndChildNodes(EClass childEClass, String co creationToolName = this.descriptionNameGenerator.getCreationToolName(childEClass); } - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -357,13 +357,13 @@ public void createConcernUsageSiblingAndChildNodes(EClass childEClass, String co .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("concern", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -388,8 +388,8 @@ public void createConcernUsageBorderAndChildNodes(EClass childEClass, String com var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernUsage(); - String parentLabel = "concern"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -399,18 +399,18 @@ public void createConcernUsageBorderAndChildNodes(EClass childEClass, String com .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("concern", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -436,7 +436,7 @@ public void createConcernDefinitionSiblingAndChildNodes(EClass childEClass, Stri var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernDefinition(); - String parentLabel = "ConcernDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_DEFINITION_ID; final String creationToolName; if (creationToolNameParameter != null) { @@ -445,7 +445,7 @@ public void createConcernDefinitionSiblingAndChildNodes(EClass childEClass, Stri creationToolName = this.descriptionNameGenerator.getCreationToolName(childEClass); } - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -454,13 +454,13 @@ public void createConcernDefinitionSiblingAndChildNodes(EClass childEClass, Stri .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConcernDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -485,7 +485,7 @@ public void createConcernDefinitionChildNodes(EClass childEClass, String compart var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConcernDefinition(); - String parentLabel = "ConcernDefinition"; + String parentLabel = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_DEFINITION_ID; final String creationToolName; if (creationToolNameParameter != null) { @@ -503,13 +503,13 @@ public void createConcernDefinitionChildNodes(EClass childEClass, String compart .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(parentLabel) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConcernDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -534,10 +534,10 @@ public void createConstraintUsageSiblingNodes(EClass childEClass, EReference con var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintUsage(); - String parentLabel = "constraint"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("constraint", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -562,8 +562,8 @@ public void createConstraintUsageChildNodes(EClass childEClass, String compartme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintUsage(); - String parentLabel = "constraint"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -572,13 +572,13 @@ public void createConstraintUsageChildNodes(EClass childEClass, String compartme .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("constraint", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -604,8 +604,8 @@ public void createConstraintUsageSiblingAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintUsage(); - String parentLabel = "constraint"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -614,13 +614,13 @@ public void createConstraintUsageSiblingAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("constraint", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -645,8 +645,8 @@ public void createConstraintUsageBorderAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintUsage(); - String parentLabel = "constraint"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -656,18 +656,18 @@ public void createConstraintUsageBorderAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("constraint", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -692,10 +692,10 @@ public void createConstraintDefinitionSiblingNodes(EClass childEClass, EReferenc var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintDefinition(); - String parentLabel = "ConstraintDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConstraintDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -720,11 +720,11 @@ public void createConstraintDefinitionChildNodes(EClass childEClass, String comp var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintDefinition(); - String parentLabel = "ConstraintDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConstraintDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -750,8 +750,8 @@ public void createConstraintDefinitionSiblingAndChildNodes(EClass childEClass, S var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getConstraintDefinition(); - String parentLabel = "ConstraintDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONSTRAINT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -760,13 +760,13 @@ public void createConstraintDefinitionSiblingAndChildNodes(EClass childEClass, S .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConstraintDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -791,10 +791,10 @@ public void createRequirementUsageSiblingNodes(EClass childEClass, EReference co var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getRequirementUsage(); - String parentLabel = "requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -819,8 +819,8 @@ public void createSatisfyRequirementUsageChildNodes(EClass childEClass, String c var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getSatisfyRequirementUsage(); - String parentLabel = "satisfy requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.SATISFY_REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -829,13 +829,13 @@ public void createSatisfyRequirementUsageChildNodes(EClass childEClass, String c .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("satisfy requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -860,8 +860,8 @@ public void createSatisfyRequirementUsageBorderAndChildNodes(EClass childEClass, var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getSatisfyRequirementUsage(); - String parentLabel = "satisfy requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.SATISFY_REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -871,18 +871,18 @@ public void createSatisfyRequirementUsageBorderAndChildNodes(EClass childEClass, .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("satisfy requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -907,10 +907,10 @@ public void createSatisfyRequirementUsageSiblingNodes(EClass childEClass, ERefer var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getSatisfyRequirementUsage(); - String parentLabel = "satisfy requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.SATISFY_REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("satisfy requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -935,8 +935,8 @@ public void createRequirementUsageChildNodes(EClass childEClass, String compartm var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getRequirementUsage(); - String parentLabel = "requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -945,13 +945,13 @@ public void createRequirementUsageChildNodes(EClass childEClass, String compartm .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -976,8 +976,8 @@ public void createRequirementUsageBorderAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getRequirementUsage(); - String parentLabel = "requirement"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -987,18 +987,18 @@ public void createRequirementUsageBorderAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("requirement", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -1023,8 +1023,8 @@ public void createRequirementDefinitionChildNodes(EClass childEClass, String com var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getRequirementDefinition(); - String parentLabel = "RequirementDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -1033,13 +1033,13 @@ public void createRequirementDefinitionChildNodes(EClass childEClass, String com .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("RequirementDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -1053,40 +1053,40 @@ public void createRequirementDefinitionChildNodes(EClass childEClass, String com @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewStakeholderInConcernDefinition() { - this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getConcernDefinition(), "ConcernDefinition"); + this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getConcernDefinition(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_DEFINITION_ID, "ConcernDefinition"); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewStakeholderInConcernUsage() { - this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getConcernUsage(), "concern"); + this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getConcernUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.CONCERN_USAGE_ID, "concern"); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewStakeholderInRequirementDefinition() { - this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getRequirementDefinition(), "RequirementDefinition"); + this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getRequirementDefinition(), GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_DEFINITION_ID, "RequirementDefinition"); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewStakeholderInRequirementUsage() { - this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getRequirementUsage(), "requirement"); + this.createNewStakeholderIn(SysmlPackage.eINSTANCE.getRequirementUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_USAGE_ID, "requirement"); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorInRequirementUsage() { - this.createNewActorIn(SysmlPackage.eINSTANCE.getRequirementUsage(), "requirement"); + this.createNewActorIn(SysmlPackage.eINSTANCE.getRequirementUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_USAGE_ID, "requirement"); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @Test public void createNewActorInRequirementDefinition() { - this.createNewActorIn(SysmlPackage.eINSTANCE.getRequirementDefinition(), "RequirementDefinition"); + this.createNewActorIn(SysmlPackage.eINSTANCE.getRequirementDefinition(), GeneralViewWithTopNodesTestProjectData.SemanticIds.REQUIREMENT_DEFINITION_ID, "RequirementDefinition"); } - private void createNewStakeholderIn(EClass eClassWithStakeholderParameter, String parentNodeLabel) { + private void createNewStakeholderIn(EClass eClassWithStakeholderParameter, String targetObjectId, String parentNodeLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -1101,7 +1101,7 @@ private void createNewStakeholderIn(EClass eClassWithStakeholderParameter, Strin .orElseGet(() -> Assertions.fail("No fitting EReference could be found in '%s'.".formatted(eClassWithStakeholderParameter.getName()))); final String stakeholderCreationToolName = "New Stakeholder"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, eClassWithStakeholderParameter, parentNodeLabel, stakeholderCreationToolName, + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, eClassWithStakeholderParameter, targetObjectId, stakeholderCreationToolName, Stream.of(new ToolVariable("selectedObject", /* PartUsage 'part' */ "2c5fe5a5-18fe-40f4-ab66-a2d91ab7df6a", ToolVariableType.OBJECT_ID)).toList()); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -1110,7 +1110,7 @@ private void createNewStakeholderIn(EClass eClassWithStakeholderParameter, Strin .hasNewNodeCount(1) .check(initialDiagram, newDiagram); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentNodeLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("stakeholders") .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(eClassWithStakeholderParameter, stakeholderParameterEReference)) .hasCompartmentCount(0) @@ -1144,7 +1144,7 @@ private void createNewStakeholderIn(EClass eClassWithStakeholderParameter, Strin .verify(Duration.ofSeconds(10)); } - private void createNewActorIn(EClass eClassWithActorParameter, String parentNodeLabel) { + private void createNewActorIn(EClass eClassWithActorParameter, String targetObjectId, String parentNodeLabel) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -1161,7 +1161,7 @@ private void createNewActorIn(EClass eClassWithActorParameter, String parentNode Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, eClassWithActorParameter, parentNodeLabel, actorCreationToolName, + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, eClassWithActorParameter, targetObjectId, actorCreationToolName, Stream.of(new ToolVariable("selectedObject", /* PartUsage 'part' */ "2c5fe5a5-18fe-40f4-ab66-a2d91ab7df6a", ToolVariableType.OBJECT_ID)).toList()); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -1171,7 +1171,7 @@ private void createNewActorIn(EClass eClassWithActorParameter, String parentNode .hasNewEdgeCount(1) .check(initialDiagram, newDiagram, true); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentNodeLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName("actors") .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(eClassWithActorParameter, actorParameterEReference)) .hasCompartmentCount(0) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStateTransitionCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStateTransitionCreationTests.java index 14668298f..dbe8b0057 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStateTransitionCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStateTransitionCreationTests.java @@ -201,7 +201,7 @@ public void setUp() { public void createStateUsageSubactionNode(StateSubactionKind kind) { String toolName = "New " + StringUtils.capitalize(kind.getName()) + " Action"; - this.createStateSubactionNode(kind, SysmlPackage.eINSTANCE.getStateUsage(), "state", toolName); + this.createStateSubactionNode(kind, SysmlPackage.eINSTANCE.getStateUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_USAGE_ID, toolName); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @@ -211,7 +211,7 @@ public void createStateUsageSubactionWithReferencedActionNode(StateSubactionKind String toolName = "New " + StringUtils.capitalize(kind.getName()) + " Action with referenced Action"; var params = List.of(new ToolVariable("selectedObject", GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID, ToolVariableType.OBJECT_ID)); - this.createStateSubactionWithReferencedActionNode(kind, SysmlPackage.eINSTANCE.getStateUsage(), "state", toolName, params); + this.createStateSubactionWithReferencedActionNode(kind, SysmlPackage.eINSTANCE.getStateUsage(), GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_USAGE_ID, toolName, params); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @@ -220,7 +220,7 @@ public void createStateUsageSubactionWithReferencedActionNode(StateSubactionKind public void createStateDefinitionSubactionNode(StateSubactionKind kind) { String toolName = "New " + StringUtils.capitalize(kind.getName()) + " Action"; - this.createStateSubactionNode(kind, SysmlPackage.eINSTANCE.getStateDefinition(), "StateDefinition", toolName); + this.createStateSubactionNode(kind, SysmlPackage.eINSTANCE.getStateDefinition(), GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_DEFINITION_ID, toolName); } @GivenSysONServer({ GeneralViewWithTopNodesTestProjectData.SCRIPT_PATH }) @@ -230,10 +230,10 @@ public void createStateDefinitionSubactionWithReferencedActionNode(StateSubactio String toolName = "New " + StringUtils.capitalize(kind.getName()) + " Action with referenced Action"; var params = List.of(new ToolVariable("selectedObject", GeneralViewWithTopNodesTestProjectData.SemanticIds.ACTION_USAGE_ID, ToolVariableType.OBJECT_ID)); - this.createStateSubactionWithReferencedActionNode(kind, SysmlPackage.eINSTANCE.getStateDefinition(), "StateDefinition", toolName, params); + this.createStateSubactionWithReferencedActionNode(kind, SysmlPackage.eINSTANCE.getStateDefinition(), GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_DEFINITION_ID, toolName, params); } - private void createStateSubactionNode(StateSubactionKind kind, EClass parentEClass, String parentLabel, String toolName) { + private void createStateSubactionNode(StateSubactionKind kind, EClass parentEClass, String targetObjectId, String toolName) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -243,7 +243,7 @@ private void createStateSubactionNode(StateSubactionKind kind, EClass parentECla SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, toolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, toolName); String[] subActionId = new String[1]; Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -276,7 +276,7 @@ private void createStateSubactionNode(StateSubactionKind kind, EClass parentECla .verify(Duration.ofSeconds(10)); } - private void createStateSubactionWithReferencedActionNode(StateSubactionKind kind, EClass parentEClass, String parentLabel, String toolName, List<@NotNull ToolVariable> params) { + private void createStateSubactionWithReferencedActionNode(StateSubactionKind kind, EClass parentEClass, String targetObjectId, String toolName, List<@NotNull ToolVariable> params) { var flux = this.givenSubscriptionToDiagram(); AtomicReference diagram = new AtomicReference<>(); @@ -286,7 +286,7 @@ private void createStateSubactionWithReferencedActionNode(StateSubactionKind kin SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, toolName, params); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, toolName, params); String[] subActionId = new String[1]; Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { @@ -337,8 +337,8 @@ public void createStateUsageChildNodes(EClass childEClass, String compartmentNam var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getStateUsage(); - String parentLabel = "state"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -353,7 +353,7 @@ public void createStateUsageChildNodes(EClass childEClass, String compartmentNam listStatesNodeDescription += StatesCompartmentNodeDescriptionProvider.EXHIBIT_STATES_NAME; } new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) @@ -364,7 +364,7 @@ public void createStateUsageChildNodes(EClass childEClass, String compartmentNam // Actions are not semantically owned by parent if (!SysmlPackage.eINSTANCE.getActionUsage().equals(childEClass)) { - semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("state", containmentReference, childEClass)); } StepVerifier.create(flux) @@ -391,8 +391,8 @@ public void createStateDefinitionChildNodes(EClass childEClass, String compartme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getStateDefinition(); - String parentLabel = "StateDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.STATE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); @@ -407,7 +407,7 @@ public void createStateDefinitionChildNodes(EClass childEClass, String compartme listStatesNodeDescription += StatesCompartmentNodeDescriptionProvider.EXHIBIT_STATES_NAME; } new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) @@ -418,7 +418,7 @@ public void createStateDefinitionChildNodes(EClass childEClass, String compartme // Actions are not semantically owned by parent if (!SysmlPackage.eINSTANCE.getActionUsage().equals(childEClass)) { - semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("StateDefinition", containmentReference, childEClass)); } StepVerifier.create(flux) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStructureCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStructureCreationTests.java index 0a93b5e2d..0e8d1df82 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStructureCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeStructureCreationTests.java @@ -314,14 +314,14 @@ public void createAttributeDefinitionSubNodes(EClass childEClass, String compart Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getAttributeDefinition(); - String parentLabel = "AttributeDefinition"; + String parentLabel = GeneralViewWithTopNodesTestProjectData.SemanticIds.ATTRIBUTE_DEFINITION_ID; Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("AttributeDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -346,14 +346,14 @@ public void createAttributeUsageSubNodes(EClass childEClass, String compartmentN Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getAttributeUsage(); - String parentLabel = "attribute"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ATTRIBUTE_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("attribute", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -378,14 +378,14 @@ public void createEnumerationDefinitionSubNodes(EClass childEClass, String compa Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getEnumerationDefinition(); - String parentLabel = "EnumerationDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ENUMERATION_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("EnumerationDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -410,14 +410,14 @@ public void createConnectionDefinitionSubNodes(EClass childEClass, String compar Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getConnectionDefinition(); - String parentLabel = "ConnectionDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONNECTION_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConnectionDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -442,13 +442,13 @@ public void createConnectionDefinitionSiblingNodes(EClass childEClass, String co Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getConnectionDefinition(); - String parentLabel = "ConnectionDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.CONNECTION_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, newNodesCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ConnectionDefinition", containmentReference, childEClass)); StepVerifier.create(flux) @@ -474,13 +474,13 @@ public void creatAllocationDefinitionSiblingNodes(EClass childEClass, String com Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getAllocationDefinition(); - String parentLabel = "AllocationDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ALLOCATION_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, newNodesCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("AllocationDefinition", containmentReference, childEClass)); StepVerifier.create(flux) @@ -506,13 +506,13 @@ public void creatInterfaceDefinitionSiblingNodes(EClass childEClass, String comp Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getInterfaceDefinition(); - String parentLabel = "InterfaceDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.INTERFACE_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount, newNodesCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("InterfaceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) @@ -538,13 +538,13 @@ public void createItemDefinitionSiblingNodes(EClass childEClass, EReference cont Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getItemDefinition(); - String parentLabel = "ItemDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ITEM_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ItemDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -569,14 +569,14 @@ public void createItemDefinitionSubNodes(EClass childEClass, String compartmentN Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getItemDefinition(); - String parentLabel = "ItemDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ITEM_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("ItemDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -601,13 +601,13 @@ public void createItemUsageSiblingNodes(EClass childEClass, EReference containme Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getItemUsage(); - String parentLabel = "item"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ITEM_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("item", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -632,14 +632,14 @@ public void createItemUsageChildNodes(EClass childEClass, String compartmentName Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getItemUsage(); - String parentLabel = "item"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ITEM_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("item", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -664,9 +664,9 @@ public void createItemUsageBorderAndChildNodes(EClass childEClass, String compar Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getItemUsage(); - String parentLabel = "item"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.ITEM_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -676,19 +676,19 @@ public void createItemUsageBorderAndChildNodes(EClass childEClass, String compar .check(diagram.get(), newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(diagram.get(), newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(borderNodeType, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(diagram.get(), newDiagram); }); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("item", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -713,19 +713,19 @@ public void createPackageChildNodes(EClass childEClass, EReference containmentRe Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPackage(); - String parentLabel = "Package"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PACKAGE_ID; List variables = List.of(); if (SysmlPackage.eINSTANCE.getNamespaceImport().equals(childEClass)) { variables = List.of(new ToolVariable("selectedObject", GeneralViewWithTopNodesTestProjectData.SemanticIds.PACKAGE_1_ID, ToolVariableType.OBJECT_ID)); } List finalVariables = variables; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass, finalVariables); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass, finalVariables); - Consumer diagramChecker = this.diagramCheckerService.childNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, childEClass, compartmentCount, + Consumer diagramChecker = this.diagramCheckerService.childNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, childEClass, compartmentCount, 1 + compartmentCount + additionalNodesCount, newBorderNodes); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("Package", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -750,14 +750,14 @@ public void createPartDefinitionChildNodes(EClass childEClass, String compartmen Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); - String parentLabel = "PartDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PartDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -782,9 +782,9 @@ public void createPartDefinitionSiblingNodes(EClass childEClass, EReference cont Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); - String parentLabel = "PartDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> { int createdNodesExpectedCount = 1; @@ -794,7 +794,7 @@ public void createPartDefinitionSiblingNodes(EClass childEClass, EReference cont .check(diagram.get(), newDiagram, true); }); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PartDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -820,9 +820,9 @@ public void createPartDefinitionSiblingAndChildNodes(EClass childEClass, String Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); - String parentLabel = "PartDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -831,14 +831,14 @@ public void createPartDefinitionSiblingAndChildNodes(EClass childEClass, String .check(diagram.get(), newDiagram); String compartmentItemNodeDescriptionName = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference) + compartmentNodeDecriptionNameSuffix; new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentItemNodeDescriptionName) .hasCompartmentCount(0) .check(diagram.get(), newDiagram); }); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PartDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -863,14 +863,14 @@ public void createPartUsageChildNodes(EClass childEClass, String compartmentName Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartUsage(); - String parentLabel = "part"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); - Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + Consumer diagramChecker = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, true); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("part", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -895,13 +895,13 @@ public void createPartUsageSiblingNodes(EClass childEClass, EReference containme Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartUsage(); - String parentLabel = "part"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("part", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -927,9 +927,9 @@ public void createPartUsageSiblingAndChildNodes(EClass childEClass, String compa Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartUsage(); - String parentLabel = "part"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_USAGE_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -938,14 +938,14 @@ public void createPartUsageSiblingAndChildNodes(EClass childEClass, String compa .check(diagram.get(), newDiagram); String compartmentItemNodeDescriptionName = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference) + compartmentNodeDecriptionNameSuffix; new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentItemNodeDescriptionName) .hasCompartmentCount(0) .check(diagram.get(), newDiagram); }); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("part", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -970,9 +970,9 @@ public void createDirectedPortsInPartDefinitionChildNodeParameters(EClass childE Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); EClass parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); - String parentLabel = "PartDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.PART_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, creationToolName); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, creationToolName); Consumer diagramChecker = assertRefreshedDiagramThat(newDiagram -> { new CheckDiagramElementCount(this.diagramComparator) @@ -982,19 +982,19 @@ public void createDirectedPortsInPartDefinitionChildNodeParameters(EClass childE .check(diagram.get(), newDiagram, true); String compartmentNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(compartmentNodeDescription) .hasCompartmentCount(0) .check(diagram.get(), newDiagram); String borderNodeDescription = this.descriptionNameGenerator.getBorderNodeName(childEClass, containmentReference); new CheckBorderNode(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withParentTargetObjectId(targetObjectId) .hasBorderNodeDescriptionName(borderNodeDescription) .check(diagram.get(), newDiagram); }); - Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticChecker = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("PartDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeTemporalCreationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeTemporalCreationTests.java index b34392d88..dd3e95874 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeTemporalCreationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVSubNodeTemporalCreationTests.java @@ -163,11 +163,11 @@ public void createOccurrenceUsageChildNodes(EClass childEClass, String compartme var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getOccurrenceUsage(); - String parentLabel = "occurrence"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); - Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, parentLabel, parentEClass, containmentReference, + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.OCCURRENCE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); + Consumer diagramCheck = this.diagramCheckerService.compartmentNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, targetObjectId, parentEClass, containmentReference, compartmentName, false); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("occurrence", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -192,8 +192,8 @@ public void createOccurrenceUsageSiblingAndChildNodes(EClass childEClass, String var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getOccurrenceUsage(); - String parentLabel = "occurrence"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.OCCURRENCE_USAGE_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -202,13 +202,13 @@ public void createOccurrenceUsageSiblingAndChildNodes(EClass childEClass, String .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("occurrence", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -233,9 +233,9 @@ public void createOccurrenceDefinitionSiblingNodes(EClass childEClass, EReferenc var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getOccurrenceDefinition(); - String parentLabel = "OccurrenceDefinition"; + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.OCCURRENCE_DEFINITION_ID; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); final Consumer diagramCheck; if (SysmlPackage.eINSTANCE.getPartUsage().equals(childEClass)) { @@ -258,7 +258,7 @@ public void createOccurrenceDefinitionSiblingNodes(EClass childEClass, EReferenc diagramCheck = this.diagramCheckerService.siblingNodeGraphicalChecker(diagram, diagramDescriptionIdProvider, childEClass, compartmentCount); } - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("OccurrenceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -283,8 +283,8 @@ public void createOccurrenceDefinitionChildNodes(EClass childEClass, String comp var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getOccurrenceDefinition(); - String parentLabel = "OccurrenceDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.OCCURRENCE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -293,13 +293,13 @@ public void createOccurrenceDefinitionChildNodes(EClass childEClass, String comp .check(initialDiagram, newDiagram, true); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("OccurrenceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) @@ -325,8 +325,8 @@ public void createOccurrenceDefinitionSiblingAndChildNodes(EClass childEClass, S var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); EClass parentEClass = SysmlPackage.eINSTANCE.getOccurrenceDefinition(); - String parentLabel = "OccurrenceDefinition"; - Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass); + String targetObjectId = GeneralViewWithTopNodesTestProjectData.SemanticIds.OCCURRENCE_DEFINITION_ID; + Runnable createNodeRunnable = this.creationTestsService.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass); Consumer diagramCheck = assertRefreshedDiagramThat(newDiagram -> { var initialDiagram = diagram.get(); new CheckDiagramElementCount(this.diagramComparator) @@ -335,13 +335,13 @@ public void createOccurrenceDefinitionSiblingAndChildNodes(EClass childEClass, S .check(initialDiagram, newDiagram); String listStatesNodeDescription = this.descriptionNameGenerator.getCompartmentItemName(parentEClass, containmentReference); new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) - .withParentLabel(parentLabel) + .withTargetObjectId(targetObjectId) .withCompartmentName(compartmentName) .hasNodeDescriptionName(listStatesNodeDescription) .hasCompartmentCount(0) .check(initialDiagram, newDiagram); }); - Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker(parentLabel, containmentReference, childEClass)); + Runnable semanticCheck = this.semanticCheckerService.checkEditingContext(this.semanticCheckerService.getElementInParentSemanticChecker("OccurrenceDefinition", containmentReference, childEClass)); StepVerifier.create(flux) .consumeNextWith(initialDiagramContentConsumer) diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/ToolTester.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/ToolTester.java index 006444b55..b43fe3e81 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/ToolTester.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/ToolTester.java @@ -60,16 +60,16 @@ public void invokeTool(String editingContextId, AtomicReference diagram this.invokeTool(editingContextId, diagram, null, toolId); } - public void invokeTool(String editingContextId, AtomicReference diagram, String selectedNodeTargetObjectLabel, String toolId) { - this.invokeTool(editingContextId, diagram, selectedNodeTargetObjectLabel, toolId, List.of()); + public void invokeTool(String editingContextId, AtomicReference diagram, String selectedNodeTargetObjectId, String toolId) { + this.invokeTool(editingContextId, diagram, selectedNodeTargetObjectId, toolId, List.of()); } - public void invokeTool(String editingContextId, AtomicReference diagram, String selectedNodeTargetObjectLabel, String toolId, List variables) { + public void invokeTool(String editingContextId, AtomicReference diagram, String selectedNodeTargetObjectId, String toolId, List variables) { String diagramId = diagram.get().getId(); String diagramElementId = null; - if (selectedNodeTargetObjectLabel != null) { + if (selectedNodeTargetObjectId != null) { DiagramNavigator diagramNavigator = new DiagramNavigator(diagram.get()); - diagramElementId = diagramNavigator.nodeWithTargetObjectLabel(selectedNodeTargetObjectLabel).getNode().getId(); + diagramElementId = diagramNavigator.nodeWithTargetObjectId(selectedNodeTargetObjectId).getNode().getId(); } else { diagramElementId = diagramId; } @@ -115,8 +115,8 @@ public void createNodeOnEdge(String editingContextId, AtomicReference d assertThat(typename).isEqualTo(InvokeSingleClickOnDiagramElementToolSuccessPayload.class.getSimpleName()); } - public void renameRootNode(String editingContextId, AtomicReference diagram, String nodeName, String newName) { - Optional optionalNode = diagram.get().getNodes().stream().filter(n -> n.getTargetObjectLabel().equals(nodeName)).findFirst(); + public void renameRootNode(String editingContextId, AtomicReference diagram, String nodeName, String targetObjectId, String newName) { + Optional optionalNode = diagram.get().getNodes().stream().filter(n -> n.getTargetObjectId().equals(targetObjectId)).findFirst(); assertThat(optionalNode).as("the node " + nodeName + " is not present in the diagram").isNotEmpty(); diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GeneralViewWithTopNodesTestProjectData.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GeneralViewWithTopNodesTestProjectData.java index 2922669f8..195c5f4e7 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GeneralViewWithTopNodesTestProjectData.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GeneralViewWithTopNodesTestProjectData.java @@ -52,21 +52,77 @@ public static class GraphicalIds { */ public static final class SemanticIds { + public static final String PACKAGE_ID = "973cb7ba-35ac-4ab4-abf5-7d9d7ae1243c"; + public static final String PACKAGE_1_ID = "8bd049dc-6f98-44fc-9be6-b2acb871c8c3"; + public static final String ACCEPT_ACTION_USAGE_ID = "9e0d51d5-2ae6-4341-89a4-d06a70ff2f74"; + + public static final String ACTION_DEFINITION_ID = "b918a8a1-f30b-4703-b131-77cde928401d"; + + public static final String ACTION_USAGE_ID = "62481ceb-d036-4723-acda-2bace93ae370"; + + public static final String ALLOCATION_DEFINITION_ID = "90eccfd2-f18e-462e-99e7-82dac2e3c04e"; + + public static final String ALLOCATION_USAGE_ID = "f9c0458a-7543-4de0-8fa0-4e481ec2e25f"; + + public static final String ATTRIBUTE_DEFINITION_ID = "564765d7-198f-4949-b0ee-cf7ac7f48f3a"; + + public static final String ATTRIBUTE_USAGE_ID = "5c33b57d-737e-4d4a-97d8-da41f443608d"; + + public static final String CASE_DEFINITION_ID = "ed7b7a46-89d0-4a87-ae4a-5293ee172003"; + + public static final String CASE_USAGE_ID = "846ea3ad-06f1-448b-96b9-0cafa85feaaa"; + + public static final String CONCERN_DEFINITION_ID = "f21900d0-5e89-4486-bf26-1fcaafc52364"; + + public static final String CONCERN_USAGE_ID = "003948d8-abdb-453a-9f8d-ebe9d5ea5423"; + + public static final String CONNECTION_DEFINITION_ID = "0a8243a5-5c24-465a-a3e0-f999c305d654"; + + public static final String CONSTRAINT_DEFINITION_ID = "0423a259-8c85-468d-b5c8-d5d4164691c7"; + + public static final String CONSTRAINT_USAGE_ID = "f53c7476-8e25-411a-a137-41b02940f05c"; + + public static final String ENUMERATION_DEFINITION_ID = "602dbf04-0c93-4859-92af-eac11b64b3c1"; + + public static final String INTERFACE_DEFINITION_ID = "9cb8ba4c-33d5-4e5c-9f0a-c25e4045d0d3"; + + public static final String INTERFACE_USAGE_ID = "65eb167b-59ab-4f89-b159-7a5736a357a5"; + + public static final String ITEM_DEFINITION_ID = "338268f3-58be-4c8d-9636-73596ddd2f7b"; + + public static final String ITEM_USAGE_ID = "6411f199-0388-4a6d-8284-64d686be5e00"; + + public static final String METADATA_DEFINITION_ID = "13e12ad6-25ba-4c51-b746-8faf6beaf18d"; + + public static final String OCCURRENCE_DEFINITION_ID = "6213f970-e8eb-42cf-9426-c92cb840f993"; + + public static final String OCCURRENCE_USAGE_ID = "5126fb57-f6b3-4d0c-b981-92cfc961091f"; + public static final String PART_DEFINITION_ID = "fabf5949-463d-4292-8ccc-960645da72b2"; public static final String PART_DEFINITION_TEXTUAL_REP_ID = "a2348331-4625-49b1-8455-2d9e4f0e1dc0"; public static final String PART_USAGE_ID = "2ae87f41-e214-4a36-9985-e9ec156e28e6"; - public static final String STATE_USAGE_ID = "15246f9c-231e-4569-8779-074b2fb6d2dc"; + public static final String PORT_DEFINITION_ID = "391883e1-7c14-41e8-b619-9259a15217b8"; - public static final String ACTION_USAGE_ID = "62481ceb-d036-4723-acda-2bace93ae370"; + public static final String PORT_USAGE_ID = "1110c3c3-a553-48fc-9217-9baf29278baa"; - public static final String ACTION_DEFINITION_ID = "b918a8a1-f30b-4703-b131-77cde928401d"; + public static final String REQUIREMENT_DEFINITION_ID = "c4e3a87b-af00-409b-9511-869aebf70614"; - public static final String OCCURRENCE_USAGE_ID = "5126fb57-f6b3-4d0c-b981-92cfc961091f"; + public static final String REQUIREMENT_USAGE_ID = "63d398e1-f8b0-44ce-9e89-9c7195c99495"; + + public static final String SATISFY_REQUIREMENT_USAGE_ID = "11c097c5-051a-42a3-bdcd-b0ffee455e66"; + + public static final String STATE_DEFINITION_ID = "3e1033e2-b355-415a-ab04-d4768bcb27eb"; + + public static final String STATE_USAGE_ID = "15246f9c-231e-4569-8779-074b2fb6d2dc"; + + public static final String USE_CASE_DEFINITION_ID = "d87d7be1-4131-4691-983e-b0a799e6b453"; + + public static final String USE_CASE_USAGE_ID = "c26d8521-8ebb-4caa-873c-b2f9134ea929"; } } diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/services/diagrams/NodeCreationTestsService.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/services/diagrams/NodeCreationTestsService.java index e5b9ed6c1..f2bc37317 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/services/diagrams/NodeCreationTestsService.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/services/diagrams/NodeCreationTestsService.java @@ -51,15 +51,15 @@ public NodeCreationTestsService(ToolTester nodeCreationTester, IDescriptionNameG * the diagram reference * @param parentEClass * the EClass of the parent node - * @param parentLabel - * the label of the parent node + * @param targetObjectId + * the ID of the element on which apply the tool * @param childEClass * the EClass of the child node to create * @return a runnable that performs the node creation */ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider, - AtomicReference diagram, EClass parentEClass, String parentLabel, EClass childEClass) { - return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, childEClass, List.of()); + AtomicReference diagram, EClass parentEClass, String targetObjectId, EClass childEClass) { + return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, childEClass, List.of()); } /** @@ -71,8 +71,8 @@ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProv * the diagram reference * @param parentEClass * the EClass of the parent node - * @param parentLabel - * the label of the parent node + * @param targetObjectId + * the ID of the element on which apply the tool * @param childEClass * the EClass of the child node to create * @param variables @@ -80,8 +80,8 @@ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProv * @return a runnable that performs the node creation */ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider, - AtomicReference diagram, EClass parentEClass, String parentLabel, EClass childEClass, List variables) { - return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, this.descriptionNameGenerator.getCreationToolName(childEClass), variables); + AtomicReference diagram, EClass parentEClass, String targetObjectId, EClass childEClass, List variables) { + return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, this.descriptionNameGenerator.getCreationToolName(childEClass), variables); } /** @@ -93,15 +93,15 @@ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProv * the diagram reference * @param parentEClass * the EClass of the parent node - * @param parentLabel - * the label of the parent node + * @param targetObjectId + * the ID of the element on which apply the tool * @param toolName * the name of the creation tool * @return a runnable that performs the node creation */ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider, - AtomicReference diagram, EClass parentEClass, String parentLabel, String toolName) { - return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, parentLabel, toolName, List.of()); + AtomicReference diagram, EClass parentEClass, String targetObjectId, String toolName) { + return this.createNode(diagramDescriptionIdProvider, diagram, parentEClass, targetObjectId, toolName, List.of()); } /** @@ -113,8 +113,8 @@ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProv * the diagram reference * @param parentEClass * the EClass of the parent node - * @param parentLabel - * the label of the parent node + * @param targetObjectId + * the ID of the element on which apply the tool * @param toolName * the name of the creation tool * @param variables @@ -122,11 +122,11 @@ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProv * @return a runnable that performs the node creation */ public Runnable createNode(DiagramDescriptionIdProvider diagramDescriptionIdProvider, - AtomicReference diagram, EClass parentEClass, String parentLabel, String toolName, List variables) { + AtomicReference diagram, EClass parentEClass, String targetObjectId, String toolName, List variables) { String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(parentEClass), toolName); return () -> this.toolTester.invokeTool(this.editingContextId, diagram, - parentLabel, + targetObjectId, creationToolId, variables); } From fab783c5ae77dca2e39b1262fd3ad66a94089afd Mon Sep 17 00:00:00 2001 From: Guillaume Coutable Date: Fri, 20 Mar 2026 15:43:40 +0100 Subject: [PATCH 2/2] [2045] Prevent unwanted compartments from being revealed at node creation Bug: https://github.com/eclipse-syson/syson/issues/2045 Signed-off-by: Guillaume Coutable --- CHANGELOG.adoc | 7 +- .../checkers/CheckNodeInCompartment.java | 10 + .../PartDefinitionCompartmentRevealTests.java | 378 ++++++++++++++++++ ...itionCompartmentRevealTestProjectData.java | 47 +++ ...onView-PartDefinitionCompartmentReveal.sql | 106 +++++ .../common/view/services/ViewNodeService.java | 35 +- .../pages/release-notes/2026.3.0.adoc | 3 +- 7 files changed, 575 insertions(+), 11 deletions(-) create mode 100644 backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/PartDefinitionCompartmentRevealTests.java create mode 100644 backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.java create mode 100644 backend/application/syson-application/src/test/resources/scripts/database-content/InterconnectionView-PartDefinitionCompartmentReveal.sql diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 136dfad2d..c98da24a0 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -63,6 +63,10 @@ And the following methods have been added: - [test] Reduce our call to `DiagramNavigator#nodeWithTargetObjectLabel` which has been deprecated for removal. + The API of `ToolTester#invokeTool` and `NodeCreationTestsService#createNode` has been updated accordingly to take a `targetObjectId` instead of a `label`. +- https://github.com/eclipse-syson/syson/issues/2045[#2045] [diagrams] The service `ViewNodeService#revealCompartment` has been changed to reveal a compartment only when it is needed. ++ Only reveal a compartment of a node when none of the revealed compartment can display the `targetElement`. ++ If many compartment candidates exist, choose the first free form compartment. + === Dependency update - [releng] Update to https://github.com/eclipse-sirius/sirius-web[Sirius Web 2026.1.6] @@ -105,8 +109,9 @@ Now the _end_ keyword is not displayed anymore in the label of these graphical n - https://github.com/eclipse-syson/syson/issues/2053[#2053] [diagrams] Prevent incoming and outgoing graphical edges of a graphical `ForkNode` or `JoinNode` to point empty space. - https://github.com/eclipse-syson/syson/issues/2059[#2059] [diagrams] Fix an issue where the _Add existing elements_ tool was not working correctly on the _action flow_ compartment of `ActionUsage` graphical nodes. - https://github.com/eclipse-syson/syson/issues/2043[#2043] [explorer] Prevent user libraries from being moved to the root of the project when a child is created in it. -- https://github.com/eclipse-syson/syson/issues/2056[#2056] [diagams] Fix the user feedback when dropping an `Element` which is already exposed on a diagram. +- https://github.com/eclipse-syson/syson/issues/2056[#2056] [diagrams] Fix the user feedback when dropping an `Element` which is already exposed on a diagram. - https://github.com/eclipse-syson/syson/issues/2048[#2048] [diagrams] Fix an issue where the non-empty compartments of graphical nodes were being displayed when executing the _Add existing elements_ tool. +- https://github.com/eclipse-syson/syson/issues/2045[#2045] [diagrams] In Interconnection View diagrams, fix an issue where the `parts` compartment of a `PartDefinition` graphical node was incorrectly revealed when creating a `PartUsage` from the `PartDefinition` graphical node, even if the `interconnection` compartment was already visible. === Improvements diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java index 25840149a..8f87ecf14 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/checkers/CheckNodeInCompartment.java @@ -46,6 +46,8 @@ public class CheckNodeInCompartment implements IDiagramChecker { private boolean isRevealed; + private boolean isHidden; + public CheckNodeInCompartment(DiagramDescriptionIdProvider diagramDescriptionIdProvider, DiagramComparator diagramComparator) { this.diagramDescriptionIdProvider = diagramDescriptionIdProvider; this.diagramComparator = diagramComparator; @@ -76,6 +78,11 @@ public CheckNodeInCompartment isRevealed() { return this; } + public CheckNodeInCompartment isHidden() { + this.isHidden = true; + return this; + } + @Override public void check(Diagram previousDiagram, Diagram newDiagram) { List newNodes = this.diagramComparator.newNodes(previousDiagram, newDiagram); @@ -93,5 +100,8 @@ public void check(Diagram previousDiagram, Diagram newDiagram) { if (this.isRevealed) { assertThat(compartmentNode.getState()).isEqualTo(ViewModifier.Normal); } + if (this.isHidden) { + assertThat(compartmentNode.getState()).isEqualTo(ViewModifier.Hidden); + } } } diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/PartDefinitionCompartmentRevealTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/PartDefinitionCompartmentRevealTests.java new file mode 100644 index 000000000..91deae2b8 --- /dev/null +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/compartments/PartDefinitionCompartmentRevealTests.java @@ -0,0 +1,378 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.controllers.diagrams.compartments; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.sirius.components.diagrams.tests.DiagramEventPayloadConsumer.assertRefreshedDiagramThat; + +import java.time.Duration; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; + +import org.eclipse.sirius.components.collaborative.diagrams.dto.DiagramEventInput; +import org.eclipse.sirius.components.collaborative.diagrams.dto.DiagramRefreshedEventPayload; +import org.eclipse.sirius.components.core.api.IObjectSearchService; +import org.eclipse.sirius.components.diagrams.Diagram; +import org.eclipse.sirius.components.diagrams.ViewModifier; +import org.eclipse.sirius.components.view.emf.diagram.IDiagramIdProvider; +import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState; +import org.eclipse.syson.AbstractIntegrationTests; +import org.eclipse.syson.GivenSysONServer; +import org.eclipse.syson.application.controller.editingcontext.checkers.SemanticCheckerService; +import org.eclipse.syson.application.controllers.diagrams.checkers.CheckNodeInCompartment; +import org.eclipse.syson.application.controllers.diagrams.testers.ToolTester; +import org.eclipse.syson.application.data.InterconnectionViewPartDefinitionCompartmentRevealTestProjectData; +import org.eclipse.syson.services.SemanticRunnableFactory; +import org.eclipse.syson.services.diagrams.DiagramComparator; +import org.eclipse.syson.services.diagrams.DiagramDescriptionIdProvider; +import org.eclipse.syson.services.diagrams.api.IGivenDiagramDescription; +import org.eclipse.syson.services.diagrams.api.IGivenDiagramSubscription; +import org.eclipse.syson.standard.diagrams.view.SDVDescriptionNameGenerator; +import org.eclipse.syson.sysml.PartDefinition; +import org.eclipse.syson.sysml.PartUsage; +import org.eclipse.syson.sysml.SysmlPackage; +import org.eclipse.syson.sysml.helper.EMFUtils; +import org.eclipse.syson.util.IDescriptionNameGenerator; +import org.eclipse.syson.util.SysONRepresentationDescriptionIdentifiers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +/** + * Tests the compartment reveal behavior of a PartDefinition in an Interconnection View diagram. + * + * @author gcoutable + */ +@Transactional +@SuppressWarnings("checkstyle:MultipleStringLiterals") +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class PartDefinitionCompartmentRevealTests extends AbstractIntegrationTests { + + private final IDescriptionNameGenerator descriptionNameGenerator = new SDVDescriptionNameGenerator(); + + @Autowired + private IGivenInitialServerState givenInitialServerState; + + @Autowired + private IGivenDiagramDescription givenDiagramDescription; + + @Autowired + private IGivenDiagramSubscription givenDiagramSubscription; + + @Autowired + private IDiagramIdProvider diagramIdProvider; + + @Autowired + private DiagramComparator diagramComparator; + + @Autowired + private IObjectSearchService objectSearchService; + + @Autowired + private ToolTester toolTester; + + @Autowired + private SemanticRunnableFactory semanticRunnableFactory; + + private Flux givenSubscriptionToDiagram(String diagramId) { + var diagramEventInput = new DiagramEventInput(UUID.randomUUID(), InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, diagramId); + return this.givenDiagramSubscription.subscribe(diagramEventInput); + } + + @BeforeEach + public void setUp() { + this.givenInitialServerState.initialize(); + } + + @DisplayName("GIVEN an IV diagram with a PartDefinition without any compartment revealed, WHEN using the tool to create a PartUsage from the PartDefinition, THEN only the interconnection compartment is visible and it contains the created PartUsage") + @GivenSysONServer({ InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SCRIPT_PATH }) + @Test + public void testWithoutCompartmentDisplayed() { + SemanticCheckerService semanticCheckerService = new SemanticCheckerService(this.semanticRunnableFactory, this.objectSearchService, InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID); + var flux = this.givenSubscriptionToDiagram(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.GraphicalIds.NO_COMPARTMENT_DISPLAYED_DIAGRAM_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(initialDiagram -> { + var initialPartDefinition = initialDiagram.getNodes() + .stream() + .filter(node -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID.equals(node.getTargetObjectId())) + .findFirst(); + + assertThat(initialPartDefinition).isPresent(); + assertThat(initialPartDefinition.get().getChildNodes()) + .allMatch(node -> node.getState().equals(ViewModifier.Hidden)); + + diagram.set(initialDiagram); + }); + + var diagramDescription = this.givenDiagramDescription.getDiagramDescription(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); + var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); + var parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); + String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(parentEClass), "New Part"); + + Runnable createPartUsage = () -> this.toolTester.invokeTool(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + diagram, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, + creationToolId); + + Consumer checkCompartments = assertRefreshedDiagramThat(diagramRefreshed -> { + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("interconnection") + .hasCompartmentCount(12) + .hasNodeDescriptionName(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage())) + .isRevealed() + .check(diagram.get(), diagramRefreshed); + + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("parts") + .hasCompartmentCount(0) + .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(parentEClass, SysmlPackage.eINSTANCE.getDefinition_OwnedPart())) + .isHidden() + .check(diagram.get(), diagramRefreshed); + }); + + Runnable semanticCheck = semanticCheckerService.checkElement(PartDefinition.class, () -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, partDefinition -> { + assertThat(EMFUtils.allContainedObjectOfType(partDefinition, PartUsage.class).count()).isEqualTo(1); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(createPartUsage) + .consumeNextWith(checkCompartments) + .then(semanticCheck) + .thenCancel() + .verify(Duration.ofSeconds(10)); + } + + @DisplayName("GIVEN an IV diagram with a PartDefinition with the 'interconnection' compartment revealed, WHEN using the tool to create a PartUsage from the PartDefinition, THEN only the interconnection compartment is visible and it contains the created PartUsage") + @GivenSysONServer({ InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SCRIPT_PATH }) + @Test + public void testWithInterconnectionCompartmentDisplayed() { + SemanticCheckerService semanticCheckerService = new SemanticCheckerService(this.semanticRunnableFactory, this.objectSearchService, InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID); + var flux = this.givenSubscriptionToDiagram(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.GraphicalIds.INTERCONNECTION_COMPARTMENT_DISPLAYED_DIAGRAM_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(initialDiagram -> { + var initialPartDefinition = initialDiagram.getNodes() + .stream() + .filter(node -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID.equals(node.getTargetObjectId())) + .findFirst(); + + assertThat(initialPartDefinition).isPresent(); + assertThat(initialPartDefinition.get().getChildNodes()) + .allMatch(node -> { + if ("interconnection".equals(node.getInsideLabel().getText())) { + return node.getState().equals(ViewModifier.Normal); + } else { + return node.getState().equals(ViewModifier.Hidden); + } + }); + + diagram.set(initialDiagram); + }); + + var diagramDescription = this.givenDiagramDescription.getDiagramDescription(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); + var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); + var parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); + String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartDefinition()), "New Part"); + + Runnable createPartUsage = () -> this.toolTester.invokeTool(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + diagram, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, + creationToolId); + + Consumer checkCompartments = assertRefreshedDiagramThat(diagramRefreshed -> { + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("interconnection") + .hasCompartmentCount(12) + .hasNodeDescriptionName(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage())) + .isRevealed() + .check(diagram.get(), diagramRefreshed); + + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("parts") + .hasCompartmentCount(0) + .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(parentEClass, SysmlPackage.eINSTANCE.getDefinition_OwnedPart())) + .isHidden() + .check(diagram.get(), diagramRefreshed); + }); + + Runnable semanticCheck = semanticCheckerService.checkElement(PartDefinition.class, () -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, partDefinition -> { + assertThat(EMFUtils.allContainedObjectOfType(partDefinition, PartUsage.class).count()).isEqualTo(1); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(createPartUsage) + .consumeNextWith(checkCompartments) + .then(semanticCheck) + .thenCancel() + .verify(Duration.ofSeconds(10)); + } + + @DisplayName("GIVEN an IV diagram with a PartDefinition with the 'parts' compartment revealed, WHEN using the tool to create a PartUsage from the PartDefinition, THEN only the 'parts' compartment is visible and it contains the created PartUsage") + @GivenSysONServer({ InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SCRIPT_PATH }) + @Test + public void testWithPartsCompartmentDisplayed() { + SemanticCheckerService semanticCheckerService = new SemanticCheckerService(this.semanticRunnableFactory, this.objectSearchService, InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID); + var flux = this.givenSubscriptionToDiagram(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.GraphicalIds.PARTS_COMPARTMENT_DISPLAYED_DIAGRAM_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(initialDiagram -> { + var initialPartDefinition = initialDiagram.getNodes() + .stream() + .filter(node -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID.equals(node.getTargetObjectId())) + .findFirst(); + + assertThat(initialPartDefinition).isPresent(); + assertThat(initialPartDefinition.get().getChildNodes()) + .allMatch(node -> { + if ("parts".equals(node.getInsideLabel().getText())) { + return node.getState().equals(ViewModifier.Normal); + } else { + return node.getState().equals(ViewModifier.Hidden); + } + }); + + diagram.set(initialDiagram); + }); + + var diagramDescription = this.givenDiagramDescription.getDiagramDescription(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); + var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); + var parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); + String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartDefinition()), "New Part"); + + Runnable createPartUsage = () -> this.toolTester.invokeTool(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + diagram, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, + creationToolId); + + Consumer checkCompartments = assertRefreshedDiagramThat(diagramRefreshed -> { + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("interconnection") + .hasCompartmentCount(12) + .hasNodeDescriptionName(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage())) + .isHidden() + .check(diagram.get(), diagramRefreshed); + + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("parts") + .hasCompartmentCount(0) + .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(parentEClass, SysmlPackage.eINSTANCE.getDefinition_OwnedPart())) + .isRevealed() + .check(diagram.get(), diagramRefreshed); + }); + + Runnable semanticCheck = semanticCheckerService.checkElement(PartDefinition.class, () -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, partDefinition -> { + assertThat(EMFUtils.allContainedObjectOfType(partDefinition, PartUsage.class).count()).isEqualTo(1); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(createPartUsage) + .consumeNextWith(checkCompartments) + .then(semanticCheck) + .thenCancel() + .verify(Duration.ofSeconds(10)); + } + + @DisplayName("GIVEN an IV diagram with a PartDefinition with both the 'parts' and 'interconnection' compartments revealed, WHEN using the tool to create a PartUsage from the PartDefinition, THEN both compartments are visible and they both contains the created PartUsage") + @GivenSysONServer({ InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SCRIPT_PATH }) + @Test + public void testWithInterconnectionAndPartsCompartmentsDisplayed() { + SemanticCheckerService semanticCheckerService = new SemanticCheckerService(this.semanticRunnableFactory, this.objectSearchService, InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID); + var flux = this.givenSubscriptionToDiagram(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.GraphicalIds.INTERCONNECTION_AND_PARTS_COMPARTMENTS_DISPLAYED_DIAGRAM_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(initialDiagram -> { + var initialPartDefinition = initialDiagram.getNodes() + .stream() + .filter(node -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID.equals(node.getTargetObjectId())) + .findFirst(); + + assertThat(initialPartDefinition).isPresent(); + assertThat(initialPartDefinition.get().getChildNodes()) + .allMatch(node -> { + var compartmentLabel = node.getInsideLabel().getText(); + if ("parts".equals(compartmentLabel) || "interconnection".equals(compartmentLabel)) { + return node.getState().equals(ViewModifier.Normal); + } else { + return node.getState().equals(ViewModifier.Hidden); + } + }); + + diagram.set(initialDiagram); + }); + + var diagramDescription = this.givenDiagramDescription.getDiagramDescription(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + SysONRepresentationDescriptionIdentifiers.GENERAL_VIEW_DIAGRAM_DESCRIPTION_ID); + var diagramDescriptionIdProvider = new DiagramDescriptionIdProvider(diagramDescription, this.diagramIdProvider); + var parentEClass = SysmlPackage.eINSTANCE.getPartDefinition(); + String creationToolId = diagramDescriptionIdProvider.getNodeToolId(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartDefinition()), "New Part"); + + Runnable createPartUsage = () -> this.toolTester.invokeTool(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.EDITING_CONTEXT_ID, + diagram, + InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, + creationToolId); + + Consumer checkCompartments = assertRefreshedDiagramThat(diagramRefreshed -> { + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("interconnection") + .hasCompartmentCount(12) + .hasNodeDescriptionName(this.descriptionNameGenerator.getNodeName(SysmlPackage.eINSTANCE.getPartUsage())) + .isRevealed() + .check(diagram.get(), diagramRefreshed); + + new CheckNodeInCompartment(diagramDescriptionIdProvider, this.diagramComparator) + .withTargetObjectId(InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID) + .withCompartmentName("parts") + .hasCompartmentCount(0) + .hasNodeDescriptionName(this.descriptionNameGenerator.getCompartmentItemName(parentEClass, SysmlPackage.eINSTANCE.getDefinition_OwnedPart())) + .isRevealed() + .check(diagram.get(), diagramRefreshed); + }); + + Runnable semanticCheck = semanticCheckerService.checkElement(PartDefinition.class, () -> InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.SemanticIds.PART_DEFINITION_ROOT_ELEMENT_ID, partDefinition -> { + assertThat(EMFUtils.allContainedObjectOfType(partDefinition, PartUsage.class).count()).isEqualTo(1); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(createPartUsage) + .consumeNextWith(checkCompartments) + .then(semanticCheck) + .thenCancel() + .verify(Duration.ofSeconds(10)); + } +} diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.java new file mode 100644 index 000000000..de92499f0 --- /dev/null +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/InterconnectionViewPartDefinitionCompartmentRevealTestProjectData.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.data; + +/** + * Identifiers for the "InterconnectionView-PartDefinitionCompartmentReveal" project. + * + * @author gcoutable + */ +public class InterconnectionViewPartDefinitionCompartmentRevealTestProjectData { + + public static final String SCRIPT_PATH = "/scripts/database-content/InterconnectionView-PartDefinitionCompartmentReveal.sql"; + + public static final String EDITING_CONTEXT_ID = "948dcefc-5634-47fa-98c1-abbe8c6cf055"; + + /** + * Ids for the semantic elements. + */ + public static class SemanticIds { + + public static final String PART_DEFINITION_ROOT_ELEMENT_ID = "f96dd250-f71d-4b3d-baea-b5c49fd95584"; + } + + /** + * Ids for the graphical elements. + */ + public static class GraphicalIds { + + public static final String NO_COMPARTMENT_DISPLAYED_DIAGRAM_ID = "c87cdd29-8133-4c6e-a79e-f6aea86722ac"; + + public static final String INTERCONNECTION_COMPARTMENT_DISPLAYED_DIAGRAM_ID = "b8cbc8a4-ceaf-40f4-a608-8531eb9bde24"; + + public static final String PARTS_COMPARTMENT_DISPLAYED_DIAGRAM_ID = "dc72ae4d-0b97-4b7d-99ea-269a734cc8c9"; + + public static final String INTERCONNECTION_AND_PARTS_COMPARTMENTS_DISPLAYED_DIAGRAM_ID = "d518b19f-9fd9-40ac-9c0a-b35a2c4575c9"; + } +} diff --git a/backend/application/syson-application/src/test/resources/scripts/database-content/InterconnectionView-PartDefinitionCompartmentReveal.sql b/backend/application/syson-application/src/test/resources/scripts/database-content/InterconnectionView-PartDefinitionCompartmentReveal.sql new file mode 100644 index 000000000..b451c350d --- /dev/null +++ b/backend/application/syson-application/src/test/resources/scripts/database-content/InterconnectionView-PartDefinitionCompartmentReveal.sql @@ -0,0 +1,106 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.5 (Debian 17.5-1.pgdg120+1) +-- Dumped by pg_dump version 17.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Data for Name: semantic_data; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.semantic_data (id, created_on, last_modified_on) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055', '2024-10-21 15:33:48.430895+00', '2025-08-13 08:03:58.715802+00'); + + +-- +-- Data for Name: document; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.document (id, semantic_data_id, name, content, is_read_only, created_on, last_modified_on) VALUES ('3df7a6d4-5b54-425e-bdf3-2b30c8907c03', '948dcefc-5634-47fa-98c1-abbe8c6cf055', 'SysMLv2.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"none","migrationVersion":"2026.3.0-202602231556"},"content":[{"id":"9160ff0a-c37a-4522-9715-971af6b769b1","eClass":"sysml:Namespace","data":{"elementId":"947f2562-d14c-47dc-9410-37e76987c488","ownedRelationship":[{"id":"f19f939b-a2ea-4033-ac1e-383a3f49b1e9","eClass":"sysml:OwningMembership","data":{"elementId":"323177bf-756b-4d5c-8bba-feec507a1667","ownedRelatedElement":[{"id":"6da34ea5-36f1-4f92-a30c-8e14ab52bcb7","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"ef298e90-b9d0-459d-aab4-c1bfe91366cf","ownedRelationship":[{"id":"cfb7e195-8cd7-4594-a23f-618c7d297a89","eClass":"sysml:OwningMembership","data":{"elementId":"43275892-8afd-4bc8-aeec-f64e5b1fce3d","ownedRelatedElement":[{"id":"cf618348-0d8c-4478-a209-6387a40fdaeb","eClass":"sysml:ViewUsage","data":{"declaredName":"InterconnectionView-NoCompartmentDisplayed","elementId":"dd7f39e0-63c3-48f3-92ae-55378aaae58e","ownedRelationship":[{"id":"e17f9c0c-7ff3-4232-962a-302746c1215e","eClass":"sysml:FeatureTyping","data":{"elementId":"df7ccc82-6bd4-49b2-8a27-2f81ae1271f4","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"cf618348-0d8c-4478-a209-6387a40fdaeb"}},{"id":"0fe6bba4-5394-41d4-a5d6-2e0d56458319","eClass":"sysml:MembershipExpose","data":{"elementId":"9d1823fb-3a65-43da-a410-e4433f876241","isImportAll":true,"visibility":"protected","importedMembership":"94723bb6-1f62-4a2d-9859-aa921efa8da1"}}]}}]}},{"id":"aea96d3a-27cc-4fdd-a775-8f55ea489a2a","eClass":"sysml:OwningMembership","data":{"elementId":"3eedc071-cb4c-409b-8b0d-daab79a3f195","ownedRelatedElement":[{"id":"0bb349ff-7fa4-4062-a5fd-df9260cb2c5f","eClass":"sysml:ViewUsage","data":{"declaredName":"InterconnectionView-InterconnectionCompartmentDisplayed","elementId":"2de4cbb6-26d6-4824-bbaf-44aad3daf9f9","ownedRelationship":[{"id":"054650fa-dce5-466c-a4c4-1cc76131fd06","eClass":"sysml:FeatureTyping","data":{"elementId":"eb550345-4932-49a6-9d29-e503361415e2","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"0bb349ff-7fa4-4062-a5fd-df9260cb2c5f"}},{"id":"33a3fb99-ad0c-421b-8dd9-e8f20756ba06","eClass":"sysml:MembershipExpose","data":{"elementId":"344cdbf2-8116-4fd8-baf7-4b75eb8aa137","isImportAll":true,"visibility":"protected","importedMembership":"94723bb6-1f62-4a2d-9859-aa921efa8da1"}}]}}]}},{"id":"379fe14f-7480-4f87-a1d3-07f4e85218ed","eClass":"sysml:OwningMembership","data":{"elementId":"2412804f-2e3c-42ad-a313-f582c54e0a20","ownedRelatedElement":[{"id":"3c95652d-9c9a-4e04-8b4e-b17e3bcf6180","eClass":"sysml:ViewUsage","data":{"declaredName":"InterconnectionView-PartsCompartmentDisplayed","elementId":"9756a38c-a283-46aa-8072-050373d30938","ownedRelationship":[{"id":"b01e16c4-6890-4238-a602-2db946fe898e","eClass":"sysml:FeatureTyping","data":{"elementId":"227b8a7d-b342-409a-9f6c-9074d1aeb14f","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"3c95652d-9c9a-4e04-8b4e-b17e3bcf6180"}},{"id":"75f6c029-b0d9-4a50-93e6-5e2b932a3a3e","eClass":"sysml:MembershipExpose","data":{"elementId":"aa7cf3d1-62b5-44de-9598-b1783cd580a6","isImportAll":true,"visibility":"protected","importedMembership":"94723bb6-1f62-4a2d-9859-aa921efa8da1"}}]}}]}},{"id":"3dc3960e-ee38-4c0c-9995-121a7d4afd2c","eClass":"sysml:OwningMembership","data":{"elementId":"d35ff9d8-065f-4a73-b033-02d9cc614bbb","ownedRelatedElement":[{"id":"4a1a191c-7b60-425c-89e4-ba0ac686277e","eClass":"sysml:ViewUsage","data":{"declaredName":"InterconnectionView-InterconnectionAndPartsCompartmentsDisplayed","elementId":"bdc5d732-ba62-48f0-bd68-a459e84ea550","ownedRelationship":[{"id":"f3fbfb08-f9c9-4a0a-a69c-22cd601ef952","eClass":"sysml:FeatureTyping","data":{"elementId":"d53cabb1-533b-42f9-acc5-39247098d853","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"4a1a191c-7b60-425c-89e4-ba0ac686277e"}},{"id":"7e92055c-e021-49c0-87ce-feeeef65cab1","eClass":"sysml:MembershipExpose","data":{"elementId":"46a4ad06-fd10-4433-9c93-1642d1473be2","isImportAll":true,"visibility":"protected","importedMembership":"94723bb6-1f62-4a2d-9859-aa921efa8da1"}}]}}]}},{"id":"94723bb6-1f62-4a2d-9859-aa921efa8da1","eClass":"sysml:OwningMembership","data":{"elementId":"04cd5fab-b7c6-4135-ad6c-9112685c6fa1","ownedRelatedElement":[{"id":"f96dd250-f71d-4b3d-baea-b5c49fd95584","eClass":"sysml:PartDefinition","data":{"declaredName":"PartDefinition1","elementId":"bf1223d3-457d-49c4-ad67-3ae82ffdeed6"}}]}}]}}]}}]}}]}', false, '2025-08-13 08:03:58.71575+00', '2025-08-13 08:03:58.71575+00'); + + +-- +-- Data for Name: image; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: library; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.project (id, name, created_on, last_modified_on) VALUES ('85ffbedf-e8bf-4e25-b755-ec1a1d21420a', 'InterconnectionView-PartDefinitionCompartmentReveal', '2024-10-21 15:33:48.12165+00', '2024-10-21 15:34:51.199351+00'); + + +-- +-- Data for Name: nature; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project_image; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project_semantic_data; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.project_semantic_data (id, project_id, semantic_data_id, name, created_on, last_modified_on) VALUES ('ab92c246-4ec5-438a-b035-8f6bfa3b4ad3', '85ffbedf-e8bf-4e25-b755-ec1a1d21420a', '948dcefc-5634-47fa-98c1-abbe8c6cf055', 'main', '2024-10-21 15:33:48.430895+00', '2024-10-21 15:35:43.573574+00'); + + +-- +-- Data for Name: representation_metadata; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.representation_metadata (id, representation_metadata_id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#c87cdd29-8133-4c6e-a79e-f6aea86722ac', 'c87cdd29-8133-4c6e-a79e-f6aea86722ac', 'cf618348-0d8c-4478-a209-6387a40fdaeb', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'InterconnectionView-NoCompartmentDisplayed', 'siriusComponents://representation?type=Diagram', '2025-05-12 08:53:49.088517+00', '2025-08-13 08:03:34.080425+00', '', '948dcefc-5634-47fa-98c1-abbe8c6cf055'); +INSERT INTO public.representation_metadata (id, representation_metadata_id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#b8cbc8a4-ceaf-40f4-a608-8531eb9bde24', 'b8cbc8a4-ceaf-40f4-a608-8531eb9bde24', '0bb349ff-7fa4-4062-a5fd-df9260cb2c5f', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'InterconnectionView-InterconnectionCompartmentDisplayed', 'siriusComponents://representation?type=Diagram', '2025-05-12 08:53:49.088517+00', '2025-08-13 08:03:34.080425+00', '', '948dcefc-5634-47fa-98c1-abbe8c6cf055'); +INSERT INTO public.representation_metadata (id, representation_metadata_id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#dc72ae4d-0b97-4b7d-99ea-269a734cc8c9', 'dc72ae4d-0b97-4b7d-99ea-269a734cc8c9', '3c95652d-9c9a-4e04-8b4e-b17e3bcf6180', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'InterconnectionView-PartsCompartmentDisplayed', 'siriusComponents://representation?type=Diagram', '2025-05-12 08:53:49.088517+00', '2025-08-13 08:03:34.080425+00', '', '948dcefc-5634-47fa-98c1-abbe8c6cf055'); +INSERT INTO public.representation_metadata (id, representation_metadata_id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#d518b19f-9fd9-40ac-9c0a-b35a2c4575c9', 'd518b19f-9fd9-40ac-9c0a-b35a2c4575c9', '4a1a191c-7b60-425c-89e4-ba0ac686277e', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'InterconnectionView-InterconnectionAndPartsCompartmentsDisplayed', 'siriusComponents://representation?type=Diagram', '2025-05-12 08:53:49.088517+00', '2025-08-13 08:03:34.080425+00', '', '948dcefc-5634-47fa-98c1-abbe8c6cf055'); + + +-- +-- Data for Name: representation_content; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.representation_content (id, representation_metadata_id, semantic_data_id, content, last_migration_performed, migration_version, created_on, last_modified_on) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#c87cdd29-8133-4c6e-a79e-f6aea86722ac', 'c87cdd29-8133-4c6e-a79e-f6aea86722ac', '948dcefc-5634-47fa-98c1-abbe8c6cf055', '{"id":"c87cdd29-8133-4c6e-a79e-f6aea86722ac","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"cf618348-0d8c-4478-a209-6387a40fdaeb","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"25a7e860-9863-353b-91e5-2d30f48f101a","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=52de5719-4873-3c76-8e5b-8d94900d4b7f","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"2a62c484-141c-3d99-ad64-5fa97d689d99","text":"«part def»\nPartDefinition1","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartDefinition.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"e8ce7602-be19-3b3a-8119-4266c7a091ba","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=32da1a41-7187-3da3-ae52-f3cfc927b133","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"61fa4163-a3d1-36f1-86f5-0db9b0fa3d8e","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"537238f2-0cb9-38f6-988e-a5d219055863","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=1d4e3253-3981-3d8a-9887-b887114e3a3e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2eccfddf-a4f4-3cdc-98aa-4ebc976e2432","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"13fd4871-9e5a-34fe-8285-e416e7ba5bf2","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a677fbe5-68e8-3949-beab-d96b632c4cc0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"28c17491-5af4-3f5f-afcf-b5b8fadabe30","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"4000b761-e0a6-33ae-bfad-0873e241cfb4","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=d1db77ad-fee0-3c33-bfe1-db84f9fbd027","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"172735bc-fd4c-33c8-8e26-8dd915fd3b40","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"136684ce-75e9-33db-bcf9-3ec692cb3256","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=9777340c-1189-3b0c-a56c-be11ea9f7a9e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"937b2685-c7d5-37c6-986d-80f6bb08116e","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"3fc4951d-f525-3efa-97b4-eb5611b25d10","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"07d4dad6-10a1-3347-aa26-a24761d7fed6","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"f50e31b5-933c-3e73-b8f5-271a3b2b7d1a","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"ca43a88d-3338-3e1e-88b0-a70133adc1a8","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"0533d578-b64f-3c8f-a388-18320c326bc6","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ba122573-ae0d-378c-9949-7622f6057511","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2e426c86-7336-31fa-ad2b-f7e64bed2f98","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"a205ea2d-42fe-335c-bb84-17d285db78c6","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cbf68c65-4d8f-32ca-ac84-92fec0dbb646","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"c804f814-7d78-38f3-aa33-6a632f5fef13","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"f48d0b33-e41b-3f3f-a276-678f73e4841d","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=3868c242-24f7-3a1d-956f-21bd7488b2b6","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"9b324930-13c5-32df-8a46-c33816394204","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"32b00324-a697-32af-a26d-dcd33db9b513","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"06e1e7df-d836-3785-8d73-66f0c133e66f","text":"interconnection","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"e9df5304-1c53-3762-980c-acbb9c23eca6","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=29c432fc-0cf3-3758-aa94-cedab4551f5d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"98e62a64-663a-3aed-ad98-5f24c0586c4b","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]}],"defaultWidth":208,"defaultHeight":70,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[]}],"edges":[],"layoutData":{"nodeLayoutData":{"e9df5304-1c53-3762-980c-acbb9c23eca6":{"id":"e9df5304-1c53-3762-980c-acbb9c23eca6","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"0533d578-b64f-3c8f-a388-18320c326bc6":{"id":"0533d578-b64f-3c8f-a388-18320c326bc6","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"25a7e860-9863-353b-91e5-2d30f48f101a":{"id":"25a7e860-9863-353b-91e5-2d30f48f101a","position":{"x":214.66320367907798,"y":-116.1957557624113},"size":{"width":208,"height":70},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":2,"height":52}},"a205ea2d-42fe-335c-bb84-17d285db78c6":{"id":"a205ea2d-42fe-335c-bb84-17d285db78c6","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"f50e31b5-933c-3e73-b8f5-271a3b2b7d1a":{"id":"f50e31b5-933c-3e73-b8f5-271a3b2b7d1a","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"e8ce7602-be19-3b3a-8119-4266c7a091ba":{"id":"e8ce7602-be19-3b3a-8119-4266c7a091ba","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"3fc4951d-f525-3efa-97b4-eb5611b25d10":{"id":"3fc4951d-f525-3efa-97b4-eb5611b25d10","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"537238f2-0cb9-38f6-988e-a5d219055863":{"id":"537238f2-0cb9-38f6-988e-a5d219055863","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"f48d0b33-e41b-3f3f-a276-678f73e4841d":{"id":"f48d0b33-e41b-3f3f-a276-678f73e4841d","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"32b00324-a697-32af-a26d-dcd33db9b513":{"id":"32b00324-a697-32af-a26d-dcd33db9b513","position":{"x":1,"y":52},"size":{"width":206,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":118.5625,"height":34}},"136684ce-75e9-33db-bcf9-3ec692cb3256":{"id":"136684ce-75e9-33db-bcf9-3ec692cb3256","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"4000b761-e0a6-33ae-bfad-0873e241cfb4":{"id":"4000b761-e0a6-33ae-bfad-0873e241cfb4","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"13fd4871-9e5a-34fe-8285-e416e7ba5bf2":{"id":"13fd4871-9e5a-34fe-8285-e416e7ba5bf2","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}}},"edgeLayoutData":{},"labelLayoutData":{"06e1e7df-d836-3785-8d73-66f0c133e66f":{"id":"06e1e7df-d836-3785-8d73-66f0c133e66f","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"ca43a88d-3338-3e1e-88b0-a70133adc1a8":{"id":"ca43a88d-3338-3e1e-88b0-a70133adc1a8","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"28c17491-5af4-3f5f-afcf-b5b8fadabe30":{"id":"28c17491-5af4-3f5f-afcf-b5b8fadabe30","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"9b324930-13c5-32df-8a46-c33816394204":{"id":"9b324930-13c5-32df-8a46-c33816394204","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"2eccfddf-a4f4-3cdc-98aa-4ebc976e2432":{"id":"2eccfddf-a4f4-3cdc-98aa-4ebc976e2432","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"07d4dad6-10a1-3347-aa26-a24761d7fed6":{"id":"07d4dad6-10a1-3347-aa26-a24761d7fed6","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"2a62c484-141c-3d99-ad64-5fa97d689d99":{"id":"2a62c484-141c-3d99-ad64-5fa97d689d99","position":{"x":0,"y":0},"size":{"width":151.5625,"height":50},"resizedByUser":false,"movedByUser":false},"172735bc-fd4c-33c8-8e26-8dd915fd3b40":{"id":"172735bc-fd4c-33c8-8e26-8dd915fd3b40","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"98e62a64-663a-3aed-ad98-5f24c0586c4b":{"id":"98e62a64-663a-3aed-ad98-5f24c0586c4b","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"2e426c86-7336-31fa-ad2b-f7e64bed2f98":{"id":"2e426c86-7336-31fa-ad2b-f7e64bed2f98","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"937b2685-c7d5-37c6-986d-80f6bb08116e":{"id":"937b2685-c7d5-37c6-986d-80f6bb08116e","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"c804f814-7d78-38f3-aa33-6a632f5fef13":{"id":"c804f814-7d78-38f3-aa33-6a632f5fef13","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"61fa4163-a3d1-36f1-86f5-0db9b0fa3d8e":{"id":"61fa4163-a3d1-36f1-86f5-0db9b0fa3d8e","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false}}}}', 'DiagramMinComputedSizeMigrationParticipant', '2025.8.0-202506301700', '2025-05-12 08:53:49.209902+00', '2025-08-13 08:03:58.75106+00'); +INSERT INTO public.representation_content (id, representation_metadata_id, semantic_data_id, content, last_migration_performed, migration_version, created_on, last_modified_on) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#b8cbc8a4-ceaf-40f4-a608-8531eb9bde24', 'b8cbc8a4-ceaf-40f4-a608-8531eb9bde24', '948dcefc-5634-47fa-98c1-abbe8c6cf055', '{"id":"b8cbc8a4-ceaf-40f4-a608-8531eb9bde24","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"0bb349ff-7fa4-4062-a5fd-df9260cb2c5f","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"443e9a71-7b10-3203-ac25-9f7c512e7bd0","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=52de5719-4873-3c76-8e5b-8d94900d4b7f","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"86eebbf5-373a-3e32-b035-526361a7e83b","text":"«part def»\nPartDefinition1","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartDefinition.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"62dbe2a0-dbf4-3ed6-84da-b5172264792d","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=32da1a41-7187-3da3-ae52-f3cfc927b133","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"d10fb528-e87a-33ca-b6d0-88f144ca87a3","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"d40c034b-5be6-32aa-812c-8bf0be7f2cbc","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=1d4e3253-3981-3d8a-9887-b887114e3a3e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"b884f50c-f898-34a6-ad42-93a5c8ef6c23","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"5dbca18a-4625-3419-93f0-c76cebf6bb70","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a677fbe5-68e8-3949-beab-d96b632c4cc0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"c638aab1-b980-33dd-a63f-e66a6f7ea6c2","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"24dbd577-96e4-35ba-ba2e-f37d8e496cee","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=d1db77ad-fee0-3c33-bfe1-db84f9fbd027","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"7f92790b-a6d5-3feb-84c0-655356322e69","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"0cb9a3fd-444d-326a-b2e6-84fce4c32985","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=9777340c-1189-3b0c-a56c-be11ea9f7a9e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"94063f3f-85f5-3221-ab19-ee8ba5ca9634","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"46796887-17fa-36fb-881c-8dd8f8f95c59","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"751e7448-27aa-3bb6-947f-5b064534e098","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"295d9f94-7699-3376-b61f-5a02c689cb8b","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2c2968c6-3018-3377-b515-c596ff189b94","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"22db1171-b416-34f0-bca2-8fdd7b3c8a3a","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ba122573-ae0d-378c-9949-7622f6057511","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"ae2e3647-ae66-3b87-8883-cfedf79c4b96","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"d9a1098e-1652-35da-b05b-f72c84adfe8e","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cbf68c65-4d8f-32ca-ac84-92fec0dbb646","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"69217737-fb44-34cd-8f7b-e5d338d88058","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"ae63e2bf-f7fd-3af4-a89e-872fc3c631c6","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=3868c242-24f7-3a1d-956f-21bd7488b2b6","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5ca69db8-7932-36a0-9830-bc2e3496a5eb","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"da99a244-90ae-3ffc-b07c-f89b0dd5c877","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"b47e47f0-c0d0-3af8-a884-865be1ea3f61","text":"interconnection","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"21785127-93cc-3e30-9ad1-d8f82a0c4ac4","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=29c432fc-0cf3-3758-aa94-cedab4551f5d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"3b3fee4f-fb3a-35bc-935a-500f5ddfa2b7","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]}],"defaultWidth":208,"defaultHeight":70,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[]}],"edges":[],"layoutData":{"nodeLayoutData":{"295d9f94-7699-3376-b61f-5a02c689cb8b":{"id":"295d9f94-7699-3376-b61f-5a02c689cb8b","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"d40c034b-5be6-32aa-812c-8bf0be7f2cbc":{"id":"d40c034b-5be6-32aa-812c-8bf0be7f2cbc","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"46796887-17fa-36fb-881c-8dd8f8f95c59":{"id":"46796887-17fa-36fb-881c-8dd8f8f95c59","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"443e9a71-7b10-3203-ac25-9f7c512e7bd0":{"id":"443e9a71-7b10-3203-ac25-9f7c512e7bd0","position":{"x":244.76249445921982,"y":-97.38369902482265},"size":{"width":208,"height":203},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":120.5625,"height":203}},"21785127-93cc-3e30-9ad1-d8f82a0c4ac4":{"id":"21785127-93cc-3e30-9ad1-d8f82a0c4ac4","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"5dbca18a-4625-3419-93f0-c76cebf6bb70":{"id":"5dbca18a-4625-3419-93f0-c76cebf6bb70","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"62dbe2a0-dbf4-3ed6-84da-b5172264792d":{"id":"62dbe2a0-dbf4-3ed6-84da-b5172264792d","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"d9a1098e-1652-35da-b05b-f72c84adfe8e":{"id":"d9a1098e-1652-35da-b05b-f72c84adfe8e","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"24dbd577-96e4-35ba-ba2e-f37d8e496cee":{"id":"24dbd577-96e4-35ba-ba2e-f37d8e496cee","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"ae63e2bf-f7fd-3af4-a89e-872fc3c631c6":{"id":"ae63e2bf-f7fd-3af4-a89e-872fc3c631c6","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"22db1171-b416-34f0-bca2-8fdd7b3c8a3a":{"id":"22db1171-b416-34f0-bca2-8fdd7b3c8a3a","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"da99a244-90ae-3ffc-b07c-f89b0dd5c877":{"id":"da99a244-90ae-3ffc-b07c-f89b0dd5c877","position":{"x":1,"y":52},"size":{"width":206,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":118.5625,"height":34}},"0cb9a3fd-444d-326a-b2e6-84fce4c32985":{"id":"0cb9a3fd-444d-326a-b2e6-84fce4c32985","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}}},"edgeLayoutData":{},"labelLayoutData":{"751e7448-27aa-3bb6-947f-5b064534e098":{"id":"751e7448-27aa-3bb6-947f-5b064534e098","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"94063f3f-85f5-3221-ab19-ee8ba5ca9634":{"id":"94063f3f-85f5-3221-ab19-ee8ba5ca9634","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"69217737-fb44-34cd-8f7b-e5d338d88058":{"id":"69217737-fb44-34cd-8f7b-e5d338d88058","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"2c2968c6-3018-3377-b515-c596ff189b94":{"id":"2c2968c6-3018-3377-b515-c596ff189b94","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"b47e47f0-c0d0-3af8-a884-865be1ea3f61":{"id":"b47e47f0-c0d0-3af8-a884-865be1ea3f61","position":{"x":0,"y":0},"size":{"width":114.5625,"height":30},"resizedByUser":false,"movedByUser":false},"5ca69db8-7932-36a0-9830-bc2e3496a5eb":{"id":"5ca69db8-7932-36a0-9830-bc2e3496a5eb","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"d10fb528-e87a-33ca-b6d0-88f144ca87a3":{"id":"d10fb528-e87a-33ca-b6d0-88f144ca87a3","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"3b3fee4f-fb3a-35bc-935a-500f5ddfa2b7":{"id":"3b3fee4f-fb3a-35bc-935a-500f5ddfa2b7","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"ae2e3647-ae66-3b87-8883-cfedf79c4b96":{"id":"ae2e3647-ae66-3b87-8883-cfedf79c4b96","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"c638aab1-b980-33dd-a63f-e66a6f7ea6c2":{"id":"c638aab1-b980-33dd-a63f-e66a6f7ea6c2","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"86eebbf5-373a-3e32-b035-526361a7e83b":{"id":"86eebbf5-373a-3e32-b035-526361a7e83b","position":{"x":0,"y":0},"size":{"width":151.5625,"height":51},"resizedByUser":false,"movedByUser":false},"7f92790b-a6d5-3feb-84c0-655356322e69":{"id":"7f92790b-a6d5-3feb-84c0-655356322e69","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"b884f50c-f898-34a6-ad42-93a5c8ef6c23":{"id":"b884f50c-f898-34a6-ad42-93a5c8ef6c23","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false}}}}', 'DiagramMinComputedSizeMigrationParticipant', '2025.8.0-202506301700', '2025-05-12 08:53:49.209902+00', '2025-08-13 08:03:58.75106+00'); +INSERT INTO public.representation_content (id, representation_metadata_id, semantic_data_id, content, last_migration_performed, migration_version, created_on, last_modified_on) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#dc72ae4d-0b97-4b7d-99ea-269a734cc8c9', 'dc72ae4d-0b97-4b7d-99ea-269a734cc8c9', '948dcefc-5634-47fa-98c1-abbe8c6cf055', '{"id":"dc72ae4d-0b97-4b7d-99ea-269a734cc8c9","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"3c95652d-9c9a-4e04-8b4e-b17e3bcf6180","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"47b1fc8b-82f4-3b21-99af-3cd4815994f3","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=52de5719-4873-3c76-8e5b-8d94900d4b7f","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"fee7d9f4-795a-39a6-85c7-6b752f8b2838","text":"«part def»\nPartDefinition1","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartDefinition.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"59d6a64e-5f46-3de3-a007-d7fe20760138","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=32da1a41-7187-3da3-ae52-f3cfc927b133","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"32d5c36f-b0d1-3101-9c9b-85b2b93eebe6","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"4f76e440-d713-3954-8ec2-13328168db90","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=1d4e3253-3981-3d8a-9887-b887114e3a3e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"1443dbc7-6d8b-3328-a263-27ac16cfb1b0","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"6e65c733-77c5-3578-89ec-8d9b343b4d1e","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a677fbe5-68e8-3949-beab-d96b632c4cc0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"51e14800-642a-3f5b-b6a9-669900842b4f","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"f3b661b9-18c6-3dfd-b3df-2d5c6719ae92","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=d1db77ad-fee0-3c33-bfe1-db84f9fbd027","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"4246deba-6ba4-3ed5-aec7-79b47919e95a","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"297cf2b9-48de-3d4b-b454-f9b42a3c0ff0","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=9777340c-1189-3b0c-a56c-be11ea9f7a9e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"b6a8f5bd-55de-33d1-a839-484fa879d3ea","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"b440c6af-eaf2-3a05-a1cc-94ba3337c8bc","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"f5587850-30a9-39c8-8988-b84ed1c49cd1","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"2d78a3b9-e37a-35ce-8417-b837ebc9c70f","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"e7d6232c-1139-36eb-a8a4-e2c5d48694ab","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"f978aed1-56d4-3340-af96-7960ee89b391","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ba122573-ae0d-378c-9949-7622f6057511","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"c2d485d1-4d10-3ec0-b557-dd17572244c5","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"3240175b-ab08-3481-9c47-17dab5ff81f8","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cbf68c65-4d8f-32ca-ac84-92fec0dbb646","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"3d5862c1-b769-3632-b770-4e433d5f2445","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"c43a6ef0-32b4-35cc-aa22-b9d9b6b9b3f9","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=3868c242-24f7-3a1d-956f-21bd7488b2b6","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"20e687e0-e276-3411-8bf2-bec58a64dbb3","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"b4c18123-aafa-3ddc-81d3-adfcc0c7e7a1","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"46fc144a-9f3c-3d18-8241-53017a61b22c","text":"interconnection","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"826e2f61-de6f-3b69-a2e5-2f6af0c420d8","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=29c432fc-0cf3-3758-aa94-cedab4551f5d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2889550b-6966-3626-a686-752cd0dec0ec","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]}],"defaultWidth":208,"defaultHeight":70,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[]}],"edges":[],"layoutData":{"nodeLayoutData":{"f3b661b9-18c6-3dfd-b3df-2d5c6719ae92":{"id":"f3b661b9-18c6-3dfd-b3df-2d5c6719ae92","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"4f76e440-d713-3954-8ec2-13328168db90":{"id":"4f76e440-d713-3954-8ec2-13328168db90","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"47b1fc8b-82f4-3b21-99af-3cd4815994f3":{"id":"47b1fc8b-82f4-3b21-99af-3cd4815994f3","position":{"x":295.5550476507092,"y":-121.83937278368789},"size":{"width":208,"height":113},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":61.578125,"height":113}},"826e2f61-de6f-3b69-a2e5-2f6af0c420d8":{"id":"826e2f61-de6f-3b69-a2e5-2f6af0c420d8","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"297cf2b9-48de-3d4b-b454-f9b42a3c0ff0":{"id":"297cf2b9-48de-3d4b-b454-f9b42a3c0ff0","position":{"x":1,"y":52},"size":{"width":206,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":59.578125,"height":30}},"6e65c733-77c5-3578-89ec-8d9b343b4d1e":{"id":"6e65c733-77c5-3578-89ec-8d9b343b4d1e","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"c43a6ef0-32b4-35cc-aa22-b9d9b6b9b3f9":{"id":"c43a6ef0-32b4-35cc-aa22-b9d9b6b9b3f9","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"2d78a3b9-e37a-35ce-8417-b837ebc9c70f":{"id":"2d78a3b9-e37a-35ce-8417-b837ebc9c70f","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"b440c6af-eaf2-3a05-a1cc-94ba3337c8bc":{"id":"b440c6af-eaf2-3a05-a1cc-94ba3337c8bc","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"59d6a64e-5f46-3de3-a007-d7fe20760138":{"id":"59d6a64e-5f46-3de3-a007-d7fe20760138","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"f978aed1-56d4-3340-af96-7960ee89b391":{"id":"f978aed1-56d4-3340-af96-7960ee89b391","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"b4c18123-aafa-3ddc-81d3-adfcc0c7e7a1":{"id":"b4c18123-aafa-3ddc-81d3-adfcc0c7e7a1","position":{"x":1,"y":52},"size":{"width":206,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":118.5625,"height":34}},"3240175b-ab08-3481-9c47-17dab5ff81f8":{"id":"3240175b-ab08-3481-9c47-17dab5ff81f8","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}}},"edgeLayoutData":{},"labelLayoutData":{"f5587850-30a9-39c8-8988-b84ed1c49cd1":{"id":"f5587850-30a9-39c8-8988-b84ed1c49cd1","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"46fc144a-9f3c-3d18-8241-53017a61b22c":{"id":"46fc144a-9f3c-3d18-8241-53017a61b22c","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"1443dbc7-6d8b-3328-a263-27ac16cfb1b0":{"id":"1443dbc7-6d8b-3328-a263-27ac16cfb1b0","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"c2d485d1-4d10-3ec0-b557-dd17572244c5":{"id":"c2d485d1-4d10-3ec0-b557-dd17572244c5","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"51e14800-642a-3f5b-b6a9-669900842b4f":{"id":"51e14800-642a-3f5b-b6a9-669900842b4f","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"3d5862c1-b769-3632-b770-4e433d5f2445":{"id":"3d5862c1-b769-3632-b770-4e433d5f2445","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"4246deba-6ba4-3ed5-aec7-79b47919e95a":{"id":"4246deba-6ba4-3ed5-aec7-79b47919e95a","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"2889550b-6966-3626-a686-752cd0dec0ec":{"id":"2889550b-6966-3626-a686-752cd0dec0ec","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"20e687e0-e276-3411-8bf2-bec58a64dbb3":{"id":"20e687e0-e276-3411-8bf2-bec58a64dbb3","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"32d5c36f-b0d1-3101-9c9b-85b2b93eebe6":{"id":"32d5c36f-b0d1-3101-9c9b-85b2b93eebe6","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"fee7d9f4-795a-39a6-85c7-6b752f8b2838":{"id":"fee7d9f4-795a-39a6-85c7-6b752f8b2838","position":{"x":0,"y":0},"size":{"width":151.5625,"height":51},"resizedByUser":false,"movedByUser":false},"b6a8f5bd-55de-33d1-a839-484fa879d3ea":{"id":"b6a8f5bd-55de-33d1-a839-484fa879d3ea","position":{"x":0,"y":0},"size":{"width":59.578125,"height":30},"resizedByUser":false,"movedByUser":false},"e7d6232c-1139-36eb-a8a4-e2c5d48694ab":{"id":"e7d6232c-1139-36eb-a8a4-e2c5d48694ab","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false}}}}', 'DiagramMinComputedSizeMigrationParticipant', '2025.8.0-202506301700', '2025-05-12 08:53:49.209902+00', '2025-08-13 08:03:58.75106+00'); +INSERT INTO public.representation_content (id, representation_metadata_id, semantic_data_id, content, last_migration_performed, migration_version, created_on, last_modified_on) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055#d518b19f-9fd9-40ac-9c0a-b35a2c4575c9', 'd518b19f-9fd9-40ac-9c0a-b35a2c4575c9', '948dcefc-5634-47fa-98c1-abbe8c6cf055', '{"id":"d518b19f-9fd9-40ac-9c0a-b35a2c4575c9","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"4a1a191c-7b60-425c-89e4-ba0ac686277e","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"779d9696-17aa-32c9-8fc5-554a70366c37","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=52de5719-4873-3c76-8e5b-8d94900d4b7f","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"4eb43313-889b-36f9-8d09-f82a9ce5171a","text":"«part def»\nPartDefinition1","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartDefinition.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"125c9b0c-e01a-358a-b3d1-20b2fa918450","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=32da1a41-7187-3da3-ae52-f3cfc927b133","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"aabe037d-e745-3a27-a3de-baddf52d16ba","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"25a5ead6-ea9c-373e-924b-ee8581f5dcdf","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=1d4e3253-3981-3d8a-9887-b887114e3a3e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"03e94f77-78c7-39a0-8487-308d3cb564b0","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"44d49606-fe7d-3834-9dc0-e81b930e47c3","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a677fbe5-68e8-3949-beab-d96b632c4cc0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"38209601-4e51-3437-af11-fa5f7fe39254","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"c3eff512-d6b8-3b4c-a91c-446a15a65c92","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=d1db77ad-fee0-3c33-bfe1-db84f9fbd027","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"27f02097-a810-3ba6-83d6-b6cff6cf739c","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"23f6427d-1026-32ed-a1a7-d151779ac2ca","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=9777340c-1189-3b0c-a56c-be11ea9f7a9e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"80af379a-1a60-3618-9276-14e3533f896f","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"1ece7d1e-b41d-3c6f-97e1-eaf591f56583","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"554d68ff-e584-355a-9720-aa5e51034325","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"5b92d03f-3603-3021-b26a-365514b8f467","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"3b9afa38-dcf2-3ddf-8633-c48f7a7efe40","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"403c5898-2be1-386e-9420-3ac220458a42","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ba122573-ae0d-378c-9949-7622f6057511","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"f8c4305e-b518-33a5-8dd9-32e17bcba4f4","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"987b7432-a297-3725-8fd7-03b83fde5fac","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cbf68c65-4d8f-32ca-ac84-92fec0dbb646","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"fa167bb0-bb98-3fbc-92be-70953633f656","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"eb5dfbc9-d808-307a-8173-8899a929d83b","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=3868c242-24f7-3a1d-956f-21bd7488b2b6","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5371ad56-b439-3f95-9ee9-796ea4334d63","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"60c5e6da-0090-37b8-9b0e-bdd06b197e31","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"78fcf8ef-1f8c-35d2-80ca-7faaca2a969a","text":"interconnection","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"6468d315-4d56-3458-8f66-1f544e6a3aed","type":"node:rectangle","targetObjectId":"f96dd250-f71d-4b3d-baea-b5c49fd95584","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"PartDefinition1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=29c432fc-0cf3-3758-aa94-cedab4551f5d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"46cce8aa-9cf8-3478-9165-a88c2c7208d0","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[]}],"defaultWidth":208,"defaultHeight":70,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[]}],"edges":[],"layoutData":{"nodeLayoutData":{"60c5e6da-0090-37b8-9b0e-bdd06b197e31":{"id":"60c5e6da-0090-37b8-9b0e-bdd06b197e31","position":{"x":1,"y":112},"size":{"width":206,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":118.5625,"height":34}},"25a5ead6-ea9c-373e-924b-ee8581f5dcdf":{"id":"25a5ead6-ea9c-373e-924b-ee8581f5dcdf","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"c3eff512-d6b8-3b4c-a91c-446a15a65c92":{"id":"c3eff512-d6b8-3b4c-a91c-446a15a65c92","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"5b92d03f-3603-3021-b26a-365514b8f467":{"id":"5b92d03f-3603-3021-b26a-365514b8f467","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"403c5898-2be1-386e-9420-3ac220458a42":{"id":"403c5898-2be1-386e-9420-3ac220458a42","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"125c9b0c-e01a-358a-b3d1-20b2fa918450":{"id":"125c9b0c-e01a-358a-b3d1-20b2fa918450","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"1ece7d1e-b41d-3c6f-97e1-eaf591f56583":{"id":"1ece7d1e-b41d-3c6f-97e1-eaf591f56583","position":{"x":0,"y":0},"size":{"width":155,"height":150},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"779d9696-17aa-32c9-8fc5-554a70366c37":{"id":"779d9696-17aa-32c9-8fc5-554a70366c37","position":{"x":219.36621786347516,"y":-124.6611812943262},"size":{"width":208,"height":263},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":120.5625,"height":263}},"23f6427d-1026-32ed-a1a7-d151779ac2ca":{"id":"23f6427d-1026-32ed-a1a7-d151779ac2ca","position":{"x":1,"y":52},"size":{"width":206,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":59.578125,"height":30}},"987b7432-a297-3725-8fd7-03b83fde5fac":{"id":"987b7432-a297-3725-8fd7-03b83fde5fac","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"44d49606-fe7d-3834-9dc0-e81b930e47c3":{"id":"44d49606-fe7d-3834-9dc0-e81b930e47c3","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"6468d315-4d56-3458-8f66-1f544e6a3aed":{"id":"6468d315-4d56-3458-8f66-1f544e6a3aed","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}},"eb5dfbc9-d808-307a-8173-8899a929d83b":{"id":"eb5dfbc9-d808-307a-8173-8899a929d83b","position":{"x":0,"y":0},"size":{"width":155,"height":60},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0,"height":0}}},"edgeLayoutData":{},"labelLayoutData":{"78fcf8ef-1f8c-35d2-80ca-7faaca2a969a":{"id":"78fcf8ef-1f8c-35d2-80ca-7faaca2a969a","position":{"x":0,"y":0},"size":{"width":114.5625,"height":30},"resizedByUser":false,"movedByUser":false},"fa167bb0-bb98-3fbc-92be-70953633f656":{"id":"fa167bb0-bb98-3fbc-92be-70953633f656","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"46cce8aa-9cf8-3478-9165-a88c2c7208d0":{"id":"46cce8aa-9cf8-3478-9165-a88c2c7208d0","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"38209601-4e51-3437-af11-fa5f7fe39254":{"id":"38209601-4e51-3437-af11-fa5f7fe39254","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"554d68ff-e584-355a-9720-aa5e51034325":{"id":"554d68ff-e584-355a-9720-aa5e51034325","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"03e94f77-78c7-39a0-8487-308d3cb564b0":{"id":"03e94f77-78c7-39a0-8487-308d3cb564b0","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"3b9afa38-dcf2-3ddf-8633-c48f7a7efe40":{"id":"3b9afa38-dcf2-3ddf-8633-c48f7a7efe40","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"27f02097-a810-3ba6-83d6-b6cff6cf739c":{"id":"27f02097-a810-3ba6-83d6-b6cff6cf739c","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"4eb43313-889b-36f9-8d09-f82a9ce5171a":{"id":"4eb43313-889b-36f9-8d09-f82a9ce5171a","position":{"x":0,"y":0},"size":{"width":151.5625,"height":51},"resizedByUser":false,"movedByUser":false},"f8c4305e-b518-33a5-8dd9-32e17bcba4f4":{"id":"f8c4305e-b518-33a5-8dd9-32e17bcba4f4","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"80af379a-1a60-3618-9276-14e3533f896f":{"id":"80af379a-1a60-3618-9276-14e3533f896f","position":{"x":0,"y":0},"size":{"width":59.578125,"height":30},"resizedByUser":false,"movedByUser":false},"aabe037d-e745-3a27-a3de-baddf52d16ba":{"id":"aabe037d-e745-3a27-a3de-baddf52d16ba","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false},"5371ad56-b439-3f95-9ee9-796ea4334d63":{"id":"5371ad56-b439-3f95-9ee9-796ea4334d63","position":{"x":0,"y":0},"size":{"width":0,"height":0},"resizedByUser":false,"movedByUser":false}}}}', 'DiagramMinComputedSizeMigrationParticipant', '2025.8.0-202506301700', '2025-05-12 08:53:49.209902+00', '2025-08-13 08:03:58.75106+00'); + + +-- +-- Data for Name: semantic_data_dependency; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: semantic_data_domain; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.semantic_data_domain (semantic_data_id, uri) VALUES ('948dcefc-5634-47fa-98c1-abbe8c6cf055', 'http://www.eclipse.org/syson/sysml'); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java index 55275229e..33d6fda49 100644 --- a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java +++ b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java @@ -19,6 +19,8 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.eclipse.emf.common.util.EList; @@ -31,8 +33,11 @@ import org.eclipse.sirius.components.core.api.IObjectSearchService; import org.eclipse.sirius.components.diagrams.Diagram; import org.eclipse.sirius.components.diagrams.Edge; +import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy; import org.eclipse.sirius.components.diagrams.IDiagramElement; +import org.eclipse.sirius.components.diagrams.ListLayoutStrategy; import org.eclipse.sirius.components.diagrams.Node; +import org.eclipse.sirius.components.diagrams.ViewModifier; import org.eclipse.sirius.components.diagrams.description.NodeDescription; import org.eclipse.sirius.components.diagrams.elements.NodeElementProps; import org.eclipse.sirius.components.diagrams.renderer.DiagramRenderingCache; @@ -254,6 +259,10 @@ public boolean isView(Element element, String viewDefinition, Node selectedNode, /** * Reveals the compartment in {@code node} that can display {@code targetElement}. *

+ * Reveals a compartment in {@code node} only if none of the displayed compartment can handle {@code targetElement}. + * If many compartment candidates exist, selects the first free-form compartment. + *

+ *

* This method does not assume that the node representing {@code targetElement} is already displayed on the diagram. * It looks for the compartment that can (or already does) contain the node, and makes it visible. This means that * this method can be called as part of the creation process of {@code targetElement}, even if the node representing @@ -296,19 +305,27 @@ public Node revealCompartment(Node node, Element targetElement, DiagramContext d NodeDescriptionService nodeDescriptionService = new NodeDescriptionService(this.objectSearchService); - List compartmentCandidates = nodeDescriptionService.getNodeDescriptionsForRenderingElementAsChild(targetElement, parentObject, allChildNodeDescriptions, - convertedNodes, editingContext, diagramContext); + Map compartmentDescriptionCandidates = nodeDescriptionService.getNodeDescriptionsForRenderingElementAsChild(targetElement, parentObject, allChildNodeDescriptions, + convertedNodes, editingContext, diagramContext) + .stream() + .collect(Collectors.toMap(NodeDescription::getId, Function.identity())); - if (!compartmentCandidates.isEmpty()) { - if (compartmentCandidates.size() > 1) { - this.logger.warn("Multiple compartment candidates found for {} in {}.", targetElement.eClass().getName(), node.toString()); - } + if (!compartmentDescriptionCandidates.isEmpty()) { NodeFinder nodeFinder = new NodeFinder(diagramContext.diagram()); - List candidateNodes = nodeFinder - .getAllNodesMatching(n -> compartmentCandidates.stream().map(NodeDescription::getId).anyMatch(id -> Objects.equals(id, n.getDescriptionId())) + List compartmentNodeCandidates = nodeFinder + .getAllNodesMatching(n -> compartmentDescriptionCandidates.keySet().stream().anyMatch(id -> Objects.equals(id, n.getDescriptionId())) && Objects.equals(n.getTargetObjectId(), node.getTargetObjectId()) ); - new DiagramServices().reveal(new DiagramService(diagramContext), candidateNodes); + var noCompartmentToHandleTargetElement = compartmentNodeCandidates.stream() + .allMatch(candidate -> ViewModifier.Hidden.equals(candidate.getState())); + if (noCompartmentToHandleTargetElement) { + compartmentNodeCandidates.stream().reduce((previousCandidate, newCandidate) -> { + if (previousCandidate.getStyle().getChildrenLayoutStrategy() instanceof ListLayoutStrategy && newCandidate.getStyle().getChildrenLayoutStrategy() instanceof FreeFormLayoutStrategy) { + return newCandidate; + } + return previousCandidate; + }).ifPresent(compartmentToReveal -> new DiagramServices().reveal(new DiagramService(diagramContext), List.of(compartmentToReveal))); + } } return node; } diff --git a/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc b/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc index e935bf705..f03779aac 100644 --- a/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc +++ b/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc @@ -27,7 +27,7 @@ They can also add their own SysML-based validation rules by returning additional ** Fix an issue where it was possible to create a `SatisfyRequirementUsage` from the `SatisfyRequirementUsage` graphical edge tool with a target that is not a `RequirementUsage`. ** Fix an issue where it was not possible to drag and drop a `LibraryPackage` from the _Explorer_ to a diagram. ** Fix an issue where creating a `PerformActionUsage` from the `ActionUsage` graphical node (or any other graphical node that allows to create it) was displaying it in the diagram background and its compartments every time. -It now follows the same rule than all other graphical node: if a compartment that can display the new `PerformActionUsage` is displayed, then the new `PerformActionUsage` is displayed in this compartment, otherwise it is displayed in the diagram background. +It now follows the same rule as all other graphical node: if a compartment that can display the new `PerformActionUsage` is displayed, then the new `PerformActionUsage` is displayed in this compartment, otherwise it is displayed in the diagram background. ** Fix an issue where the creation of a `RequirementUsage` from a `Package` graphical node was not revealing it. ** Fix the `EnumerationDefinition` graphical node compartment name from `enumerations` to `enums`, to follow the SysMLv2 specification. ** Fix the direct edit and the display of `ends` graphical node elements inside the _ends_ compartment. @@ -41,6 +41,7 @@ Now the _end_ keyword is not displayed anymore in the label of these graphical n ** Fix an issue where the _Add existing elements_ tool was not working correctly on the _action flow_ compartment of `ActionUsage` graphical nodes. ** Fix the user feedback when dropping an `Element` from the _Explorer_ view which is already exposed on a diagram. ** Fix an issue where the non-empty compartments of graphical nodes were being displayed when executing the _Add existing elements_ tool. +** In Interconnection View diagrams, fix an issue where the `parts` compartment of a `PartDefinition` graphical node was incorrectly revealed when creating a `PartUsage` from the `PartDefinition` graphical node, even if the `interconnection` compartment was already visible. * In textual import/export: