blob: 1b8bf9e88c3d8c29bbe5cf7679a710ebc70f7bc5 [file] [log] [blame]
[comment
/*********************************************************************
* Copyright (c) 2019 Intecs Solutions SpA
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intecs Solutions - Initial API and implementation
*
**********************************************************************/
/]
[comment encoding = UTF-8 /]
[module composedComponentTemplate('http://www.eclipse.org/uml2/5.0.0/UML')/]
[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
[template public composedComponentTemplate(model : Model, componentQN : String){
BlockQN : String = 'SysML::Blocks::Block';
}]
[comment @main /]
[let componentName : String = getNameFromQN(componentQN)]
[file (componentName.concat('.cmp'), false, 'UTF-8')]
[let globalvars : Set(String) = getEmptyStringSet()]
[let x : Integer = 75]
[let y : Integer = 50]
<?xml version="1.0" encoding="ISO-8859-1"?>
<class id="Mobius.ComposedModels.RepJoin.RepJoinInterface">
<int id="ClassVersion">1</int>
<class id="Mobius.BaseClasses.BaseInterfaceClass">
<int id="ClassVersion">3</int>
<string id="ModelName">[componentName/]</string>
<class id="Mobius.BaseClasses.BaseInfoClass">
<int id="ClassVersion">2</int>
</class>
<class id="Mobius.BaseClasses.BaseEditorClass">
<int id="ClassVersion">3</int>
<boolean id="HasPanel">true</boolean>
<class id="Mobius.BaseClasses.BasePanelClass">
<int id="ClassVersion">2</int>
<point id="Size of Panel">
<int id="x">500</int>
<int id="y">400</int>
</point>
<double id="ZoomFactor">1.0</double>
<boolean id="ShowGridEnabled">true</boolean>
<int id="ShowGridStep">10</int>
<boolean id="SnapGridEnabled">true</boolean>
<int id="SnapGridStep">10</int>
[comment join node /]
<class id="Mobius.ComposedModels.Common.JoinPanelObject">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">[componentName/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">[x/]</int>
<int id="y">[y/]</int>
</point>
</class>
<int id="SharingInfoSize">0</int>
</class>
[comment submodels /]
[let composedBlocks : Sequence(Classifier) = getComposedBlocks(model)]
[let parent : Classifier = getBlockFromQN(composedBlocks, componentQN)]
[for (subsystem : Classifier | getSubsystems(parent))]
<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">[subsystem.name/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">[x + 150*i/]</int>
<int id="y">[y/]</int>
</point>
</class>
<string id="Model Name">[subsystem.name/]</string>
</class>
[comment rep(s), if any/]
[if(isReplicated(subsystem, parent))]
<class id="Mobius.ComposedModels.RepJoin.RepPanelObject">
<int id="ClassVersion">1</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">Rep[subsystem.name/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">[x + 150*i/]</int>
<int id="y">[y + 50/]</int>
</point>
</class>
<string id="RepCount">Num[subsystem.name/]</string>
<int id="SharingInfoSize">0</int>
</class>
[addToGlobalVars('Num'.concat(subsystem.name), globalvars)/]
[/if]
[/for]
[comment links /]
[for (subsystem : Classifier | getSubsystems(parent))]
[if(isReplicated(subsystem, parent))]
[comment link join to rep /]
<class id="Mobius.BaseClasses.BaseEdgeClass">
<int id="ClassVersion">3</int>
<int id="LineType">0</int>
<string id="StartVertex">[componentName/]</string>
<string id="FinishVertex">Rep[subsystem.name/]</string>
<boolean id="Arrows">false</boolean>
<vector id="PointList">
<point id="0">
<int id="x">[x/]</int>
<int id="y">[y/]</int>
</point>
<point id="1">
<int id="x">[x + 150*i/]</int>
<int id="y">[y + 50/]</int>
</point>
</vector>
</class>
[comment link rep to subsys /]
<class id="Mobius.BaseClasses.BaseEdgeClass">
<int id="ClassVersion">3</int>
<int id="LineType">0</int>
<string id="StartVertex">Rep[subsystem.name/]</string>
<string id="FinishVertex">[subsystem.name/]</string>
<boolean id="Arrows">false</boolean>
<vector id="PointList">
<point id="0">
<int id="x">[x + 150*i/]</int>
<int id="y">[y + 50/]</int>
</point>
<point id="1">
<int id="x">[x + 150*i/]</int>
<int id="y">[y/]</int>
</point>
</vector>
</class>
[else]
<class id="Mobius.BaseClasses.BaseEdgeClass">
<int id="ClassVersion">3</int>
<int id="LineType">0</int>
<string id="StartVertex">[componentName/]</string>
<string id="FinishVertex">[subsystem.name/]</string>
<boolean id="Arrows">false</boolean>
<vector id="PointList">
<point id="0">
<int id="x">[x/]</int>
<int id="y">[y/]</int>
</point>
<point id="1">
<int id="x">[x + 150*i/]</int>
<int id="y">[y/]</int>
</point>
</vector>
</class>
[/if]
[/for]
[/let]
[/let]
</class>
<vector id="LocalGlobalNamesList">
[for (globalvar : String | globalvars)]
<string id="[i/]">[globalvar/]</string>
[/for]
</vector>
<vector id="LocalGlobalTypesList">
[for (globalvar : String | globalvars)]
<string id="[i/]">short</string>
[/for]
</vector>
<boolean id="DisplayToolTips">true</boolean>
</class>
<boolean id="Valid">true</boolean>
</class>
</class>
[/let]
[/let]
[/let]
[/file]
[/let]
[/template]
[query public getSubsystems(parent : Classifier) : Sequence(Classifier) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getSubsystems(org.eclipse.uml2.uml.Classifier)', Sequence{parent})/]
[query public isReplicated(block : Classifier, parent : Classifier) : Boolean =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'isReplicated(org.eclipse.uml2.uml.Classifier, org.eclipse.uml2.uml.Classifier)', Sequence{block, parent})/]
[comment [query public getReplication(block : Classifier, parent : Classifier) : String =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getReplication(org.eclipse.uml2.uml.Classifier, org.eclipse.uml2.uml.Classifier)', Sequence{block, parent})/]