From 7670130318839b8b9ee4d0ac387cbcf0de5d869b Mon Sep 17 00:00:00 2001 From: georgiana-e Date: Wed, 11 Nov 2020 09:50:48 +0200 Subject: [PATCH] [567448] System Component support (#78) Change-Id: I1d5cb92d733ab70b44e301915e436f66e0b29a8b Signed-off-by: Georgiana-Elena ECOBICI Co-authored-by: Georgiana-Elena ECOBICI --- .../helper/EmbeddedEditorInstanceHelper.java | 74 +++++++++++-------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java b/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java index d8a2c572..fe64442f 100644 --- a/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java +++ b/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java @@ -43,6 +43,7 @@ import org.polarsys.capella.core.data.cs.Component; import org.polarsys.capella.core.data.cs.ExchangeItemAllocation; import org.polarsys.capella.core.data.cs.Part; +import org.polarsys.capella.core.data.ctx.System; import org.polarsys.capella.core.data.ctx.SystemAnalysis; import org.polarsys.capella.core.data.epbs.EPBSArchitecture; import org.polarsys.capella.core.data.fa.AbstractFunction; @@ -51,6 +52,7 @@ import org.polarsys.capella.core.data.fa.FunctionalExchange; import org.polarsys.capella.core.data.information.AbstractEventOperation; import org.polarsys.capella.core.data.information.AbstractInstance; +import org.polarsys.capella.core.data.information.Partition; import org.polarsys.capella.core.data.interaction.InstanceRole; import org.polarsys.capella.core.data.interaction.Scenario; import org.polarsys.capella.core.data.interaction.ScenarioKind; @@ -144,10 +146,10 @@ public static boolean isFEScenario() { public static boolean isFSScenario() { return ScenarioExt.isFunctionalScenario(EmbeddedEditorInstance.getAssociatedScenarioDiagram()); } - + public static AbstractFunction getSourceFunctionOfExchange(FunctionalExchange exchange) { FunctionOutputPort source = exchange.getSourceFunctionOutputPort(); - if(source != null && source.eContainer() instanceof AbstractFunction) { + if (source != null && source.eContainer() instanceof AbstractFunction) { return (AbstractFunction) source.eContainer(); } return null; @@ -157,10 +159,10 @@ public static String getSourceFunctionNameOfExchange(FunctionalExchange exchange AbstractFunction function = getSourceFunctionOfExchange(exchange); return function != null ? function.getName() : null; } - + public static AbstractFunction getTargetFunctionOfExchange(FunctionalExchange exchange) { FunctionInputPort target = exchange.getTargetFunctionInputPort(); - if(target != null && target.eContainer() instanceof AbstractFunction) { + if (target != null && target.eContainer() instanceof AbstractFunction) { return (AbstractFunction) target.eContainer(); } return null; @@ -170,7 +172,7 @@ public static String getTargetFunctionNameOfExchange(FunctionalExchange exchange AbstractFunction function = getTargetFunctionOfExchange(exchange); return function != null ? function.getName() : null; } - + public static EObject getScenarioLevel() { Scenario currentScenario = EmbeddedEditorInstance.getAssociatedScenarioDiagram(); return BlockArchitectureExt.getRootBlockArchitecture(currentScenario); @@ -347,16 +349,25 @@ private static Collection getAvailableAbstractFunctions() { * */ public static Collection getAvailableComponents() { - Scenario scenario = EmbeddedEditorInstance.getAssociatedScenarioDiagram(); - List elements = (new InteractionServices()) + Scenario scenario = EmbeddedEditorInstance.getAssociatedScenarioDiagram(); + List elements = (new InteractionServices()) .getISScopeInsertComponents(EmbeddedEditorInstance.getAssociatedScenarioDiagram()); - - for (InstanceRole role : scenario.getOwnedInstanceRoles()) { - if (role.getRepresentedInstance() instanceof Part) { - elements.add((Part) role.getRepresentedInstance()); - } - } - + BlockArchitecture architecture = BlockArchitectureExt.getRootBlockArchitecture(scenario); + if (architecture instanceof SystemAnalysis) { + System system = ((SystemAnalysis) architecture).getOwnedSystem(); + for (Partition part : system.getRepresentingPartitions()) { + if (part instanceof Part) { + elements.add((Part) part); + } + } + } + + for (InstanceRole role : scenario.getOwnedInstanceRoles()) { + if (role.getRepresentedInstance() instanceof Part) { + elements.add((Part) role.getRepresentedInstance()); + } + } + return elements; } @@ -367,12 +378,12 @@ public static Collection getAvailableComponents() { * */ public static Collection getAvailableActors() { - Scenario scenario = EmbeddedEditorInstance.getAssociatedScenarioDiagram(); + Scenario scenario = EmbeddedEditorInstance.getAssociatedScenarioDiagram(); BlockArchitecture analysis = BlockArchitectureExt.getRootBlockArchitecture(scenario); if (analysis instanceof OperationalAnalysis) { - return getOESScopeInsertEntitiesRoles(scenario).stream() - .filter(x -> x instanceof Part && ((Part)x).getAbstractType() instanceof OperationalActor) - .collect(Collectors.toList()); + return getOESScopeInsertEntitiesRoles(scenario).stream() + .filter(x -> x instanceof Part && ((Part) x).getAbstractType() instanceof OperationalActor) + .collect(Collectors.toList()); } return (new InteractionServices()).getISScopeInsertActors(scenario); } @@ -384,18 +395,18 @@ public static Collection getAvailableActors() { * */ public static Collection getAvailableRoles() { - return getOESScopeInsertEntitiesRoles(EmbeddedEditorInstance.getAssociatedScenarioDiagram()) - .stream().filter(x -> x instanceof Role).collect(Collectors.toList()); + return getOESScopeInsertEntitiesRoles(EmbeddedEditorInstance.getAssociatedScenarioDiagram()).stream() + .filter(x -> x instanceof Role).collect(Collectors.toList()); } - + private static Collection getOESScopeInsertEntitiesRoles(Scenario scenario) { - Collection roots = new ArrayList(); - roots.addAll(new ScenarioService().getAllMultiInstanceRoleParts(scenario)); - BlockArchitecture analysis = BlockArchitectureExt.getRootBlockArchitecture(scenario); - if (analysis instanceof OperationalAnalysis) { - roots.addAll(OperationalAnalysisExt.getAllRoles((OperationalAnalysis) analysis)); - } - return roots; + Collection roots = new ArrayList(); + roots.addAll(new ScenarioService().getAllMultiInstanceRoleParts(scenario)); + BlockArchitecture analysis = BlockArchitectureExt.getRootBlockArchitecture(scenario); + if (analysis instanceof OperationalAnalysis) { + roots.addAll(OperationalAnalysisExt.getAllRoles((OperationalAnalysis) analysis)); + } + return roots; } /** @@ -678,18 +689,19 @@ public static void refreshAssociatedDiagram() { public static List getReferencedScenariosName() { return getReferencedScenarios().stream().map(x -> ((Scenario) x).getName()).collect(Collectors.toList()); } - + /* * Get referenced scenario with the given name */ public static Scenario getScenarioWithGivenName(String name) { - List referencedScenarios = getReferencedScenarios().stream().filter(x -> ((Scenario) x).getName().equals(name)).collect(Collectors.toList()); + List referencedScenarios = getReferencedScenarios().stream() + .filter(x -> ((Scenario) x).getName().equals(name)).collect(Collectors.toList()); if (!referencedScenarios.isEmpty()) { return (Scenario) referencedScenarios.get(0); } return null; } - + /* * Get all possible scenario references */