diff options
author | Vincent Lorenzo | 2017-01-12 14:47:15 +0000 |
---|---|---|
committer | vincent lorenzo | 2017-01-17 15:48:13 +0000 |
commit | 2ff7b6dde56a5f78f3eb73e6ec65ccd24885647d (patch) | |
tree | 0915ddd7bc6d2ec613d3ae12342b9b74060b33fe /extraplugins | |
parent | 724cff2f7b93a2221e0cf333cd2e7d9e268826f4 (diff) | |
download | org.eclipse.papyrus-2ff7b6dde56a5f78f3eb73e6ec65ccd24885647d.tar.gz org.eclipse.papyrus-2ff7b6dde56a5f78f3eb73e6ec65ccd24885647d.tar.xz org.eclipse.papyrus-2ff7b6dde56a5f78f3eb73e6ec65ccd24885647d.zip |
Bug 510363: [Importer][Rhapsody] Imported BDD doesn't contains Actor, Event and Package
Change-Id: Ib91a8ad1a6acaca497b6b36b4f4cd19d42c1bf2f
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
Diffstat (limited to 'extraplugins')
12 files changed, 135 insertions, 14 deletions
diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_FromScopeHandles_IEvent.gif b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_FromScopeHandles_IEvent.gif Binary files differnew file mode 100755 index 00000000000..7f95c3219c2 --- /dev/null +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_FromScopeHandles_IEvent.gif diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_ToScopeHandles_IEvent.gif b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_ToScopeHandles_IEvent.gif Binary files differnew file mode 100755 index 00000000000..7f95c3219c2 --- /dev/null +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateIMatrixInstance_ToScopeHandles_IEvent.gif diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateITableInstance_ScopeHandles_IEvent.gif b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateITableInstance_ScopeHandles_IEvent.gif Binary files differnew file mode 100755 index 00000000000..fc9baba599a --- /dev/null +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/icons/full/ctool16/CreateITableInstance_ScopeHandles_IEvent.gif diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/IMatrixInstanceItemProvider.java b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/IMatrixInstanceItemProvider.java index 51d81956645..bd4597caa1d 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/IMatrixInstanceItemProvider.java +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/IMatrixInstanceItemProvider.java @@ -402,6 +402,11 @@ public class IMatrixInstanceItemProvider extends MatrixInstancesTypeItemProvider newChildDescriptors.add (createChildParameter (UMLRhapsodyPackage.eINSTANCE.getIMatrixInstance_FromScopeHandles(), + UMLRhapsodyFactory.eINSTANCE.createIEvent())); + + newChildDescriptors.add + (createChildParameter + (UMLRhapsodyPackage.eINSTANCE.getIMatrixInstance_FromScopeHandles(), UMLRhapsodyFactory.eINSTANCE.createIInteractionOperand())); newChildDescriptors.add @@ -612,6 +617,11 @@ public class IMatrixInstanceItemProvider extends MatrixInstancesTypeItemProvider newChildDescriptors.add (createChildParameter (UMLRhapsodyPackage.eINSTANCE.getIMatrixInstance_ToScopeHandles(), + UMLRhapsodyFactory.eINSTANCE.createIEvent())); + + newChildDescriptors.add + (createChildParameter + (UMLRhapsodyPackage.eINSTANCE.getIMatrixInstance_ToScopeHandles(), UMLRhapsodyFactory.eINSTANCE.createIInteractionOperand())); newChildDescriptors.add diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/ITableInstanceItemProvider.java b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/ITableInstanceItemProvider.java index fa82452afde..bd9a9faa1dd 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/ITableInstanceItemProvider.java +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel.edit/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/provider/ITableInstanceItemProvider.java @@ -381,6 +381,11 @@ public class ITableInstanceItemProvider extends TableInstancesTypeItemProvider { newChildDescriptors.add (createChildParameter (UMLRhapsodyPackage.eINSTANCE.getITableInstance_ScopeHandles(), + UMLRhapsodyFactory.eINSTANCE.createIEvent())); + + newChildDescriptors.add + (createChildParameter + (UMLRhapsodyPackage.eINSTANCE.getITableInstance_ScopeHandles(), UMLRhapsodyFactory.eINSTANCE.createIInteractionOperand())); newChildDescriptors.add diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/model/Rhapsody.ecore b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/model/Rhapsody.ecore index 3d8bbebb258..4d051d09459 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/model/Rhapsody.ecore +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/model/Rhapsody.ecore @@ -1696,7 +1696,7 @@ <eStructuralFeatures xsi:type="ecore:EReference" name="description" eType="#//IDescription" containment="true"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="IEvent" eSuperTypes="#//IInterfaceItem #//M_subjectType #//M_pFormalMessageType #//ConveyedType #//TargetType"> + <eClassifiers xsi:type="ecore:EClass" name="IEvent" eSuperTypes="#//IInterfaceItem #//M_subjectType #//M_pFormalMessageType #//ConveyedType #//TargetType #//M_pModelObjectType"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="myState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/IEvent.java b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/IEvent.java index 0e0b7be7666..7cb55efebd5 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/IEvent.java +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/IEvent.java @@ -43,7 +43,7 @@ import org.eclipse.emf.common.util.EList; * @model * @generated */ -public interface IEvent extends IInterfaceItem, M_subjectType, M_pFormalMessageType, ConveyedType, TargetType { +public interface IEvent extends IInterfaceItem, M_subjectType, M_pFormalMessageType, ConveyedType, TargetType, M_pModelObjectType { /** * Returns the value of the '<em><b>Id</b></em>' attribute. * <!-- begin-user-doc --> diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/IEventImpl.java b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/IEventImpl.java index 46ce05fef6b..a2c37e3d767 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/IEventImpl.java +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/IEventImpl.java @@ -39,6 +39,7 @@ import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.IPropertyContain import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.ITag; import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.IVariable; import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.M_pFormalMessageType; +import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.M_pModelObjectType; import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.M_subjectType; import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.TargetType; import org.eclipse.papyrus.migration.rhapsody.rhapsodymetamodel.UMLRhapsodyPackage; @@ -1143,6 +1144,11 @@ public class IEventImpl extends IInterfaceItemImpl implements IEvent { default: return -1; } } + if (baseClass == M_pModelObjectType.class) { + switch (derivedFeatureID) { + default: return -1; + } + } return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); } @@ -1176,6 +1182,11 @@ public class IEventImpl extends IInterfaceItemImpl implements IEvent { default: return -1; } } + if (baseClass == M_pModelObjectType.class) { + switch (baseFeatureID) { + default: return -1; + } + } return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); } diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/rhapsodymetamodel.ecore b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/rhapsodymetamodel.ecore index a476577ac9f..10ab905059a 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/rhapsodymetamodel.ecore +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/impl/rhapsodymetamodel.ecore @@ -1693,7 +1693,7 @@ <eStructuralFeatures xsi:type="ecore:EReference" name="description" eType="#//IDescription" containment="true"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="IEvent" eSuperTypes="#//IInterfaceItem #//M_subjectType #//M_pFormalMessageType #//ConveyedType #//TargetType"> + <eClassifiers xsi:type="ecore:EClass" name="IEvent" eSuperTypes="#//IInterfaceItem #//M_subjectType #//M_pFormalMessageType #//ConveyedType #//TargetType #//M_pModelObjectType"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="myState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/util/UMLRhapsodySwitch.java b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/util/UMLRhapsodySwitch.java index b0cee127a48..dc1c4ac7da4 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/util/UMLRhapsodySwitch.java +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody.metamodel/src-gen/org/eclipse/papyrus/migration/rhapsody/rhapsodymetamodel/util/UMLRhapsodySwitch.java @@ -1072,6 +1072,7 @@ public class UMLRhapsodySwitch<T> extends Switch<T> { if (result == null) result = caseM_pFormalMessageType(iEvent); if (result == null) result = caseConveyedType(iEvent); if (result == null) result = caseTargetType(iEvent); + if (result == null) result = caseM_pModelObjectType(iEvent); if (result == null) result = caseIClassifier(iEvent); if (result == null) result = caseIUnit(iEvent); if (result == null) result = caseIModelElement(iEvent); diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/RhapsodyToPapyrusDiagamCommon.qvto b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/RhapsodyToPapyrusDiagamCommon.qvto index a2b77c1b276..f99ff64f021 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/RhapsodyToPapyrusDiagamCommon.qvto +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/RhapsodyToPapyrusDiagamCommon.qvto @@ -143,6 +143,30 @@ mapping umlrhapsody::CGIClass::toListCompartment(papyrusCompartmentName:String, eAnnotations+=createCSSForceValue("visible"); } +//TODO : merge me with previous one +mapping umlrhapsody::CGIBasicClass::toListCompartment(papyrusCompartmentName:String, rhapsodyCompartmentName:String) : notation::ListCompartment{ + type:=papyrusCompartmentName; + styles := object DrawerStyle{}; + styles += object TitleStyle{}; + styles += object SortingStyle{}; + styles += object FilteringStyle{}; + //we hide the compartment by default. We show it only if it the equivalent compartment is shown in Rhapsody + visible:=false; + + if(rhapsodyCompartmentName<>null){ + visible:=self.Compartments->selectByKind(CGICompartment)->select(cpt | cpt.m_name=rhapsodyCompartmentName)->notEmpty(); + }; + if(visible){ + var showCompartmentTitleProperty:umlrhapsody::IProperty :=self[CGIBasicClass].properties.Subjects->select(subject | subject.Name="General").Metaclasses->select(metaclass | metaclass.Name="Graphics").Properties->select(p | p.Name="ShowCompartmentsTitle")->any(true); + if((not showCompartmentTitleProperty.oclIsUndefined()) and showCompartmentTitleProperty.Value="False"){ + eAnnotations+= object EAnnotation { source:="PapyrusCSSForceValue" ; details+=object EStringToStringMapEntry { key:="showTitle"; value:="false"}}; + }; + }; + + //force value to avoid impact of CSS and get the same display between Rhapsody and Papyrus + eAnnotations+=createCSSForceValue("visible"); +} + /** * Helper to create an EAnnotation to force a value and ignore CSS. It is used to get the same diaply between Rhapsody model and Papyrus model, ignoring CSS applied on the model */ diff --git a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/SysML11BlockDefinitionDiagram.qvto b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/SysML11BlockDefinitionDiagram.qvto index 7e616e6890b..55e804d92bf 100644 --- a/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/SysML11BlockDefinitionDiagram.qvto +++ b/extraplugins/migration/rhapsody/org.eclipse.papyrus.migration.rhapsody/transform/SysML11BlockDefinitionDiagram.qvto @@ -51,7 +51,13 @@ mapping rhapsodymetamodel::IDiagram::iDiagramToSysML11BlockDefinitionDiagram(rpy result:=self.map createAndInitDiagram(rpyProject,getPapyrusDiagramType(), owner, owner); } - children:= self.graphicChart.graphElements.map toSysML11BlockDefinitionDiagramShape(); + //1. find some objects + var cgiClassChart:CGIClassChart:=self.graphicChart->oclAsSet().selectByType(CGIClassChart)->any(true); + var cgiClass:CGIClass:=cgiClassChart.graphElements->selectByType(CGIClass)->any(true); + var cgiDiagramFrame:CGIDiagramFrame:=cgiClassChart.graphElements->selectByType(CGIDiagramFrame)->any(true); + + + children:= self.graphicChart.graphElements.map toSysML11BlockDefinitionDiagramShape(cgiClassChart, cgiClass->asSequence()); edges:=self.graphicChart.graphElements.map toSysML11BlockDefinitionDiagramEdge(); } @@ -208,8 +214,13 @@ type:= /** * * This mapping allows to create all views in a Papyrus SysML 1.1 BDD according to the Rhapsody Model +* @param +* cgiClassChart : the class chart of the diagram, it is useful to find child to create for the created element +* @param +* rpyAllowedParent : the list of the allowed Rhapsody parent to manage the object. +* if the Rhapsody parent is not in this list, the object won't be mapped */ -mapping umlrhapsody::GraphElementsType::toSysML11BlockDefinitionDiagramShape() : Shape +mapping umlrhapsody::GraphElementsType::toSysML11BlockDefinitionDiagramShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape disjuncts umlrhapsody::CGIGenericElement::toSysML11BDDDataTypeShape, //TODO split with value type umlrhapsody::CGIGenericElement::toSysML11BDDUnitShape, @@ -218,7 +229,10 @@ mapping umlrhapsody::GraphElementsType::toSysML11BlockDefinitionDiagramShape() : umlrhapsody::CGIGenericElement::toSysML11BDDBlockShape, umlrhapsody::CGIClass::toSysML11BDDBlockShape, umlrhapsody::CGIClass::toSysML11BDDConstraintBlockShape, - umlrhapsody::CGIClass::toSysML11BDDFlowSpecificationShape + umlrhapsody::CGIClass::toSysML11BDDFlowSpecificationShape, + umlrhapsody::CGIBasicClass::toSysML11BDDActorShape, + umlrhapsody::CGIPackage::toSysML11BDDPackageShape, + umlrhapsody::CGIGenericElement::toSysML11BDDSignalShape {} mapping umlrhapsody::GraphElementsType::toSysML11BlockDefinitionDiagramEdge() : Edge @@ -229,7 +243,7 @@ mapping umlrhapsody::GraphElementsType::toSysML11BlockDefinitionDiagramEdge() : /** * This mapping creates the Block Shape with its compartment and their children */ -mapping umlrhapsody::CGIGenericElement::toSysML11BDDBlockShape() : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLClass()}{ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLClass() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ type:="shape_sysml_block_as_classifier"; element := self.m_pModelObject.resolveone().oclAsType(EObject); var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_block_name"}; @@ -260,7 +274,7 @@ mapping umlrhapsody::CGIGenericElement::toSysML11BDDBlockShape() : Shape when {s /** * This mapping creates the Block Shape with its compartment and their children */ -mapping umlrhapsody::CGIClass::toSysML11BDDBlockShape() : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and not (self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification() or self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock()) }{ +mapping umlrhapsody::CGIClass::toSysML11BDDBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and not (self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification() or self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock()) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ var res:Boolean= self.m_pModelObject.oclIsTypeOf(IClass); type:="shape_sysml_block_as_classifier"; @@ -293,7 +307,7 @@ mapping umlrhapsody::CGIClass::toSysML11BDDBlockShape() : Shape when {self.oclIs * This mapping creates the Block Shape with its compartment and their children */ //TODO : merge me with previous one ? -mapping umlrhapsody::CGIClass::toSysML11BDDConstraintBlockShape() : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock()}{ +mapping umlrhapsody::CGIClass::toSysML11BDDConstraintBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ // <children xmi:type="notation:Shape" xmi:id="_Mr2uIIlmEeaNf9-vLHMoKw" type="shape_sysml_flowspecification_as_classifier"> // <children xmi:type="notation:DecorationNode" xmi:id="_Mr3VMIlmEeaNf9-vLHMoKw" type="label_sysml_flowspecification_name"/> @@ -343,7 +357,7 @@ mapping umlrhapsody::CGIClass::toSysML11BDDConstraintBlockShape() : Shape when { * This mapping creates the Block Shape with its compartment and their children */ //TODO : merge me with previous one ? -mapping umlrhapsody::CGIClass::toSysML11BDDFlowSpecificationShape() : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification()}{ +mapping umlrhapsody::CGIClass::toSysML11BDDFlowSpecificationShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ // <children xmi:type="notation:Shape" xmi:id="_Mr2uIIlmEeaNf9-vLHMoKw" type="shape_sysml_flowspecification_as_classifier"> // <children xmi:type="notation:DecorationNode" xmi:id="_Mr3VMIlmEeaNf9-vLHMoKw" type="label_sysml_flowspecification_name"/> @@ -382,7 +396,7 @@ mapping umlrhapsody::CGIClass::toSysML11BDDFlowSpecificationShape() : Shape when layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; } -mapping umlrhapsody::CGIGenericElement::toSysML11BDDUnitShape() : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLUnit()}{ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDUnitShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLUnit() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ type:="shape_sysml_unit_as_classifier"; element := self.m_pModelObject.resolveone().oclAsType(EObject); var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_unit_name"}; @@ -390,7 +404,7 @@ mapping umlrhapsody::CGIGenericElement::toSysML11BDDUnitShape() : Shape when {se //TODO : add compartment as hidden layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; } -mapping umlrhapsody::CGIGenericElement::toSysML11BDDDimensionShape() : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLDimension()}{ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDDimensionShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLDimension() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ type:="shape_sysml_dimension_as_classifier"; element := self.m_pModelObject.resolveone().oclAsType(EObject); var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_dimension_name"}; @@ -404,7 +418,7 @@ mapping umlrhapsody::CGIGenericElement::toSysML11BDDDimensionShape() : Shape whe /** * map the Rhapsody enumeration representation to the Papyrus Enumeration */ -mapping umlrhapsody::CGIGenericElement::toSysML11BDDEnumerationShape() : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLEnumeration()}{ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDEnumerationShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLEnumeration() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ type:="shape_uml_enumeration_as_classifier"; element := self.m_pModelObject.resolveone().oclAsType(EObject); var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_uml_namedelement_name"}; @@ -415,7 +429,7 @@ mapping umlrhapsody::CGIGenericElement::toSysML11BDDEnumerationShape() : Shape w layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; } -mapping umlrhapsody::CGIGenericElement::toSysML11BDDDataTypeShape() : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLDataType()}{ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDDataTypeShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLDataType() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ type:="shape_uml_datatype_as_classifier"; element := self.m_pModelObject.resolveone().oclAsType(EObject); var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_uml_namedelement_name"}; @@ -763,4 +777,60 @@ mapping umlrhapsody::CGIAssociationEnd::toSysML11BDDAssociationEdge() : Connecto eAnnotations+=createCSSForceValue("routing"); } +/** +* Create the Actor Shape +*/ +mapping umlrhapsody::CGIBasicClass::toSysML11BDDActorShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when {self.m_pModelObject.oclIsTypeOf(IActor) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ + element := self.m_pModelObject.resolveone().oclAsType(EObject); + type:="shape_uml_actor_as_classifier"; + children+= object DecorationNode{ + type:="label_uml_namedelement_name"; + }; + children+=self.map toListCompartment("compartment_uml_property_as_list",null); + children+=self.map toListCompartment("compartment_uml_operation_as_list",null); + layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; +} + +/** +* Create the package shape +* +*/ +mapping umlrhapsody::CGIPackage::toSysML11BDDPackageShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when {self.m_pModelObject.oclIsTypeOf(ISubsystem) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ + element := self.m_pModelObject.resolveone().oclAsType(EObject); + type:="Package_Shape"; + children+= object DecorationNode{ + type:="Package_NameLabel"; + }; + var blockPropertyStructure:BasicCompartment:= object BasicCompartment { + type:="Package_PackagedElementCompartment"; + styles+=object TitleStyle{}; + layoutConstraint:=object Bounds{}; + }; + layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; + + //create package contents + + blockPropertyStructure.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsCompartmentChildren(blockPropertyStructure)).map toSysML11BlockDefinitionDiagramShape(cgiClassChart, self->asSequence()); + children+=blockPropertyStructure; +} + +/** +* Returns true when the graph element can be set as a children of a given compartment +*/ +query umlrhapsody::GraphElementsType::isAllowedAsCompartmentChildren(cpt:BasicCompartment):Boolean{ + return not self.oclIsTypeOf(CGIPortConnector); +} +/** +* Map the CGIGenericElement to a Signal Shape +*/ +mapping umlrhapsody::CGIGenericElement::toSysML11BDDSignalShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when{self.m_pModelObject.oclIsTypeOf(IEvent) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ + element := self.m_pModelObject.resolveone().oclAsType(EObject); + type:="shape_uml_signal_as_classifier"; + children+= object DecorationNode{ + type:="label_uml_namedelement_name"; + }; + children+=self.map toListCompartment("compartment_uml_property_as_list",null); + children+=self.map toListCompartment("compartment_uml_operation_as_list",null); + layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)}; +}
\ No newline at end of file |