diff --git a/org.framed.iorm.model.edit/META-INF/MANIFEST.MF b/org.framed.iorm.model.edit/META-INF/MANIFEST.MF index e7e1f1b3aa2fdca628c4f4a85837419cb7c31cf8..010c6ac2f0a962bf0ba4d8542c6782a4f88b70cf 100644 --- a/org.framed.iorm.model.edit/META-INF/MANIFEST.MF +++ b/org.framed.iorm.model.edit/META-INF/MANIFEST.MF @@ -11,6 +11,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.framed.iorm.featuremodel.provider, org.framed.iorm.model.provider Require-Bundle: org.eclipse.core.runtime, - org.framed.iorm.model;visibility:=reexport, + org.framed.iorm.model;bundle-version="1.0.0";visibility:=reexport, org.eclipse.emf.edit;visibility:=reexport Bundle-ActivationPolicy: lazy diff --git a/org.framed.iorm.model/META-INF/MANIFEST.MF b/org.framed.iorm.model/META-INF/MANIFEST.MF index 13209b324e329ae59c534305e14c4bce1ba60324..bd3313a6857818500b3c4d3eefe5a8ab349fd06f 100644 --- a/org.framed.iorm.model/META-INF/MANIFEST.MF +++ b/org.framed.iorm.model/META-INF/MANIFEST.MF @@ -7,12 +7,31 @@ Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: org.framed.iorm.featuremodel, - org.framed.iorm.featuremodel.impl, - org.framed.iorm.featuremodel.util, +Export-Package: org.framed.iorm.featuremodel;uses:="org.eclipse.emf.ecore,org.eclipse.emf.common.util", + org.framed.iorm.featuremodel.impl; + uses:="org.eclipse.emf.ecore, + org.eclipse.emf.ecore.impl, + org.eclipse.emf.common.util, + org.framed.iorm.featuremodel", + org.framed.iorm.featuremodel.util; + uses:="org.eclipse.emf.ecore, + org.framed.iorm.featuremodel, + org.eclipse.emf.common.notify, + org.eclipse.emf.common.notify.impl, + org.eclipse.emf.ecore.util", org.framed.iorm.model, - org.framed.iorm.model.impl, - org.framed.iorm.model.util + org.framed.iorm.model.impl; + uses:="org.eclipse.emf.ecore, + org.eclipse.emf.ecore.impl, + org.eclipse.emf.common.util, + org.framed.iorm.featuremodel, + org.framed.iorm.model", + org.framed.iorm.model.util; + uses:="org.eclipse.emf.ecore, + org.eclipse.emf.common.notify, + org.eclipse.emf.common.notify.impl, + org.eclipse.emf.ecore.util, + org.framed.iorm.model" Require-Bundle: org.eclipse.emf.common;bundle-version="2.13.0", org.eclipse.core.runtime, org.eclipse.emf.ecore;bundle-version="2.13.0";visibility:=reexport diff --git a/org.framed.iorm.model/model/IORM.aird b/org.framed.iorm.model/model/IORM.aird new file mode 100644 index 0000000000000000000000000000000000000000..23b8bb1a6348c129e9110989495e5100543e0374 --- /dev/null +++ b/org.framed.iorm.model/model/IORM.aird @@ -0,0 +1,923 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> + <viewpoint:DAnalysis xmi:id="_-B4sMC6SEei7UoQ9pjBF3w" selectedViews="_-QfI4C6SEei7UoQ9pjBF3w _-QskQC6SEei7UoQ9pjBF3w _-Q5_oC6SEei7UoQ9pjBF3w _-ROvwC6SEei7UoQ9pjBF3w" version="12.1.0.201708031200"> + <semanticResources>IORM.ecore</semanticResources> + <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources> + <semanticResources>IORM.genmodel</semanticResources> + <ownedViews xmi:type="viewpoint:DView" xmi:id="_-QfI4C6SEei7UoQ9pjBF3w"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_Chx-8C6TEei7UoQ9pjBF3w" name="iorm class diagram" repPath="#_CfQ2cC6TEei7UoQ9pjBF3w"> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <target xmi:type="ecore:EPackage" href="IORM.ecore#/"/> + </ownedRepresentationDescriptors> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" xmi:id="_-QskQC6SEei7UoQ9pjBF3w"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" xmi:id="_-Q5_oC6SEei7UoQ9pjBF3w"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" xmi:id="_-ROvwC6SEei7UoQ9pjBF3w"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/> + </ownedViews> + </viewpoint:DAnalysis> + <diagram:DSemanticDiagram xmi:id="_ChtGcC6TEei7UoQ9pjBF3w" name="iorm class diagram" uid="_CfQ2cC6TEei7UoQ9pjBF3w"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_ChtGcS6TEei7UoQ9pjBF3w" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_ChtGci6TEei7UoQ9pjBF3w"> + <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HvLQ4C6TEei7UoQ9pjBF3w" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1"> + <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HwNLoS6TEei7UoQ9pjBF3w" showIcon="false" labelExpression="service:render"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HwNLoi6TEei7UoQ9pjBF3w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_Hwk_EC6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_Hwk_ES6TEei7UoQ9pjBF3w" showIcon="false" labelExpression="service:renderEOpposite"> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </beginLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_Hwk_Ei6TEei7UoQ9pjBF3w" showIcon="false" labelExpression="service:render"> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HwmNMC6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_HwmNMS6TEei7UoQ9pjBF3w" showIcon="false" labelExpression="service:renderEOpposite"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </beginLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HwmNMi6TEei7UoQ9pjBF3w" showIcon="false" labelExpression="service:render"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_CiTjYC6TEei7UoQ9pjBF3w" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_CiTjYS6TEei7UoQ9pjBF3w" type="Sirius" element="_ChtGcC6TEei7UoQ9pjBF3w" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_Hwth8C6TEei7UoQ9pjBF3w" type="2003" element="_HueGQC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HwuwEC6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_HwxzYC6TEei7UoQ9pjBF3w" type="7004"> + <children xmi:type="notation:Node" xmi:id="_Hw4hEC6TEei7UoQ9pjBF3w" type="3010" element="_HvFKQC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw5IIC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw5IIS6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_HwxzYS6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_HwxzYi6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Hwth8S6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hwth8i6TEei7UoQ9pjBF3w" x="375" y="110" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HwyacC6TEei7UoQ9pjBF3w" type="2003" element="_HupFYC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HwzBgC6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_HwzBgS6TEei7UoQ9pjBF3w" type="7004"> + <children xmi:type="notation:Node" xmi:id="_Hw5vMC6TEei7UoQ9pjBF3w" type="3010" element="_HvKCwC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw5vMS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" bold="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw5vMi6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_HwzBgi6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_HwzBgy6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_HwyacS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hwyaci6TEei7UoQ9pjBF3w" x="535" width="203" height="58"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HwzBhC6TEei7UoQ9pjBF3w" type="2003" element="_Huq6kC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HwzokC6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_HwzokS6TEei7UoQ9pjBF3w" type="7004"> + <children xmi:type="notation:Node" xmi:id="_Hw6WQC6TEei7UoQ9pjBF3w" type="3010" element="_HvNtIC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw6WQS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw6WQi6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_Hwzoki6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Hwzoky6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_HwzBhS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HwzBhi6TEei7UoQ9pjBF3w" x="170" height="58"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw0PoC6TEei7UoQ9pjBF3w" type="2003" element="_HutW0C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hw0Poy6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_Hw02sC6TEei7UoQ9pjBF3w" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_Hw02sS6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Hw02si6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Hw0PoS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hw0Poi6TEei7UoQ9pjBF3w" x="605" y="225" height="53"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw02sy6TEei7UoQ9pjBF3w" type="2003" element="_HuvMAC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hw1dwC6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_Hw1dwS6TEei7UoQ9pjBF3w" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_Hw1dwi6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Hw1dwy6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Hw02tC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hw02tS6TEei7UoQ9pjBF3w" x="170" y="110" height="58"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw1dxC6TEei7UoQ9pjBF3w" type="2003" element="_HuxoQC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hw2E0C6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_Hw2E0S6TEei7UoQ9pjBF3w" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_Hw2E0i6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Hw2E0y6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Hw1dxS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" fillColor="15329769"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hw1dxi6TEei7UoQ9pjBF3w" x="765" height="58"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw2r4C6TEei7UoQ9pjBF3w" type="2003" element="_HuzdcC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hw3S8C6TEei7UoQ9pjBF3w" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_Hw36AC6TEei7UoQ9pjBF3w" type="7004"> + <children xmi:type="notation:Node" xmi:id="_Hw69UC6TEei7UoQ9pjBF3w" type="3010" element="_HvYsQC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw69US6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw69Ui6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw7kYC6TEei7UoQ9pjBF3w" type="3010" element="_HvZTUC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw7kYS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw7kYi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw7kYy6TEei7UoQ9pjBF3w" type="3010" element="_HvZ6YC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw7kZC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw7kZS6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw8LcC6TEei7UoQ9pjBF3w" type="3010" element="_HvahcC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw8LcS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw8Lci6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw8ygC6TEei7UoQ9pjBF3w" type="3010" element="_HvbvkC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw8ygS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw8ygi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw8ygy6TEei7UoQ9pjBF3w" type="3010" element="_HvcWoC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw8yhC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw8yhS6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw9ZkC6TEei7UoQ9pjBF3w" type="3010" element="_HvcWoi6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw9ZkS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw9Zki6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw9Zky6TEei7UoQ9pjBF3w" type="3010" element="_HvdkwC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw9ZlC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw9ZlS6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw-AoC6TEei7UoQ9pjBF3w" type="3010" element="_Hvdkwi6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw-AoS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw-Aoi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw-nsC6TEei7UoQ9pjBF3w" type="3010" element="_Hvey4S6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw-nsS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw-nsi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw-nsy6TEei7UoQ9pjBF3w" type="3010" element="_HvfZ8S6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw-ntC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw-ntS6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw_OwC6TEei7UoQ9pjBF3w" type="3010" element="_HvgBAS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw_OwS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw_Owi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hw_10C6TEei7UoQ9pjBF3w" type="3010" element="_HvhPIC6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_Hw_10S6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Hw_10i6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxC5IC6TEei7UoQ9pjBF3w" type="3010" element="_HvhPIi6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxC5IS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxC5Ii6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxDgMC6TEei7UoQ9pjBF3w" type="3010" element="_Hvh2MS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxDgMS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxDgMi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxEuUC6TEei7UoQ9pjBF3w" type="3010" element="_HvidQS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxEuUS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxEuUi6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxF8cC6TEei7UoQ9pjBF3w" type="3010" element="_HvjEUS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxF8cS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxF8ci6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxF8cy6TEei7UoQ9pjBF3w" type="3010" element="_HvjrYS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxF8dC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxF8dS6TEei7UoQ9pjBF3w"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxGjgC6TEei7UoQ9pjBF3w" type="3010" element="_HvkScS6TEei7UoQ9pjBF3w"> + <styles xmi:type="notation:FontStyle" xmi:id="_HxGjgS6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HxGjgi6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_Hw36AS6TEei7UoQ9pjBF3w"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Hw36Ai6TEei7UoQ9pjBF3w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Hw2r4S6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hw2r4i6TEei7UoQ9pjBF3w" x="15"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_CiUKcC6TEei7UoQ9pjBF3w"/> + <edges xmi:type="notation:Edge" xmi:id="_HxN4QC6TEei7UoQ9pjBF3w" type="4001" element="_HwLWcC6TEei7UoQ9pjBF3w" source="_Hw0PoC6TEei7UoQ9pjBF3w" target="_Hwth8C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxPtcC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxPtcS6TEei7UoQ9pjBF3w" x="-51" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxQ7kC6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxQ7kS6TEei7UoQ9pjBF3w" x="17" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxRioC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxRioS6TEei7UoQ9pjBF3w" x="14"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxOfUC6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxOfUS6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxOfUi6TEei7UoQ9pjBF3w" points="[-6, 2, 142, 32]$[-178, 2, -30, 32]$[-178, -65, -30, -35]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxchwC6TEei7UoQ9pjBF3w" id="(0.058333333333333334,0.17294117647058824)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxchwS6TEei7UoQ9pjBF3w" id="(0.75,1.6041379310344825)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxdI0C6TEei7UoQ9pjBF3w" type="4001" element="_HwSrMC6TEei7UoQ9pjBF3w" source="_Hw0PoC6TEei7UoQ9pjBF3w" target="_Hwth8C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxdI1C6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxdI1S6TEei7UoQ9pjBF3w" x="153" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxdv4C6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxdv4S6TEei7UoQ9pjBF3w" x="-13"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxdv4i6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxdv4y6TEei7UoQ9pjBF3w" x="-205" y="-71"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxdI0S6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxdI0i6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxdI0y6TEei7UoQ9pjBF3w" points="[18, -11, 232, 51]$[50, -11, 264, 51]$[50, -121, 264, -59]$[-212, -121, 2, -59]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hxdv5C6TEei7UoQ9pjBF3w" id="(0.85,0.32666666666666666)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hxdv5S6TEei7UoQ9pjBF3w" id="(0.9833333333333333,1.1986206896551723)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Hxdv5i6TEei7UoQ9pjBF3w" type="4001" element="_HwT5UC6TEei7UoQ9pjBF3w" source="_Hw0PoC6TEei7UoQ9pjBF3w" target="_Hw0PoC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hxdv6i6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxdv6y6TEei7UoQ9pjBF3w" x="-1" y="67"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxdv7C6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxdv7S6TEei7UoQ9pjBF3w" x="-42" y="22"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxeW8C6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxeW8S6TEei7UoQ9pjBF3w" x="44" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Hxdv5y6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Hxdv6C6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hxdv6S6TEei7UoQ9pjBF3w" points="[59, -21, 2, -15]$[195, -21, 138, -15]$[195, 1, 138, 7]$[59, 1, 2, 7]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxeW8i6TEei7UoQ9pjBF3w" id="(0.5,0.9607843137254902)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxeW8y6TEei7UoQ9pjBF3w" id="(0.9833333333333333,0.8490566037735849)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxeW9C6TEei7UoQ9pjBF3w" type="4001" element="_HwVHcC6TEei7UoQ9pjBF3w" source="_Hw0PoC6TEei7UoQ9pjBF3w" target="_Hw02sy6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hxe-AC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxe-AS6TEei7UoQ9pjBF3w" x="-195" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxe-Ai6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxe-Ay6TEei7UoQ9pjBF3w" x="-43" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxe-BC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxe-BS6TEei7UoQ9pjBF3w" x="34" y="353"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxeW9S6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxeW9i6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxeW9y6TEei7UoQ9pjBF3w" points="[-3, 1, 420, 66]$[-422, 1, 1, 66]$[-422, -87, 1, -22]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxflEC6TEei7UoQ9pjBF3w" id="(0.03333333333333333,0.5505757858699035)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxflES6TEei7UoQ9pjBF3w" id="(0.13333333333333333,1.4000000000000001)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxflEi6TEei7UoQ9pjBF3w" type="4001" element="_HwWVkC6TEei7UoQ9pjBF3w" source="_Hw02sy6TEei7UoQ9pjBF3w" target="_Hw1dxC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxgMIC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgMIS6TEei7UoQ9pjBF3w" x="-49" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxgMIi6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgMIy6TEei7UoQ9pjBF3w" x="476" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxgMJC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgMJS6TEei7UoQ9pjBF3w" x="25" y="-97"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxflEy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxflFC6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxflFS6TEei7UoQ9pjBF3w" points="[-5, -41, -619, 68]$[-5, -12, -619, 97]$[655, -12, 41, 97]$[655, -151, 41, -42]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxgMJi6TEei7UoQ9pjBF3w" id="(0.3416666666666667,1.7325)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxgMJy6TEei7UoQ9pjBF3w" id="(0.5,1.75)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxgMKC6TEei7UoQ9pjBF3w" type="4001" element="_HwXjsy6TEei7UoQ9pjBF3w" source="_Hw02sy6TEei7UoQ9pjBF3w" target="_Hw1dxC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxgzMC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgzMS6TEei7UoQ9pjBF3w" x="-39" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxgzMi6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgzMy6TEei7UoQ9pjBF3w" x="442" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxgzNC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxgzNS6TEei7UoQ9pjBF3w" x="33" y="-72"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxgMKS6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxgMKi6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxgMKy6TEei7UoQ9pjBF3w" points="[1, 56, -594, 68]$[1, 65, -594, 77]$[611, 65, 16, 77]$[611, -54, 16, -42]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxhaQC6TEei7UoQ9pjBF3w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxhaQS6TEei7UoQ9pjBF3w" id="(0.5,1.75)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxhaQi6TEei7UoQ9pjBF3w" type="4001" element="_HwYx0C6TEei7UoQ9pjBF3w" source="_Hw02sy6TEei7UoQ9pjBF3w" target="_Hwth8C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxhaRi6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxhaRy6TEei7UoQ9pjBF3w" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxhaSC6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxhaSS6TEei7UoQ9pjBF3w" x="9" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxhaSi6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxhaSy6TEei7UoQ9pjBF3w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxhaQy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxhaRC6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxhaRS6TEei7UoQ9pjBF3w" points="[59, 27, -110, -55]$[146, 27, -23, -55]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxiBUC6TEei7UoQ9pjBF3w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxiBUS6TEei7UoQ9pjBF3w" id="(0.2,1.4182758620689655)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxiBUi6TEei7UoQ9pjBF3w" type="4001" element="_HwZ_8y6TEei7UoQ9pjBF3w" source="_Hw1dxC6TEei7UoQ9pjBF3w" target="_Hwth8C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxioYC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxioYS6TEei7UoQ9pjBF3w" x="163" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxioYi6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxioYy6TEei7UoQ9pjBF3w" x="15" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxioZC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxioZS6TEei7UoQ9pjBF3w" x="-226" y="-119"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxiBUy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxiBVC6TEei7UoQ9pjBF3w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxiBVS6TEei7UoQ9pjBF3w" points="[-9, 56, 381, -149]$[-9, 145, 381, -60]$[-331, 145, 59, -60]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxjPcC6TEei7UoQ9pjBF3w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxjPcS6TEei7UoQ9pjBF3w" id="(0.5,1.6379310344827587)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Hxkdki6TEei7UoQ9pjBF3w" type="4001" element="_HwgtoC6TEei7UoQ9pjBF3w" source="_Hw0PoC6TEei7UoQ9pjBF3w" target="_HwyacC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxlEoC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxlEoS6TEei7UoQ9pjBF3w" x="-45" y="19"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxlEoi6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxlEoy6TEei7UoQ9pjBF3w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxlEpC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxlEpS6TEei7UoQ9pjBF3w" x="-62" y="5"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Hxkdky6TEei7UoQ9pjBF3w" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxkdlC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxkdlS6TEei7UoQ9pjBF3w" points="[0, -2, -8, 214]$[0, -132, -8, 84]$[0, -132, -8, 84]$[0, -171, -8, 45]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxlrsC6TEei7UoQ9pjBF3w" id="(0.13333333333333333,0.05660377358490566)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxlrsS6TEei7UoQ9pjBF3w" id="(0.4630541871921182,0.20689655172413793)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Hxlrsi6TEei7UoQ9pjBF3w" type="4001" element="_HwhUsC6TEei7UoQ9pjBF3w" source="_Hw02sy6TEei7UoQ9pjBF3w" target="_HwyacC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxmSwC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxmSwS6TEei7UoQ9pjBF3w" x="65" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxmSwi6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxmSwy6TEei7UoQ9pjBF3w" x="58" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxmSxC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxmSxS6TEei7UoQ9pjBF3w" x="48" y="-2"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Hxlrsy6TEei7UoQ9pjBF3w" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxlrtC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxlrtS6TEei7UoQ9pjBF3w" points="[0, -6, -296, 32]$[0, -46, -296, -8]$[263, -46, -33, -8]$[263, -60, -33, -22]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hxng4C6TEei7UoQ9pjBF3w" id="(0.9083333333333333,0.12250000000000001)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hxng4S6TEei7UoQ9pjBF3w" id="(0.19207980199504987,1.4000000000000001)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxoH8C6TEei7UoQ9pjBF3w" type="4001" element="_Hwii0C6TEei7UoQ9pjBF3w" source="_HwyacC6TEei7UoQ9pjBF3w" target="_Hw0PoC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxoH9C6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxoH9S6TEei7UoQ9pjBF3w" x="41" y="-7"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxoH9i6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxoH9y6TEei7UoQ9pjBF3w" y="-19"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxoH-C6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxoH-S6TEei7UoQ9pjBF3w" x="11" y="-41"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxoH8S6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxoH8i6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxoH8y6TEei7UoQ9pjBF3w" points="[17, 7, -14, -218]$[17, 176, -14, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxovAC6TEei7UoQ9pjBF3w" id="(0.49004975124378103,0.875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxovAS6TEei7UoQ9pjBF3w" id="(0.5,0.9607843137254902)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxovAi6TEei7UoQ9pjBF3w" type="4001" element="_HwkYAC6TEei7UoQ9pjBF3w" source="_HwyacC6TEei7UoQ9pjBF3w" target="_HwzBhC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxovBi6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxovBy6TEei7UoQ9pjBF3w" x="-40"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxpWEC6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxpWES6TEei7UoQ9pjBF3w" x="22" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxpWEi6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxpWEy6TEei7UoQ9pjBF3w" x="-23" y="-7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxovAy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxovBC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8" bold="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxovBS6TEei7UoQ9pjBF3w" points="[-98, -20, 232, -20]$[-197, -20, 133, -20]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxpWFC6TEei7UoQ9pjBF3w" id="(0.49004975124378103,0.875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxpWFS6TEei7UoQ9pjBF3w" id="(0.5,0.875)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxpWFi6TEei7UoQ9pjBF3w" type="4001" element="_HwlmIC6TEei7UoQ9pjBF3w" source="_HwzBhC6TEei7UoQ9pjBF3w" target="_Hw02sy6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_Hxp9IC6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxp9IS6TEei7UoQ9pjBF3w" x="16" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxp9Ii6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxp9Iy6TEei7UoQ9pjBF3w" x="7" y="-5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Hxp9JC6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hxp9JS6TEei7UoQ9pjBF3w" x="-11" y="-6"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxpWFy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxpWGC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxpWGS6TEei7UoQ9pjBF3w" points="[-89, 7, -15, -103]$[-89, 61, -15, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxqkMC6TEei7UoQ9pjBF3w" id="(0.5,0.875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxqkMS6TEei7UoQ9pjBF3w" id="(0.5,0.875)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_HxqkMi6TEei7UoQ9pjBF3w" type="4001" element="_Hwm0QC6TEei7UoQ9pjBF3w" source="_HwyacC6TEei7UoQ9pjBF3w" target="_Hw0PoC6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_HxqkNi6TEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxqkNy6TEei7UoQ9pjBF3w" x="54" y="-7"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxrLQC6TEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxrLQS6TEei7UoQ9pjBF3w" x="3" y="-15"/> + </children> + <children xmi:type="notation:Node" xmi:id="_HxrLQi6TEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HxrLQy6TEei7UoQ9pjBF3w" x="-33" y="-61"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_HxqkMy6TEei7UoQ9pjBF3w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_HxqkNC6TEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HxqkNS6TEei7UoQ9pjBF3w" points="[14, -35, 72, -219]$[38, -35, 96, -219]$[38, 155, 96, -29]$[1, 155, 59, -29]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxrLRC6TEei7UoQ9pjBF3w" id="(0.9308482712067803,1.61)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HxrLRS6TEei7UoQ9pjBF3w" id="(0.5,0.9607843137254902)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_YJPvQC6WEei7UoQ9pjBF3w" type="4001" element="_YI9bYC6WEei7UoQ9pjBF3w" source="_HwyacC6TEei7UoQ9pjBF3w" target="_Hwth8C6TEei7UoQ9pjBF3w"> + <children xmi:type="notation:Node" xmi:id="_YJQWUC6WEei7UoQ9pjBF3w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJQWUS6WEei7UoQ9pjBF3w" x="-54" y="-5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_YJQ9YC6WEei7UoQ9pjBF3w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJQ9YS6WEei7UoQ9pjBF3w" x="-6" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_YJQ9Yi6WEei7UoQ9pjBF3w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJQ9Yy6WEei7UoQ9pjBF3w" x="-48" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_YJPvQS6WEei7UoQ9pjBF3w" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_YJPvQi6WEei7UoQ9pjBF3w" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YJPvQy6WEei7UoQ9pjBF3w" points="[0, -27, 92, -143]$[0, 12, 92, -104]$[-134, 12, -42, -104]$[-134, 27, -42, -89]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YJRkcC6WEei7UoQ9pjBF3w" id="(0.16252906322658067,1.4875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YJRkcS6WEei7UoQ9pjBF3w" id="(0.85,1.536551724137931)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HueGQC6TEei7UoQ9pjBF3w" name="NamedElement" tooltipText="" incomingEdges="_HwLWcC6TEei7UoQ9pjBF3w _HwSrMC6TEei7UoQ9pjBF3w _HwYx0C6TEei7UoQ9pjBF3w _HwZ_8y6TEei7UoQ9pjBF3w _YI9bYC6WEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//NamedElement"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//NamedElement"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Hukz8C6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvFKQC6TEei7UoQ9pjBF3w" name="name : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="IORM.ecore#//NamedElement/name"/> + <semanticElements xmi:type="ecore:EAttribute" href="IORM.ecore#//NamedElement/name"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvI0oC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HupFYC6TEei7UoQ9pjBF3w" name="ModelElement" tooltipText="" outgoingEdges="_Hwii0C6TEei7UoQ9pjBF3w _HwkYAC6TEei7UoQ9pjBF3w _Hwm0QC6TEei7UoQ9pjBF3w _YI9bYC6WEei7UoQ9pjBF3w" incomingEdges="_HwgtoC6TEei7UoQ9pjBF3w _HwhUsC6TEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//ModelElement"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//ModelElement"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_YIW-cC6WEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvKCwC6TEei7UoQ9pjBF3w" name="type : Type = CompartmentType" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="IORM.ecore#//ModelElement/type"/> + <semanticElements xmi:type="ecore:EAttribute" href="IORM.ecore#//ModelElement/type"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvMfAC6TEei7UoQ9pjBF3w" labelAlignment="LEFT" description="_HvLQ4C6TEei7UoQ9pjBF3w"> + <labelFormat>bold</labelFormat> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_Huq6kC6TEei7UoQ9pjBF3w" name="Model" tooltipText="" outgoingEdges="_HwlmIC6TEei7UoQ9pjBF3w" incomingEdges="_HwkYAC6TEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Model"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Model"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HusIsC6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvNtIC6TEei7UoQ9pjBF3w" name=" framedConfiguration : FRaMEDConfiguration" tooltipText=""> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Model/framedConfiguration"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Model/framedConfiguration"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvWQAC6TEei7UoQ9pjBF3w" labelAlignment="LEFT" color="114,159,207"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HutW0C6TEei7UoQ9pjBF3w" name="Relation" tooltipText="" outgoingEdges="_HwLWcC6TEei7UoQ9pjBF3w _HwSrMC6TEei7UoQ9pjBF3w _HwT5UC6TEei7UoQ9pjBF3w _HwVHcC6TEei7UoQ9pjBF3w _HwgtoC6TEei7UoQ9pjBF3w" incomingEdges="_HwT5UC6TEei7UoQ9pjBF3w _Hwii0C6TEei7UoQ9pjBF3w _Hwm0QC6TEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Relation"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Relation"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Huuk8C6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HuvMAC6TEei7UoQ9pjBF3w" name="Shape" tooltipText="" outgoingEdges="_HwWVkC6TEei7UoQ9pjBF3w _HwXjsy6TEei7UoQ9pjBF3w _HwYx0C6TEei7UoQ9pjBF3w _HwhUsC6TEei7UoQ9pjBF3w" incomingEdges="_HwVHcC6TEei7UoQ9pjBF3w _HwlmIC6TEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Shape"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Shape"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HuwaIC6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HuxoQC6TEei7UoQ9pjBF3w" name="Segment" tooltipText="" outgoingEdges="_HwZ_8y6TEei7UoQ9pjBF3w" incomingEdges="_HwWVkC6TEei7UoQ9pjBF3w _HwXjsy6TEei7UoQ9pjBF3w" width="12" height="10"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Segment"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Segment"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HuyPUC6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="233,233,233" foregroundColor="233,233,233"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HuzdcC6TEei7UoQ9pjBF3w" name="Type" tooltipText="" width="12" height="10"> + <target xmi:type="ecore:EEnum" href="IORM.ecore#//Type"/> + <semanticElements xmi:type="ecore:EEnum" href="IORM.ecore#//Type"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Hu0EgC6TEei7UoQ9pjBF3w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,255,255"> + <customFeatures>backgroundColor</customFeatures> + <customFeatures>foregroundColor</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvYsQC6TEei7UoQ9pjBF3w" name="CompartmentType" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/CompartmentType"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/CompartmentType"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvYsQS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvZTUC6TEei7UoQ9pjBF3w" name="NaturalType" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/NaturalType"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/NaturalType"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvZTUS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvZ6YC6TEei7UoQ9pjBF3w" name="RoleType" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleType"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleType"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvZ6YS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvahcC6TEei7UoQ9pjBF3w" name="DataType" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/DataType"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/DataType"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvahcS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvbvkC6TEei7UoQ9pjBF3w" name="RoleImplication" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleImplication"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleImplication"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvbvkS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvcWoC6TEei7UoQ9pjBF3w" name="RoleEquivalence" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleEquivalence"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleEquivalence"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvcWoS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvcWoi6TEei7UoQ9pjBF3w" name="Inheritance" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Inheritance"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Inheritance"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Hvc9sC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvdkwC6TEei7UoQ9pjBF3w" name="Relationship" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Relationship"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Relationship"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvdkwS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Hvdkwi6TEei7UoQ9pjBF3w" name="Total" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Total"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Total"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Hvey4C6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Hvey4S6TEei7UoQ9pjBF3w" name="Cyclic" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Cyclic"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Cyclic"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvfZ8C6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvfZ8S6TEei7UoQ9pjBF3w" name="Irreflexive" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Irreflexive"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Irreflexive"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvgBAC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvgBAS6TEei7UoQ9pjBF3w" name="RoleProhibition" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleProhibition"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleProhibition"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvgoEC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvhPIC6TEei7UoQ9pjBF3w" name="RoleGroup" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleGroup"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RoleGroup"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvhPIS6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvhPIi6TEei7UoQ9pjBF3w" name="Group" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Group"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Group"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Hvh2MC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Hvh2MS6TEei7UoQ9pjBF3w" name="Fulfillment" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Fulfillment"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Fulfillment"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvidQC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvidQS6TEei7UoQ9pjBF3w" name="RelationshipImplication" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RelationshipImplication"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RelationshipImplication"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvjEUC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvjEUS6TEei7UoQ9pjBF3w" name="Acyclic" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Acyclic"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Acyclic"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvjrYC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvjrYS6TEei7UoQ9pjBF3w" name="Reflexive" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Reflexive"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/Reflexive"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HvkScC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HvkScS6TEei7UoQ9pjBF3w" name="RelationshipExclusion" tooltipText=""> + <target xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RelationshipExclusion"/> + <semanticElements xmi:type="ecore:EEnumLiteral" href="IORM.ecore#//Type/RelationshipExclusion"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Hvk5gC6TEei7UoQ9pjBF3w" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwLWcC6TEei7UoQ9pjBF3w" name="[0..1] sourceLabel" sourceNode="_HutW0C6TEei7UoQ9pjBF3w" targetNode="_HueGQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Relation/sourceLabel"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/sourceLabel"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwQ2AC6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwQ2AS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwQ2Ai6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwSrMC6TEei7UoQ9pjBF3w" name="[0..1] targetLabel" sourceNode="_HutW0C6TEei7UoQ9pjBF3w" targetNode="_HueGQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Relation/targetLabel"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/targetLabel"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwTSQC6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwTSQS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwTSQi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwT5UC6TEei7UoQ9pjBF3w" name="[0..*] referencedRelation" sourceNode="_HutW0C6TEei7UoQ9pjBF3w" targetNode="_HutW0C6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Relation/referencedRelation"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/referencedRelation"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwUgYC6TEei7UoQ9pjBF3w" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwUgYS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwUgYi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwVHcC6TEei7UoQ9pjBF3w" name="[0..*] referencedRoles" sourceNode="_HutW0C6TEei7UoQ9pjBF3w" targetNode="_HuvMAC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Relation/referencedRoles"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/referencedRoles"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwVugC6TEei7UoQ9pjBF3w" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwVugS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwVugi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwWVkC6TEei7UoQ9pjBF3w" name="[0..1] firstSegment" sourceNode="_HuvMAC6TEei7UoQ9pjBF3w" targetNode="_HuxoQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Shape/firstSegment"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Shape/firstSegment"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwXjsC6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwXjsS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwXjsi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwXjsy6TEei7UoQ9pjBF3w" name="[0..1] secondSegment" sourceNode="_HuvMAC6TEei7UoQ9pjBF3w" targetNode="_HuxoQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Shape/secondSegment"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Shape/secondSegment"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwYKwC6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwYKwS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwYKwi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwYx0C6TEei7UoQ9pjBF3w" name="[0..1] description" sourceNode="_HuvMAC6TEei7UoQ9pjBF3w" targetNode="_HueGQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Shape/description"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Shape/description"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwZ_8C6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwZ_8S6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwZ_8i6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwZ_8y6TEei7UoQ9pjBF3w" name="[0..*] elements" sourceNode="_HuxoQC6TEei7UoQ9pjBF3w" targetNode="_HueGQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Segment/elements"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Segment/elements"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwanAC6TEei7UoQ9pjBF3w" description="_HwNLoC6TEei7UoQ9pjBF3w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HwanAS6TEei7UoQ9pjBF3w" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwanAi6TEei7UoQ9pjBF3w" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwgtoC6TEei7UoQ9pjBF3w" sourceNode="_HutW0C6TEei7UoQ9pjBF3w" targetNode="_HupFYC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Relation"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Relation"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwgtoS6TEei7UoQ9pjBF3w" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_Hwgtoi6TEei7UoQ9pjBF3w" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Hwgtoy6TEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwhUsC6TEei7UoQ9pjBF3w" sourceNode="_HuvMAC6TEei7UoQ9pjBF3w" targetNode="_HupFYC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//Shape"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//Shape"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Hwh7wC6TEei7UoQ9pjBF3w" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_Hwh7wS6TEei7UoQ9pjBF3w" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Hwh7wi6TEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Hwii0C6TEei7UoQ9pjBF3w" sourceNode="_HupFYC6TEei7UoQ9pjBF3w" targetNode="_HutW0C6TEei7UoQ9pjBF3w" beginLabel="[0..1] target" endLabel="[0..*] incomingRelations"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/incomingRelations"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/incomingRelations"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/target"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Hwjw8C6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_Hwjw8S6TEei7UoQ9pjBF3w" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_Hwjw8i6TEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwkYAC6TEei7UoQ9pjBF3w" sourceNode="_HupFYC6TEei7UoQ9pjBF3w" targetNode="_Huq6kC6TEei7UoQ9pjBF3w" beginLabel="[0..*] elements" endLabel="[1..1] container"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/container"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/container"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Model/elements"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Hwk_Ey6TEei7UoQ9pjBF3w" description="_Hwk_EC6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_Hwk_FC6TEei7UoQ9pjBF3w" showIcon="false"> + <labelFormat>bold</labelFormat> + </beginLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_Hwk_FS6TEei7UoQ9pjBF3w" showIcon="false"> + <labelFormat>bold</labelFormat> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HwlmIC6TEei7UoQ9pjBF3w" sourceNode="_Huq6kC6TEei7UoQ9pjBF3w" targetNode="_HuvMAC6TEei7UoQ9pjBF3w" beginLabel="[0..1] model" endLabel="[0..1] parent"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//Model/parent"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Shape/model"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Model/parent"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwmNMy6TEei7UoQ9pjBF3w" description="_HwmNMC6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HwmNNC6TEei7UoQ9pjBF3w" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwmNNS6TEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Hwm0QC6TEei7UoQ9pjBF3w" sourceNode="_HupFYC6TEei7UoQ9pjBF3w" targetNode="_HutW0C6TEei7UoQ9pjBF3w" beginLabel="[0..1] source" endLabel="[0..*] outgoingRelations"> + <target xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/outgoingRelations"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//ModelElement/outgoingRelations"/> + <semanticElements xmi:type="ecore:EReference" href="IORM.ecore#//Relation/source"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HwnbUC6TEei7UoQ9pjBF3w" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HwnbUS6TEei7UoQ9pjBF3w" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HwnbUi6TEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_YI9bYC6WEei7UoQ9pjBF3w" sourceNode="_HupFYC6TEei7UoQ9pjBF3w" targetNode="_HueGQC6TEei7UoQ9pjBF3w"> + <target xmi:type="ecore:EClass" href="IORM.ecore#//ModelElement"/> + <semanticElements xmi:type="ecore:EClass" href="IORM.ecore#//ModelElement"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_YI-pgC6WEei7UoQ9pjBF3w" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_YI-pgS6WEei7UoQ9pjBF3w" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_YI-pgi6WEei7UoQ9pjBF3w" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_ChtGdi6TEei7UoQ9pjBF3w"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/> + <target xmi:type="ecore:EPackage" href="IORM.ecore#/"/> + </diagram:DSemanticDiagram> +</xmi:XMI> diff --git a/org.framed.iorm.model/model/IORM.ecore b/org.framed.iorm.model/model/IORM.ecore index 43723b14ae830e6c8bcdd3e5575e6b8376089e4d..c21e45354e628263146bf7f5e3d7a33138a018fc 100644 --- a/org.framed.iorm.model/model/IORM.ecore +++ b/org.framed.iorm.model/model/IORM.ecore @@ -1,125 +1,125 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="iorm" nsURI="http://iorm/1.0" nsPrefix="org.framed.iorm.model"> - <eClassifiers xsi:type="ecore:EClass" name="NamedElement"> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="ModelElement" eSuperTypes="#//NamedElement"> - <eStructuralFeatures xsi:type="ecore:EReference" name="container" lowerBound="1" - eType="#//Model" eOpposite="#//Model/elements"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="incomingRelations" upperBound="-1" - eType="#//Relation" eOpposite="#//Relation/target"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingRelations" upperBound="-1" - eType="#//Relation" eOpposite="#//Relation/source"/> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//Type"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Model"> - <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" - eType="#//ModelElement" containment="true" eOpposite="#//ModelElement/container"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Shape" - eOpposite="#//Shape/model"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="framedConfiguration" eType="#//featuremodel/FRaMEDConfiguration" - containment="true"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Relation" eSuperTypes="#//ModelElement"> - <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//ModelElement" - eOpposite="#//ModelElement/incomingRelations"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//ModelElement" - eOpposite="#//ModelElement/outgoingRelations"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="sourceLabel" eType="#//NamedElement" - containment="true"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="targetLabel" eType="#//NamedElement" - containment="true"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="referencedRelation" upperBound="-1" - eType="#//Relation"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="referencedRoles" upperBound="-1" - eType="#//Shape"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Shape" eSuperTypes="#//ModelElement"> - <eStructuralFeatures xsi:type="ecore:EReference" name="firstSegment" eType="#//Segment" - containment="true"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="secondSegment" eType="#//Segment" - containment="true"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="model" eType="#//Model" - containment="true" eOpposite="#//Model/parent"/> - <eStructuralFeatures xsi:type="ecore:EReference" name="description" eType="#//NamedElement" - containment="true"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Segment"> - <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" - eType="#//NamedElement" containment="true"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EEnum" name="Type"> - <eLiterals name="CompartmentType"/> - <eLiterals name="NaturalType" value="1"/> - <eLiterals name="RoleType" value="2"/> - <eLiterals name="DataType" value="3"/> - <eLiterals name="RoleImplication" value="4"/> - <eLiterals name="RoleEquivalence" value="5"/> - <eLiterals name="Inheritance" value="6"/> - <eLiterals name="Relationship" value="7"/> - <eLiterals name="Total" value="8"/> - <eLiterals name="Cyclic" value="9"/> - <eLiterals name="Irreflexive" value="10"/> - <eLiterals name="RoleProhibition" value="11"/> - <eLiterals name="RoleGroup" value="12"/> - <eLiterals name="Group" value="13"/> - <eLiterals name="Fulfillment" value="14"/> - <eLiterals name="RelationshipImplication" value="15" literal="RelationshipImplication"/> - <eLiterals name="Acyclic" value="16"/> - <eLiterals name="Reflexive" value="17"/> - <eLiterals name="RelationshipExclusion" value="18" literal="RelationshipExclusion"/> - </eClassifiers> - <eSubpackages name="featuremodel" nsURI="http://iorm.featuremodel/1.0" nsPrefix="org.framed.iorm.model.featuremodel"> - <eClassifiers xsi:type="ecore:EClass" name="FRaMEDFeature"> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" - eType="#//featuremodel/FeatureName" defaultValueLiteral="RML_Feature_Model" - iD="true"/> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="manuallySelected" lowerBound="1" - eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="FRaMEDConfiguration"> - <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1" - eType="#//featuremodel/FRaMEDFeature" containment="true"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EEnum" name="FeatureName"> - <eLiterals name="RML_Feature_Model"/> - <eLiterals name="Role_Types" value="1"/> - <eLiterals name="Role_Structure" value="2"/> - <eLiterals name="Role_Properties" value="3"/> - <eLiterals name="Role_Behavior" value="4"/> - <eLiterals name="Role_Inheritance" value="5"/> - <eLiterals name="Playable" value="6"/> - <eLiterals name="Players" value="7"/> - <eLiterals name="Naturals" value="8"/> - <eLiterals name="Roles" value="9"/> - <eLiterals name="Compartments" value="10"/> - <eLiterals name="Dates" value="11"/> - <eLiterals name="Dependent" value="12"/> - <eLiterals name="On_Compartments" value="13"/> - <eLiterals name="On_Relationships" value="14"/> - <eLiterals name="Role_Constraints" value="15"/> - <eLiterals name="Role_Implication" value="16"/> - <eLiterals name="Role_Prohibition" value="17"/> - <eLiterals name="Role_Equivalence" value="18"/> - <eLiterals name="Group_Constraints" value="19"/> - <eLiterals name="Occurrence_Constraints" value="20"/> - <eLiterals name="Relationships" value="21"/> - <eLiterals name="Relationship_Constraints" value="22"/> - <eLiterals name="Relationship_Cardinality" value="23"/> - <eLiterals name="Intra_Relationship_Constraints" value="24"/> - <eLiterals name="Parthood_Constraints" value="25"/> - <eLiterals name="Inter_Relationship_Constraints" value="26"/> - <eLiterals name="Compartment_Types" value="27"/> - <eLiterals name="Compartment_Structure" value="28"/> - <eLiterals name="Compartment_Properties" value="29"/> - <eLiterals name="Compartment_Behavior" value="30"/> - <eLiterals name="Compartment_Inheritance" value="31"/> - <eLiterals name="Participants" value="32"/> - <eLiterals name="Contains_Compartments" value="33"/> - <eLiterals name="Playable_by_Defining_Compartment" value="34"/> - <eLiterals name="Data_Types" value="35"/> - <eLiterals name="Data_Type_Inheritance" value="36"/> - </eClassifiers> - </eSubpackages> -</ecore:EPackage> +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="iorm" nsURI="http://iorm/1.0" nsPrefix="org.framed.iorm.model"> + <eClassifiers xsi:type="ecore:EClass" name="NamedElement"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="ModelElement" eSuperTypes="#//NamedElement"> + <eStructuralFeatures xsi:type="ecore:EReference" name="container" lowerBound="1" + eType="#//Model" eOpposite="#//Model/elements"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="incomingRelations" upperBound="-1" + eType="#//Relation" eOpposite="#//Relation/target"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingRelations" upperBound="-1" + eType="#//Relation" eOpposite="#//Relation/source"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//Type"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Model"> + <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" + eType="#//ModelElement" containment="true" eOpposite="#//ModelElement/container"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Shape" + eOpposite="#//Shape/model"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="framedConfiguration" eType="#//featuremodel/FRaMEDConfiguration" + containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Relation" eSuperTypes="#//ModelElement"> + <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//ModelElement" + eOpposite="#//ModelElement/incomingRelations"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//ModelElement" + eOpposite="#//ModelElement/outgoingRelations"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="sourceLabel" eType="#//NamedElement" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="targetLabel" eType="#//NamedElement" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="referencedRelation" upperBound="-1" + eType="#//Relation"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="referencedRoles" upperBound="-1" + eType="#//Shape"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Shape" eSuperTypes="#//ModelElement"> + <eStructuralFeatures xsi:type="ecore:EReference" name="firstSegment" eType="#//Segment" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="secondSegment" eType="#//Segment" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="model" eType="#//Model" + containment="true" eOpposite="#//Model/parent"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="description" eType="#//NamedElement" + containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Segment"> + <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" + eType="#//NamedElement" containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EEnum" name="Type"> + <eLiterals name="CompartmentType"/> + <eLiterals name="NaturalType" value="1"/> + <eLiterals name="RoleType" value="2"/> + <eLiterals name="DataType" value="3"/> + <eLiterals name="RoleImplication" value="4"/> + <eLiterals name="RoleEquivalence" value="5"/> + <eLiterals name="Inheritance" value="6"/> + <eLiterals name="Relationship" value="7"/> + <eLiterals name="Total" value="8"/> + <eLiterals name="Cyclic" value="9"/> + <eLiterals name="Irreflexive" value="10"/> + <eLiterals name="RoleProhibition" value="11"/> + <eLiterals name="RoleGroup" value="12"/> + <eLiterals name="Group" value="13"/> + <eLiterals name="Fulfillment" value="14"/> + <eLiterals name="RelationshipImplication" value="15" literal="RelationshipImplication"/> + <eLiterals name="Acyclic" value="16"/> + <eLiterals name="Reflexive" value="17"/> + <eLiterals name="RelationshipExclusion" value="18" literal="RelationshipExclusion"/> + </eClassifiers> + <eSubpackages name="featuremodel" nsURI="http://iorm.featuremodel/1.0" nsPrefix="org.framed.iorm.model.featuremodel"> + <eClassifiers xsi:type="ecore:EClass" name="FRaMEDFeature"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" + eType="#//featuremodel/FeatureName" defaultValueLiteral="RML_Feature_Model" + iD="true"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="manuallySelected" lowerBound="1" + eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="FRaMEDConfiguration"> + <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1" + eType="#//featuremodel/FRaMEDFeature" containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EEnum" name="FeatureName"> + <eLiterals name="RML_Feature_Model"/> + <eLiterals name="Role_Types" value="1"/> + <eLiterals name="Role_Structure" value="2"/> + <eLiterals name="Role_Properties" value="3"/> + <eLiterals name="Role_Behavior" value="4"/> + <eLiterals name="Role_Inheritance" value="5"/> + <eLiterals name="Playable" value="6"/> + <eLiterals name="Players" value="7"/> + <eLiterals name="Naturals" value="8"/> + <eLiterals name="Roles" value="9"/> + <eLiterals name="Compartments" value="10"/> + <eLiterals name="Dates" value="11"/> + <eLiterals name="Dependent" value="12"/> + <eLiterals name="On_Compartments" value="13"/> + <eLiterals name="On_Relationships" value="14"/> + <eLiterals name="Role_Constraints" value="15"/> + <eLiterals name="Role_Implication" value="16"/> + <eLiterals name="Role_Prohibition" value="17"/> + <eLiterals name="Role_Equivalence" value="18"/> + <eLiterals name="Group_Constraints" value="19"/> + <eLiterals name="Occurrence_Constraints" value="20"/> + <eLiterals name="Relationships" value="21"/> + <eLiterals name="Relationship_Constraints" value="22"/> + <eLiterals name="Relationship_Cardinality" value="23"/> + <eLiterals name="Intra_Relationship_Constraints" value="24"/> + <eLiterals name="Parthood_Constraints" value="25"/> + <eLiterals name="Inter_Relationship_Constraints" value="26"/> + <eLiterals name="Compartment_Types" value="27"/> + <eLiterals name="Compartment_Structure" value="28"/> + <eLiterals name="Compartment_Properties" value="29"/> + <eLiterals name="Compartment_Behavior" value="30"/> + <eLiterals name="Compartment_Inheritance" value="31"/> + <eLiterals name="Participants" value="32"/> + <eLiterals name="Contains_Compartments" value="33"/> + <eLiterals name="Playable_by_Defining_Compartment" value="34"/> + <eLiterals name="Data_Types" value="35"/> + <eLiterals name="Data_Type_Inheritance" value="36"/> + </eClassifiers> + </eSubpackages> +</ecore:EPackage> diff --git a/org.framed.iorm.model/model/IORM.genmodel b/org.framed.iorm.model/model/IORM.genmodel index 42196deeede8b221f3a3c17576977a64652e0fc0..9eaf488dfb572055b3516551de90233fabc44a10 100644 --- a/org.framed.iorm.model/model/IORM.genmodel +++ b/org.framed.iorm.model/model/IORM.genmodel @@ -1,117 +1,117 @@ -<?xml version="1.0" encoding="UTF-8"?> -<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" - xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.framed.iorm.model/src" editDirectory="/org.framed.iorm.model.edit/src" - editorDirectory="/org.framed.iorm.model.editor/src" modelPluginID="org.framed.iorm.model" - modelName="ORM" modelPluginClass="" editPluginClass="org.framed.iorm.model.provider.ORMEditPlugin" - editorPluginClass="org.framed.iorm.model.presentation.ORMEditorPlugin" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" - reflectiveDelegation="true" codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" - featureDelegation="Reflective" complianceLevel="7.0" copyrightFields="false" editPluginID="org.framed.iorm.model.edit" - editorPluginID="org.framed.iorm.model.editor" operationReflection="true" importOrganizing="true"> - <foreignModel>IORM.ecore</foreignModel> - <genPackages prefix="Orm" basePackage="org.framed" disposableProviderFactory="true" - interfacePackageSuffix="model" metaDataPackageSuffix="model" classPackageSuffix="model.impl" - utilityPackageSuffix="model.util" providerPackageSuffix="model.provider" presentationPackageSuffix="model.presentation" - testsPackageSuffix="model.tests" fileExtensions=".diagram" ecorePackage="IORM.ecore#/"> - <genEnums typeSafeEnumCompatible="false" ecoreEnum="IORM.ecore#//Type"> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/CompartmentType"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/NaturalType"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleType"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/DataType"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleImplication"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleEquivalence"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Inheritance"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Relationship"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Total"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Cyclic"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Irreflexive"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleProhibition"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleGroup"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Group"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Fulfillment"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RelationshipImplication"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Acyclic"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Reflexive"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RelationshipExclusion"/> - </genEnums> - <genClasses ecoreClass="IORM.ecore#//NamedElement"> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//NamedElement/name"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//ModelElement"> - <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/container"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/incomingRelations"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/outgoingRelations"/> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//ModelElement/type"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//Model"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Model/elements"/> - <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference IORM.ecore#//Model/parent"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Model/framedConfiguration"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//Relation"> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/target"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/source"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/sourceLabel"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/targetLabel"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/referencedRelation"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/referencedRoles"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//Shape"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/firstSegment"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/secondSegment"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/model"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/description"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//Segment"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Segment/elements"/> - </genClasses> - <nestedGenPackages prefix="Featuremodel" basePackage="org.framed.iorm" disposableProviderFactory="true" - ecorePackage="IORM.ecore#//featuremodel"> - <genEnums typeSafeEnumCompatible="false" ecoreEnum="IORM.ecore#//featuremodel/FeatureName"> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/RML_Feature_Model"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Types"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Structure"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Properties"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Behavior"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Inheritance"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Playable"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Players"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Naturals"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Roles"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartments"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Dates"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Dependent"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/On_Compartments"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/On_Relationships"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Implication"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Prohibition"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Equivalence"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Group_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Occurrence_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationships"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationship_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationship_Cardinality"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Intra_Relationship_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Parthood_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Inter_Relationship_Constraints"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Types"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Structure"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Properties"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Behavior"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Inheritance"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Participants"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Contains_Compartments"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Playable_by_Defining_Compartment"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Data_Types"/> - <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Data_Type_Inheritance"/> - </genEnums> - <genClasses ecoreClass="IORM.ecore#//featuremodel/FRaMEDFeature"> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//featuremodel/FRaMEDFeature/name"/> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//featuremodel/FRaMEDFeature/manuallySelected"/> - </genClasses> - <genClasses ecoreClass="IORM.ecore#//featuremodel/FRaMEDConfiguration"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//featuremodel/FRaMEDConfiguration/features"/> - </genClasses> - </nestedGenPackages> - </genPackages> -</genmodel:GenModel> +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.framed.iorm.model/src" editDirectory="/org.framed.iorm.model.edit/src" + editorDirectory="/org.framed.iorm.model.editor/src" modelPluginID="org.framed.iorm.model" + modelName="ORM" modelPluginClass="" editPluginClass="org.framed.iorm.model.provider.ORMEditPlugin" + editorPluginClass="org.framed.iorm.model.presentation.ORMEditorPlugin" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" + reflectiveDelegation="true" codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" + featureDelegation="Reflective" complianceLevel="7.0" copyrightFields="false" editPluginID="org.framed.iorm.model.edit" + editorPluginID="org.framed.iorm.model.editor" operationReflection="true" importOrganizing="true"> + <foreignModel>IORM.ecore</foreignModel> + <genPackages prefix="Orm" basePackage="org.framed" disposableProviderFactory="true" + interfacePackageSuffix="model" metaDataPackageSuffix="model" classPackageSuffix="model.impl" + utilityPackageSuffix="model.util" providerPackageSuffix="model.provider" presentationPackageSuffix="model.presentation" + testsPackageSuffix="model.tests" fileExtensions=".diagram" ecorePackage="IORM.ecore#/"> + <genEnums typeSafeEnumCompatible="false" ecoreEnum="IORM.ecore#//Type"> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/CompartmentType"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/NaturalType"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleType"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/DataType"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleImplication"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleEquivalence"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Inheritance"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Relationship"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Total"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Cyclic"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Irreflexive"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleProhibition"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RoleGroup"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Group"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Fulfillment"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RelationshipImplication"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Acyclic"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/Reflexive"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//Type/RelationshipExclusion"/> + </genEnums> + <genClasses ecoreClass="IORM.ecore#//NamedElement"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//NamedElement/name"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//ModelElement"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/container"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/incomingRelations"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//ModelElement/outgoingRelations"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//ModelElement/type"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//Model"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Model/elements"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference IORM.ecore#//Model/parent"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Model/framedConfiguration"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//Relation"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/target"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/source"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/sourceLabel"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/targetLabel"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/referencedRelation"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference IORM.ecore#//Relation/referencedRoles"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//Shape"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/firstSegment"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/secondSegment"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/model"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Shape/description"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//Segment"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//Segment/elements"/> + </genClasses> + <nestedGenPackages prefix="Featuremodel" basePackage="org.framed.iorm" disposableProviderFactory="true" + ecorePackage="IORM.ecore#//featuremodel"> + <genEnums typeSafeEnumCompatible="false" ecoreEnum="IORM.ecore#//featuremodel/FeatureName"> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/RML_Feature_Model"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Types"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Structure"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Properties"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Behavior"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Inheritance"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Playable"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Players"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Naturals"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Roles"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartments"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Dates"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Dependent"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/On_Compartments"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/On_Relationships"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Implication"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Prohibition"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Role_Equivalence"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Group_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Occurrence_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationships"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationship_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Relationship_Cardinality"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Intra_Relationship_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Parthood_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Inter_Relationship_Constraints"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Types"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Structure"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Properties"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Behavior"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Compartment_Inheritance"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Participants"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Contains_Compartments"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Playable_by_Defining_Compartment"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Data_Types"/> + <genEnumLiterals ecoreEnumLiteral="IORM.ecore#//featuremodel/FeatureName/Data_Type_Inheritance"/> + </genEnums> + <genClasses ecoreClass="IORM.ecore#//featuremodel/FRaMEDFeature"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//featuremodel/FRaMEDFeature/name"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute IORM.ecore#//featuremodel/FRaMEDFeature/manuallySelected"/> + </genClasses> + <genClasses ecoreClass="IORM.ecore#//featuremodel/FRaMEDConfiguration"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference IORM.ecore#//featuremodel/FRaMEDConfiguration/features"/> + </genClasses> + </nestedGenPackages> + </genPackages> +</genmodel:GenModel> diff --git a/org.framed.iorm.transformation.test/META-INF/MANIFEST.MF b/org.framed.iorm.transformation.test/META-INF/MANIFEST.MF index 69218139d564c24cae0a794189fd9aa5e343b029..3bcd422d9c42f98eb83102809ffbd902b5447e21 100644 --- a/org.framed.iorm.transformation.test/META-INF/MANIFEST.MF +++ b/org.framed.iorm.transformation.test/META-INF/MANIFEST.MF @@ -11,7 +11,7 @@ Require-Bundle: org.eclipse.core.runtime, org.framed.iorm.transformation;bundle-version="1.0.0", org.junit, org.rosi.crom.metamodel;visibility:=reexport, - org.framed.iorm.model;bundle-version="0.1.0";visibility:=reexport, + org.framed.iorm.model;bundle-version="1.0.0";visibility:=reexport, org.eclipse.emf.ecore.xmi, org.eclipse.compare;bundle-version="3.5.501", org.eclipse.emf.compare;bundle-version="3.1.0", diff --git a/org.framed.iorm.ui/META-INF/MANIFEST.MF b/org.framed.iorm.ui/META-INF/MANIFEST.MF index 4c1d7105e85b753f2175ba2b78c1e838302ce505..0ab8a1ed7e51b6f2fab09113b24277eead3514f0 100644 --- a/org.framed.iorm.ui/META-INF/MANIFEST.MF +++ b/org.framed.iorm.ui/META-INF/MANIFEST.MF @@ -27,10 +27,9 @@ Require-Bundle: org.framed.iorm.featuremodel;bundle-version="1.0.0", org.eclipse.core.resources;bundle-version="3.11.1";visibility:=reexport, org.eclipse.ui.workbench, org.eclipse.emf.ecore, - org.framed.iorm.editpolicymodel;bundle-version="0.1.0" + org.framed.iorm.editpolicymodel;bundle-version="0.1.0", + org.eclipse.osgi Import-Package: org.eclipse.graphiti.features;version="0.13.2", - org.framed.iorm.model, - org.framed.iorm.model.provider, org.framed.iorm.transformation Bundle-ClassPath: src/, . diff --git a/org.framed.iorm.ui/core/attributeAndOperation/AttributePattern.java b/org.framed.iorm.ui/core/attributeAndOperation/AttributePattern.java index fa84c5cbc3e7c18b4aa74c980fee1655b02e32b5..e7c876ac7bdb19db77fe46e768c27338ef360bad 100644 --- a/org.framed.iorm.ui/core/attributeAndOperation/AttributePattern.java +++ b/org.framed.iorm.ui/core/attributeAndOperation/AttributePattern.java @@ -49,17 +49,15 @@ public class AttributePattern extends AttributeOperationCommonPattern implements Object businessObject = getBusinessObjectForPictogramElement(pictogramElement); if(businessObject instanceof org.framed.iorm.model.Shape) { org.framed.iorm.model.Shape shape = (org.framed.iorm.model.Shape) businessObject; - if(shape.getFirstSegment() != null && shape.getSecondSegment() !=null) { - if(util.usedInModelTypes(usedInReferences).contains(shape.getType())) { - boolean isShadowShape = false; - for(AbstractHasAttsAndOpsReference haaor : usedInReferences) { - if(UIUtil.isShape_IdValue((Shape) pictogramElement, haaor.getShadowShapeID())) - isShadowShape = true; - } - if(!isShadowShape) { - return EditPolicyService.getHandler(this.getDiagram()).canCreateAttribute(createContext, shape.getType()); - } - } } } + if(util.usedInModelTypes(usedInReferences).contains(shape.getType())) { + boolean isShadowShape = false; + for(AbstractHasAttsAndOpsReference haaor : usedInReferences) { + if(UIUtil.isShape_IdValue((Shape) pictogramElement, haaor.getShadowShapeID())) + isShadowShape = true; + } + if(!isShadowShape) + return EditPolicyService.getHandler(this.getDiagram()).canCreateAttribute(createContext, shape.getType()); + } } return false; } diff --git a/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationFeature.java b/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationFeature.java index 8725897236fefbf2716eabdc84b5994e042ddda9..428e7e2b00a3615ed6378e58745e21211413c2c1 100644 --- a/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationFeature.java +++ b/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationFeature.java @@ -1,14 +1,19 @@ package customFeatures; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.emf.ecore.EObject; import org.eclipse.graphiti.features.IFeatureProvider; import org.eclipse.graphiti.features.context.ICustomContext; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.pattern.IPattern; import org.framed.iorm.featuremodel.FRaMEDConfiguration; import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.featuremodel.FeatureName; import org.framed.iorm.featuremodel.FeaturemodelFactory; +import org.framed.iorm.model.Model; import org.framed.iorm.ui.FRaMEDCustomFeature; import org.framed.iorm.ui.UIUtil; @@ -16,6 +21,7 @@ import de.ovgu.featureide.fm.core.base.IFeature; import de.ovgu.featureide.fm.core.configuration.Configuration; import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; //*import for javadoc link +import org.framed.iorm.ui.providers.FeatureProvider; import org.framed.iorm.ui.configuration.ChangeConfigurationContext; //*import for javadoc link import org.framed.iorm.ui.editPolicy.EditPolicyService; import org.framed.iorm.ui.configuration.ChangeConfigurationCommand; //*import for javadoc link @@ -36,15 +42,58 @@ public class ChangeConfigurationFeature extends FRaMEDCustomFeature { */ Literals literals = new Literals(); + /** + * the register for the multipage editors to synchronize + */ + private List<ChangeConfigurationListener> registeredListeners = new ArrayList<ChangeConfigurationListener>(); + /** * Class constructor + * <p> + * It adds any pattern of its feature provider which is also a {@link ChangeConfigurationListener} to its list of + * listeners. * @param featureProvider the feature provider the feature belongs to */ public ChangeConfigurationFeature(IFeatureProvider featureProvider) { super(featureProvider); FEATURE_NAME = literals.CHANGE_CONFIGURATION_FEATURE_NAME; + if(featureProvider instanceof FeatureProvider) { + FeatureProvider framedFeatureProvider = (FeatureProvider) featureProvider; + for(IPattern ipattern : framedFeatureProvider.getPatterns()) { + if(ipattern instanceof ChangeConfigurationListener) { + registerListener((ChangeConfigurationListener) ipattern); + } } } + } + + + + /** + * operation to add a pattern to the list of listeners + * @param multipageEditor the multipage editor to add + */ + private void registerListener(ChangeConfigurationListener listener) { + registeredListeners.add(listener); } + /** + * notify listeners about changes in the configuration by giving the the old and new configuration in the form of a string list + * @param framedFeatureConfiguration the newly changed configuration + * @param oldFramedConfiguration the configuration before the changes + */ + private void notifyListeners(FRaMEDConfiguration framedFeatureConfiguration, FRaMEDConfiguration oldFramedConfiguration) { + List<String> newFramedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : framedFeatureConfiguration.getFeatures()) { + newFramedFeatureNames.add(framedFeature.getName().getLiteral()); + } + List<String> oldFramedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : oldFramedConfiguration.getFeatures()) { + oldFramedFeatureNames.add(framedFeature.getName().getLiteral()); + } + for(ChangeConfigurationListener listener : registeredListeners) { + listener.configurationChanged(newFramedFeatureNames, oldFramedFeatureNames); + } + } + /** * this operation encapsulates when the custom feature should be visible in the context menu * @return false, since the feature is never visible in the context menu @@ -72,31 +121,39 @@ public class ChangeConfigurationFeature extends FRaMEDCustomFeature { /** * This method changes the role models configuration using the following steps: * <p> - * Step 1: It creates a new empty {@link FRaMEDConfiguration}.<br> - * Step 2: For every selected feature in the feature editors configuration add an equivalent + * Step 1: It saves the configuration before the changes done.<br> + * Step 2: It executes the changes.<br> + * Step 3: It creates a new empty {@link FRaMEDConfiguration}.<br> + * Step 4: For every selected feature in the feature editors configuration add an equivalent * {@link FRaMEDFeature} to the created FRaMEDConfiguration.<br> - * Step 3: Set the created FRaMEDConfiguration as configuration of the edited role model. - * Step 4: Refresh the palette to change the shown palette entries according to their feature expressions. - * See {@link FeaturePaletteDescriptor} for further informations. + * Step 5: Set the created FRaMEDConfiguration as configuration of the edited role model. + * Step 6: Refresh the palette to change the shown palette entries according to their feature expressions. + * See {@link FeaturePaletteDescriptor} for further informations.<br> + * Step 7: It notifies its listeners about the changes in the configuration. * @throws ConfigurationInconsistentException */ @Override public void execute(ICustomContext context) { - ChangeConfigurationContext cfmc = (ChangeConfigurationContext) context; //Step 1 + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = UIUtil.getLinkedModelForDiagram(mainDiagram); + FRaMEDConfiguration oldFramedConfiguration = mainModel.getFramedConfiguration(); + //Step 2 + ChangeConfigurationContext cfmc = (ChangeConfigurationContext) context; + //Step 3 FRaMEDConfiguration framedFeatureConfiguration = FeaturemodelFactory.eINSTANCE.createFRaMEDConfiguration(); Configuration editorFeatureConfiguration = cfmc.getConfiguration(); for(IFeature editorFeature : editorFeatureConfiguration.getSelectedFeatures()) { - //Step 2 + //Step 4 FRaMEDFeature framedFeature = FeaturemodelFactory.eINSTANCE.createFRaMEDFeature(); framedFeature.setName(FeatureName.getByName(editorFeature.getName())); framedFeatureConfiguration.getFeatures().add(framedFeature); } - //Step 3 - Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); - UIUtil.getLinkedModelForDiagram(mainDiagram).setFramedConfiguration(framedFeatureConfiguration); - EditPolicyService.setConfiguration(mainDiagram, framedFeatureConfiguration); - //Step 4 + //Step 5 + mainModel.setFramedConfiguration(framedFeatureConfiguration); + //Step 6 getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().refreshPalette(); + //Step 7 + notifyListeners(framedFeatureConfiguration, oldFramedConfiguration); } } diff --git a/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationListener.java b/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationListener.java new file mode 100644 index 0000000000000000000000000000000000000000..c2b688efa8b64746d4b2c3afb282dff448076690 --- /dev/null +++ b/org.framed.iorm.ui/core/customFeatures/ChangeConfigurationListener.java @@ -0,0 +1,16 @@ +package customFeatures; + +import java.util.List; + +/** + * This interface is meant for graphiti pattern that + */ +public interface ChangeConfigurationListener { + + /** + * When the configuration is changed this operation is called on the listener implementing this interface. + * @param newframedFeatureNames the newly changed configuration + * @param oldframedFeatureNames the configuration before the changes + */ + public void configurationChanged(List<String> newframedFeatureNames, List<String> oldframedFeatureNames); +} diff --git a/org.framed.iorm.ui/core/inheritance/InheritancePattern.java b/org.framed.iorm.ui/core/inheritance/InheritancePattern.java index 6690f7a407fa4c34323b9a8128eafef4845271e8..a2ebd79b8a39df28678f9644cc89e16998248352 100644 --- a/org.framed.iorm.ui/core/inheritance/InheritancePattern.java +++ b/org.framed.iorm.ui/core/inheritance/InheritancePattern.java @@ -181,15 +181,13 @@ public class InheritancePattern extends FRaMEDConnectionPattern { if(source instanceof org.framed.iorm.model.Shape && target instanceof org.framed.iorm.model.Shape) { org.framed.iorm.model.Shape sourceShape = (org.framed.iorm.model.Shape) source; org.framed.iorm.model.Shape targetShape = (org.framed.iorm.model.Shape) target; - if(sourceShape.getFirstSegment() != null && sourceShape.getSecondSegment() !=null && - targetShape.getFirstSegment() != null && targetShape.getSecondSegment() !=null) { - if(sourceShape != null && targetShape != null) { - if(sourceShape.getContainer() == targetShape.getContainer() && - !(sourceShape.equals(targetShape))) { - if(types.contains(sourceShape.getType())) - if(targetShape.getType() == sourceShape.getType()) - return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.INHERITANCE); - } } } } + if(sourceShape != null && targetShape != null) { + if(sourceShape.getContainer() == targetShape.getContainer() && + !(sourceShape.equals(targetShape))) { + if(types.contains(sourceShape.getType())) + if(targetShape.getType() == sourceShape.getType()) + return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.INHERITANCE); + } } } return false; } diff --git a/org.framed.iorm.ui/modules/rolemodel/AddRoleModelContext.java b/org.framed.iorm.ui/core/rolemodel/AddRoleModelContext.java similarity index 100% rename from org.framed.iorm.ui/modules/rolemodel/AddRoleModelContext.java rename to org.framed.iorm.ui/core/rolemodel/AddRoleModelContext.java diff --git a/org.framed.iorm.ui/modules/rolemodel/Literals.java b/org.framed.iorm.ui/core/rolemodel/Literals.java similarity index 52% rename from org.framed.iorm.ui/modules/rolemodel/Literals.java rename to org.framed.iorm.ui/core/rolemodel/Literals.java index f8790f8b8244a89f2dc91d442b62ec7703bdf56c..f5cf3309fc97e975885816b9d17210493af776b6 100644 --- a/org.framed.iorm.ui/modules/rolemodel/Literals.java +++ b/org.framed.iorm.ui/core/rolemodel/Literals.java @@ -4,13 +4,18 @@ import org.eclipse.graphiti.util.IColorConstant; import org.framed.iorm.ui.UILiterals; import org.framed.iorm.ui.palette.PaletteView; +/** + * The literals of role models are mostly the same as the ones of a compartment type, since a created role model is handled like + * a compartment type if the corresponding feature is chosen. + * @author Kevin Kassin + */ public class Literals { /** * the features names used for the palette entry of this feature */ public final String FEATURE_NAME = "Role Model", - ELEMENTS_FEATURE_NAME = "RoleModelPattern"; + ELEMENTS_FEATURE_NAME = "RoleModelElementPattern"; /** * the standard name for a pictogramm element and business object created by the feature @@ -20,9 +25,9 @@ public class Literals { /** * the ids or the paths for icon used for palette entry of this feature */ - public final String ICON_IMG_ID = "org.framed.iorm.ui.modules.roleModel", - ELEMENTS_ICON_IMG_ID = "org.framed.iorm.ui.modules.roleModelElements", - ICON_IMG_PATH = "modules/rolemodel/icon_rolemodel.png"; + public final String ICON_IMG_ID = "org.framed.iorm.ui.core.rolemodel", + ELEMENTS_ICON_IMG_ID = "org.framed.iorm.ui.core.roleModelElements", + ICON_IMG_PATH = "core/rolemodel/icon_rolemodel.png"; /** * the kind of diagram this module's pattern creates @@ -35,7 +40,7 @@ public class Literals { public final PaletteView paletteView = PaletteView.COMPARTMENT_VIEW; /** - * identifiers used for role models: most are the same as a compartment types identifier + * identifiers used for role models * <p> * can be for:<br> * (1) the container shape or<br> @@ -51,23 +56,31 @@ public class Literals { * (11) the elements in the content preview segment or<br> * (12) the dot elements that indicate some elements are not shown in the preview */ - public final String SHAPE_ID_COMPARTMENTTYPE_CONTAINER = "shape_ct_container", - SHAPE_ID_COMPARTMENTTYPE_TYPEBODY = "shape_ct_typebody", - SHAPE_ID_COMPARTMENTTYPE_SHADOW = "shape_ct_shadow", - SHAPE_ID_COMPARTMENTTYPE_NAME = "shape_ct_name", - SHAPE_ID_COMPARTMENTTYPE_FIRSTLINE = "shape_ct_firstline", - SHAPE_ID_COMPARTMENTTYPE_SECONDLINE = "shape_ct_secondline", - SHAPE_ID_COMPARTMENTTYPE_THIRDLINE = "shape_ct_thirdline", - SHAPE_ID_COMPARTMENTTYPE_ATTRIBUTECONTAINER = "shape_ct_attcontainer", - SHAPE_ID_COMPARTMENTTYPE_OPERATIONCONTAINER = "shape_ct_opcontainer", - SHAPE_ID_COMPARTMENTTYPE_CONTENT_PREVIEW = "shape_ct_contentpreview", - SHAPE_ID_ROLEMODEL_ELEMENT = "shape_rm_element", - SHAPE_ID_ROLEMODEL_INDICATOR_DOTS = "shape_rm_indicator_dots"; + public final String SHAPE_ID_ROLEMODEL_CONTAINER = "shape_ct_container", + SHAPE_ID_ROLEMODEL_TYPEBODY = "shape_ct_typebody", + SHAPE_ID_ROLEMODEL_SHADOW = "shape_ct_shadow", + SHAPE_ID_ROLEMODEL_NAME = "shape_ct_name", + SHAPE_ID_ROLEMODEL_FIRSTLINE = "shape_ct_firstline", + SHAPE_ID_ROLEMODEL_SECONDLINE = "shape_ct_secondline", + SHAPE_ID_ROLEMODEL_THIRDLINE = "shape_ct_thirdline", + SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER = "shape_ct_attcontainer", + SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER = "shape_ct_opcontainer", + SHAPE_ID_ROLEMODEL_CONTENT_PREVIEW = "shape_ct_contentpreview", + SHAPE_ID_ROLEMODEL_ELEMENT = "shape_ct_element", + SHAPE_ID_ROLEMODEL_INDICATOR_DOTS = "shape_ct_indicator_dots"; + + /** + * messages used as direct editing tips + */ + public final String DIRECTEDITING_ROLEMODEL = "A compartment types name cant be empty or contain spaces. Numbers are allowed but not as first symbol.", + NAME_ALREADY_USED_ROLEMODEL = "Another compartment type already has the same name!"; /** * reason messages used in the <em>updateNeeded</em> operations of the shape pattern */ - public final String REASON_AMOUNT_ELEMENTS = "Different amount of elements.", + public final String REASON_NAME_NULL = "Name is null.", + REASON_NAME_OUT_OF_DATE = "Name is out of date.", + REASON_AMOUNT_ELEMENTS = "Different amount of elements.", REASON_NAMES_ELEMENTS = "Different names of elements."; /** @@ -89,8 +102,8 @@ public class Literals { * (3) the color of backgrounds or<br> * (4) the color of graphiti shapes shadows */ - public final IColorConstant COLOR_TEXT = IColorConstant.GRAY, - COLOR_LINES = IColorConstant.GRAY, + public final IColorConstant COLOR_TEXT = UILiterals.COLOR_TEXT, + COLOR_LINES = UILiterals.COLOR_LINES, COLOR_BACKGROUND = UILiterals.COLOR_BACKGROUND, - COLOR_SHADOW = IColorConstant.LIGHT_GRAY; + COLOR_SHADOW = UILiterals.COLOR_SHADOW; } diff --git a/org.framed.iorm.ui/modules/rolemodel/RoleModelElementPattern.java b/org.framed.iorm.ui/core/rolemodel/RoleModelElementPattern.java similarity index 100% rename from org.framed.iorm.ui/modules/rolemodel/RoleModelElementPattern.java rename to org.framed.iorm.ui/core/rolemodel/RoleModelElementPattern.java diff --git a/org.framed.iorm.ui/modules/rolemodel/RoleModelGroupingFeatureReference.java b/org.framed.iorm.ui/core/rolemodel/RoleModelGroupingFeatureReference.java similarity index 73% rename from org.framed.iorm.ui/modules/rolemodel/RoleModelGroupingFeatureReference.java rename to org.framed.iorm.ui/core/rolemodel/RoleModelGroupingFeatureReference.java index 471951f1cd8d0bee74390529a8e91cacd190bca2..caf2edef6168161ff91a84e86c0013760150cd0a 100644 --- a/org.framed.iorm.ui/modules/rolemodel/RoleModelGroupingFeatureReference.java +++ b/org.framed.iorm.ui/core/rolemodel/RoleModelGroupingFeatureReference.java @@ -20,9 +20,9 @@ public class RoleModelGroupingFeatureReference extends AbstractGroupingFeatureRe public RoleModelGroupingFeatureReference() { modelType = Type.COMPARTMENT_TYPE; DIAGRAM_KIND = literals.DIAGRAM_KIND; - SHAPE_ID_CONTAINER = literals.SHAPE_ID_COMPARTMENTTYPE_CONTAINER; - SHAPE_ID_NAME = literals.SHAPE_ID_COMPARTMENTTYPE_NAME; - SHAPE_ID_TYPEBODY = literals.SHAPE_ID_COMPARTMENTTYPE_TYPEBODY; + SHAPE_ID_CONTAINER = literals.SHAPE_ID_ROLEMODEL_CONTAINER; + SHAPE_ID_NAME = literals.SHAPE_ID_ROLEMODEL_NAME; + SHAPE_ID_TYPEBODY = literals.SHAPE_ID_ROLEMODEL_TYPEBODY; paletteView = literals.paletteView; } } diff --git a/org.framed.iorm.ui/modules/rolemodel/RoleModelPattern.java b/org.framed.iorm.ui/core/rolemodel/RoleModelPattern.java similarity index 59% rename from org.framed.iorm.ui/modules/rolemodel/RoleModelPattern.java rename to org.framed.iorm.ui/core/rolemodel/RoleModelPattern.java index 021d825a3f3fefbc41cca4df6a081b5176409302..0a95f89f000d1a348a860720a5b2b5a75d08248f 100644 --- a/org.framed.iorm.ui/modules/rolemodel/RoleModelPattern.java +++ b/org.framed.iorm.ui/core/rolemodel/RoleModelPattern.java @@ -7,6 +7,7 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.graphiti.features.IDeleteFeature; +import org.eclipse.graphiti.features.IDirectEditingInfo; import org.eclipse.graphiti.features.IFeature; import org.eclipse.graphiti.features.IReason; import org.eclipse.graphiti.features.context.IAddContext; @@ -36,9 +37,11 @@ import org.eclipse.graphiti.ui.editor.DiagramEditorInput; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; +import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.model.Model; import org.framed.iorm.model.ModelElement; import org.framed.iorm.model.OrmFactory; +import org.framed.iorm.model.Segment; import org.framed.iorm.model.Type; import org.framed.iorm.ui.FRaMEDShapePattern; import org.framed.iorm.ui.UILiterals; @@ -49,22 +52,26 @@ import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; import org.framed.iorm.ui.palette.PaletteCategory; import org.framed.iorm.ui.palette.PaletteView; import org.framed.iorm.ui.palette.ViewVisibility; +import org.framed.iorm.ui.references.AbstractAttributeAndOperationReference; import org.framed.iorm.ui.references.AbstractGroupingFeatureReference; import org.framed.iorm.ui.references.AbstractStepInReference; import org.framed.iorm.ui.wizards.RoleModelWizard; /** - * This graphiti pattern class is used to work with role models, which {@link org.framed.iorm.model.Shape}s - * of the type {@link Type#COMPARTMENT_TYPE} when compartment_type feature is not choosen. + * This graphiti pattern class is used to work with {@link org.framed.iorm.model.Shape}s + * of the type {@link Type#COMPARTMENT_TYPE} created by the role model feature in the editor. * <p> - * It deals with the following aspects of role models:<br> + * It is mostly the same as the pattern of the compartment type, since a created role model is handled like + * a compartment type if the corresponding feature is chosen. + * <p> + * It deals with the following aspects of role model:<br> * (1) adding a role model to the diagram, especially its pictogram elements<br> * (2) creating the role model, especially its business object<br> - * (3) layout the group, especially setting lines and role models elements at the right positions<br> - * (4) updating its content overview<br> + * (3) layout the group, especially setting lines and role model elements at the right positions<br> + * (4) updating the role model's content overview<br> * (5) moves the drop shadow with the type body and disables moving the drop shadow manually<br> * (6) resizes the drop shadow with the type body and disables resizing the drop shadow manually<br> - * (7) deleting all the compartments pictogram elements and its diagram, also disables deleting the drop + * (7) deleting all the role model's pictogram elements and its diagram, also disables deleting the drop * shadow manually * @author Kevin Kassin */ @@ -84,7 +91,12 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * the reference to the step in feature */ private final AbstractStepInReference stepInReference = UIUtil.getStepInFeatureReference(); - + + /** + * a reference class which encapsulates the dependency to the attribute and operation features + */ + private final AbstractAttributeAndOperationReference attOpsReference = UIUtil.getAttributeAndOperationFeatureReference(); + /** * the list of reference classes which save in module feature's shapes can group objects * @see AbstractGroupingFeatureReference @@ -129,18 +141,24 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { if(stepInReference == null) return null; return (ICustomFeature) UIUtil.findFeatureByName(customFeatures, stepInReference.getStepInFeatureName()); } - + /** * checks if pattern is applicable for a given business object - * @return true, if business object is a {@link org.framed.iorm.model.Shape} of type {@link Type#COMPARTMENT_TYPE} + * @return true, if business object is a {@link org.framed.iorm.model.Shape} of type {@link Type#COMPARTMENT_TYPE} and the + * compartment type feature is not chosen */ @Override public boolean isMainBusinessObjectApplicable(Object businessObject) { if(businessObject instanceof org.framed.iorm.model.Shape) { org.framed.iorm.model.Shape shape = (org.framed.iorm.model.Shape) businessObject; - if(shape.getType() == Type.COMPARTMENT_TYPE && - shape.getFirstSegment()==null && - shape.getSecondSegment()==null) return true; + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = (Model) getBusinessObjectForPictogramElement(mainDiagram); + List<String> framedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : mainModel.getFramedConfiguration().getFeatures()) { + framedFeatureNames.add(framedFeature.getName().getLiteral()); + } + if(shape.getType() == Type.COMPARTMENT_TYPE && + !(framedFeatureNames.contains("Compartment_Types"))) return true; } return false; } @@ -165,14 +183,13 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { return isMainBusinessObjectApplicable(businessObject); } - // add feature //~~~~~~~~~~~~~ /** * calculates if the role model can be added to the diagram * <p> * returns true if:<br> - * (1) if the added business object is a role model and <br> + * (1) if the added business object is a compartment type and <br> * (2) if the target container is a diagram with a model linked * @return if the role model can be added */ @@ -203,23 +220,32 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * <ul><li>name text</li></ul> * <li>first line container</li> * <ul><li>first polyline</li></ul> + * <li>attribute container shape</li> + * <ul><li>attribute container rectangle</li></ul> + * <li>second line container</li> + * <ul><li>second polyline</li></ul> + * <li>operation container shape</li> + * <ul><li>operation container rectangle</li></ul> + * <li>third line container</li> + * <ul><li>third polyline</li></ul> * <li>model content preview container</li> * <ul><li>model content preview rectangle</li></ul> * </ul> * </ul> * </ul> * <p> - * The (this patterns) role model diagram will be created outside of (this patterns) role models <em>container shape</em>. - * It can be found as child of the <em>container diagram</em> of the overall model. If its not clear what <em>container - * diagram</em> means, see {@link RoleModelWizard#createEmfFileForDiagram} for reference. + * The role model's diagram will be created outside of the role model <em>container shape</em>. It can be + * found as child of the <em>container diagram</em> of the role model. If its not clear what <em>container diagram</em> + * means, see {@link RoleModelWizard#createEmfFileForDiagram} for reference. * <p> * It uses follows this steps:<br> * Step 1: It gets the new object, the diagram to create the role model in and calculates the height and width * of the role model's representation.<br> * Step 2: It creates the structure shown above.<br> * Step 3: It sets the shape identifiers for the created graphics algorithms of the role model.<br> - * Step 4: It links the created shapes of the role model to its business objects.<br> - * Step 5: It enables anchors and layouting of the role model. Also updates the group it is created in. + * Step 4: It links the created shapes of the group to its business objects.<br> + * Step 5: It enables direct editing, anchors and layouting of the role model. It also updates the group in which + * its created, if any. */ @Override public PictogramElement add(IAddContext addContext) { @@ -259,16 +285,43 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { Shape firstLineShape = pictogramElementCreateService.createShape(typeBodyShape, false); Polyline firstPolyline = graphicAlgorithmService.createPolyline(firstLineShape, new int[] {0, literals.HEIGHT_NAME_SHAPE, width, literals.HEIGHT_NAME_SHAPE}); firstPolyline.setForeground(manageColor(literals.COLOR_LINES)); - + + //attribute container + ContainerShape attributeContainer = pictogramElementCreateService.createContainerShape(typeBodyShape, false); + Rectangle attributeRectangle = graphicAlgorithmService.createRectangle(attributeContainer); + attributeRectangle.setLineVisible(false); + attributeRectangle.setBackground(manageColor(literals.COLOR_BACKGROUND)); + int horizontalFirstThird = util.calculateHorizontaltFirstThird(height); + graphicAlgorithmService.setLocationAndSize(attributeRectangle, literals.PUFFER_BETWEEN_ELEMENTS, literals.HEIGHT_NAME_SHAPE+literals.PUFFER_BETWEEN_ELEMENTS, + width-2*literals.PUFFER_BETWEEN_ELEMENTS, horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS); + //second line + Shape secondLineShape = pictogramElementCreateService.createShape(typeBodyShape, false); + Polyline secondPolyline = graphicAlgorithmService.createPolyline(secondLineShape, new int[] {0, horizontalFirstThird, width, horizontalFirstThird}); + secondPolyline.setForeground(manageColor(literals.COLOR_LINES)); + + //operation container + ContainerShape operationContainer = pictogramElementCreateService.createContainerShape(typeBodyShape, false); + Rectangle operationRectangle = graphicAlgorithmService.createRectangle(operationContainer); + operationRectangle.setLineVisible(false); + operationRectangle.setBackground(manageColor(literals.COLOR_BACKGROUND)); + graphicAlgorithmService.setLocationAndSize(operationRectangle, literals.PUFFER_BETWEEN_ELEMENTS, horizontalFirstThird+literals.PUFFER_BETWEEN_ELEMENTS, + width-2*literals.PUFFER_BETWEEN_ELEMENTS, horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS); + + //third line + Shape thirdLineShape = pictogramElementCreateService.createShape(typeBodyShape, false); + int horizontalSecondThird = util.calculateHorizontaltSecondThird(height); + Polyline thirdPolyline = graphicAlgorithmService.createPolyline(thirdLineShape, new int[] {0, horizontalSecondThird, width, horizontalSecondThird}); + thirdPolyline.setForeground(manageColor(literals.COLOR_LINES)); + //model content preview container ContainerShape modelContainer = pictogramElementCreateService.createContainerShape(typeBodyShape, false); Rectangle modelRectangle = graphicAlgorithmService.createRectangle(modelContainer); - modelRectangle.setBackground(manageColor(literals.COLOR_BACKGROUND)); modelRectangle.setLineVisible(false); - graphicAlgorithmService.setLocationAndSize(modelRectangle, literals.PUFFER_BETWEEN_ELEMENTS, literals.HEIGHT_NAME_SHAPE+literals.PUFFER_BETWEEN_ELEMENTS, - width-2*literals.PUFFER_BETWEEN_ELEMENTS, height-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS); + modelRectangle.setBackground(manageColor(literals.COLOR_BACKGROUND)); + graphicAlgorithmService.setLocationAndSize(modelRectangle, literals.PUFFER_BETWEEN_ELEMENTS, horizontalSecondThird+literals.PUFFER_BETWEEN_ELEMENTS, + width-2*literals.PUFFER_BETWEEN_ELEMENTS, horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS); - //role model diagram + //role model's diagram Diagram contentDiagram = pictogramElementCreateService.createDiagram(UILiterals.DIAGRAM_TYPE_ID, addedCompartmentType.getName(), 10, true); UIUtil.setDiagram_KindValue(contentDiagram, literals.DIAGRAM_KIND); AddRoleModelContext agctc = (AddRoleModelContext) addContext; @@ -276,12 +329,16 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { getDiagram().getContainer().getChildren().add(contentDiagram); //Step 3 - UIUtil.setShape_IdValue(containerShape, literals.SHAPE_ID_COMPARTMENTTYPE_CONTAINER); - UIUtil.setShape_IdValue(typeBodyShape, literals.SHAPE_ID_COMPARTMENTTYPE_TYPEBODY); - UIUtil.setShape_IdValue(dropShadowShape, literals.SHAPE_ID_COMPARTMENTTYPE_SHADOW); - UIUtil.setShape_IdValue(nameShape, literals.SHAPE_ID_COMPARTMENTTYPE_NAME); - UIUtil.setShape_IdValue(firstLineShape, literals.SHAPE_ID_COMPARTMENTTYPE_FIRSTLINE); - UIUtil.setShape_IdValue(modelContainer, literals.SHAPE_ID_COMPARTMENTTYPE_CONTENT_PREVIEW); + UIUtil.setShape_IdValue(containerShape, literals.SHAPE_ID_ROLEMODEL_CONTAINER); + UIUtil.setShape_IdValue(typeBodyShape, literals.SHAPE_ID_ROLEMODEL_TYPEBODY); + UIUtil.setShape_IdValue(dropShadowShape, literals.SHAPE_ID_ROLEMODEL_SHADOW); + UIUtil.setShape_IdValue(nameShape, literals.SHAPE_ID_ROLEMODEL_NAME); + UIUtil.setShape_IdValue(firstLineShape, literals.SHAPE_ID_ROLEMODEL_FIRSTLINE); + UIUtil.setShape_IdValue(attributeContainer, literals.SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER); + UIUtil.setShape_IdValue(secondLineShape, literals.SHAPE_ID_ROLEMODEL_SECONDLINE); + UIUtil.setShape_IdValue(operationContainer, literals.SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER); + UIUtil.setShape_IdValue(thirdLineShape, literals.SHAPE_ID_ROLEMODEL_THIRDLINE); + UIUtil.setShape_IdValue(modelContainer, literals.SHAPE_ID_ROLEMODEL_CONTENT_PREVIEW); //Step 4 link(containerShape, addedCompartmentType); @@ -289,9 +346,18 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { link(dropShadowShape, addedCompartmentType); link(nameShape, addedCompartmentType); link(firstLineShape, addedCompartmentType); + link(attributeContainer, addedCompartmentType); + link(secondLineShape, addedCompartmentType); + link(operationContainer, addedCompartmentType); + link(thirdLineShape, addedCompartmentType); link(modelContainer, addedCompartmentType); //Step 5 + getFeatureProvider().getDirectEditingInfo().setActive(true); + IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo(); + directEditingInfo.setMainPictogramElement(typeBodyShape); + directEditingInfo.setPictogramElement(nameShape); + directEditingInfo.setGraphicsAlgorithm(text); pictogramElementCreateService.createChopboxAnchor(typeBodyShape); layoutPictogramElement(containerShape); updateContainingGroupingFeaturesObject(); @@ -323,7 +389,9 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * <ul> * <li>(org.framed.iorm.model.Shape) role model</li> * <ul> - * <li>(Model) model</li> + * <li>(Segment) first segment (for attributes)</li> + * <li>(Segment) second segment (for operations)</li> + * <li>(Model) role model model</li> * </ul> * </ul> * <p> @@ -331,37 +399,44 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * Step 1: It creates the structure shown above.<br> * Step 2: It adds the new role model to the elements of the model of the diagram in which its created.<br> * Step 3: It call the add function to add the pictogram elements of the role model using a - * {@link AddRoleModelTypeContext}. + * {@link AddRoleModelContext}. * @return the created business object of the role model */ @Override public Object[] create(ICreateContext createContext) { //Step 1 //compartment type - org.framed.iorm.model.Shape newRoleModel = OrmFactory.eINSTANCE.createShape(); - newRoleModel.setType(Type.COMPARTMENT_TYPE); + org.framed.iorm.model.Shape newCompartmentType = OrmFactory.eINSTANCE.createShape(); + newCompartmentType.setType(Type.COMPARTMENT_TYPE); String standardName = UIUtil.calculateStandardNameRoleModelWide(getDiagram(), Type.COMPARTMENT_TYPE, literals.STANDARD_NAME); - newRoleModel.setName(standardName); + newCompartmentType.setName(standardName); + //create segments + Segment attributeSegment = OrmFactory.eINSTANCE.createSegment(), + operationSegment = OrmFactory.eINSTANCE.createSegment(); + getDiagram().eResource().getContents().add(attributeSegment); + getDiagram().eResource().getContents().add(operationSegment); + newCompartmentType.setFirstSegment(attributeSegment); + newCompartmentType.setSecondSegment(operationSegment); //model Model compartmentsModel = OrmFactory.eINSTANCE.createModel(); getDiagram().eResource().getContents().add(compartmentsModel); - newRoleModel.setModel(compartmentsModel); + newCompartmentType.setModel(compartmentsModel); //Step 2 Model model = UIUtil.getLinkedModelForDiagram((Diagram) getDiagram()); - if(newRoleModel.eResource() != null) getDiagram().eResource().getContents().add(newRoleModel); - model.getElements().add(newRoleModel); - newRoleModel.setContainer(model); + if(newCompartmentType.eResource() != null) getDiagram().eResource().getContents().add(newCompartmentType); + model.getElements().add(newCompartmentType); + newCompartmentType.setContainer(model); //Step 3 AddRoleModelContext actc = new AddRoleModelContext(); UIUtil.getAddContextForCreateShapeContext(actc, createContext); - actc.setNewObject(newRoleModel); + actc.setNewObject(newCompartmentType); actc.setModelToLink(compartmentsModel); if(canAdd(actc)) add(actc); - return new Object[] { newRoleModel }; + return new Object[] { newCompartmentType }; } - + //layout feature //~~~~~~~~~~~~~~ /** @@ -373,7 +448,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * of the type {@link Type#COMPARTMENT_TYPE} * @return if the given pictogram can be layouted */ - @Override + @Override public boolean canLayout(ILayoutContext layoutContext) { PictogramElement element = layoutContext.getPictogramElement(); if(element instanceof ContainerShape) { @@ -392,7 +467,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { * layout the whole role model using the following steps: * <p> * Step 1: Its fetches the type body shape and drop shadow shape<br> - * Step 2: It calculates the new height and width. It also uses this data to set + * Step 2: It calculates the new height, width and horizontal center. It also uses this data to set * the size of the type body and drop shadow shape.<br> * Step 3: It now iterates over all shapes of the role model:<br> * (a) It sets the width of the names shape.<br> @@ -404,11 +479,11 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { @Override public boolean layout(ILayoutContext layoutContext) { boolean layoutChanged = false; - int newHeight, newWidth; + int newHeight, newWidth, newY; Shape indicatorDotsShapeToDelete; ContainerShape container = (ContainerShape) layoutContext.getPictogramElement(); //Step 1 - if(!(UIUtil.isShape_IdValue(container, literals.SHAPE_ID_COMPARTMENTTYPE_TYPEBODY))) return false; + if(!(UIUtil.isShape_IdValue(container, literals.SHAPE_ID_ROLEMODEL_TYPEBODY))) return false; else { Rectangle typeBodyRectangle = (Rectangle) container.getGraphicsAlgorithm(); Rectangle dropShadowRectangle = (Rectangle) container.getContainer().getChildren().get(0).getGraphicsAlgorithm(); @@ -424,32 +499,128 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { //Step 3 for (Shape shape : container.getChildren()){ GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm(); + int horizontalFirstThird = util.calculateHorizontaltFirstThird(height); + int horizontalSecondThird = util.calculateHorizontaltSecondThird(height); //(a) name shape if (graphicsAlgorithm instanceof Text) { Text text = (Text) graphicsAlgorithm; - if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_COMPARTMENTTYPE_NAME)) { + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_NAME)) { graphicAlgorithmService.setLocationAndSize(text, 0, 0, width, literals.HEIGHT_NAME_SHAPE); layoutChanged=true; } } //(b) line shapes if (graphicsAlgorithm instanceof Polyline) { Polyline polyline = (Polyline) graphicsAlgorithm; - if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_COMPARTMENTTYPE_FIRSTLINE)) { + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_FIRSTLINE)) { polyline.getPoints().set(1, graphicAlgorithmService.createPoint(width, polyline.getPoints().get(1).getY())); layoutChanged=true; } - } - //attribute and operation container + elements + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_SECONDLINE)) { + polyline.getPoints().set(0, graphicAlgorithmService.createPoint(0, horizontalFirstThird)); + polyline.getPoints().set(1, graphicAlgorithmService.createPoint(width, horizontalFirstThird)); + layoutChanged=true; + } + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_THIRDLINE)) { + polyline.getPoints().set(0, graphicAlgorithmService.createPoint(0, horizontalSecondThird)); + polyline.getPoints().set(1, graphicAlgorithmService.createPoint(width, horizontalSecondThird)); + layoutChanged=true; + } } if (graphicsAlgorithm instanceof Rectangle) { Rectangle rectangle = (Rectangle) graphicsAlgorithm; + //(c) attribute container shape + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER)) { + //resize and positioning the container + newHeight = horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS; + newWidth = width-2*literals.PUFFER_BETWEEN_ELEMENTS; + newY = literals.HEIGHT_NAME_SHAPE+literals.PUFFER_BETWEEN_ELEMENTS; + rectangle.setHeight(newHeight); + rectangle.setWidth(newWidth); + ContainerShape attributeContainerShape = (ContainerShape) shape; + EList<Shape> attributes = attributeContainerShape.getChildren(); + //set place of attributes + for(int m = 0; m<attributes.size(); m++) { + Text attributeText = (Text) attributeContainerShape.getChildren().get(m).getGraphicsAlgorithm(); + attributeText.setY(newY+m*attOpsReference.HEIGHT_OPERATION_SHAPE); + attributeText.setWidth(newWidth); + } + //set all attributes visible + indicatorDotsShapeToDelete = null; + for(int j = 0; j<attributes.size(); j++) { + attributes.get(j).setVisible(true); + if(UIUtil.isShape_IdValue(attributes.get(j), attOpsReference.SHAPE_ID_ATTRIBUTE_INDICATOR_DOTS)) + indicatorDotsShapeToDelete = attributes.get(j); + } + attributeContainerShape.getChildren().remove(indicatorDotsShapeToDelete); + //check if not all attributes fit in the attribute field + if(attributeContainerShape.getChildren().size()*attOpsReference.HEIGHT_ATTRIBUTE_SHAPE>newHeight) { + int fittingAttributes = (newHeight-attOpsReference.HEIGHT_ATTRIBUTE_SHAPE)/attOpsReference.HEIGHT_ATTRIBUTE_SHAPE; + //set not fitting attributes to invisible + for(int k = fittingAttributes; k<attributes.size(); k++) { + attributeContainerShape.getChildren().get(k).setVisible(false); + } + //add dots to indicate that not all attributes fit + Shape indicatorDotsShape = pictogramElementCreateService.createShape(attributeContainerShape, true); + Text indicatorDots = graphicAlgorithmService.createText(indicatorDotsShape, "..."); + indicatorDots.setForeground(manageColor(literals.COLOR_TEXT)); + graphicAlgorithmService.setLocationAndSize(indicatorDots, + literals.PUFFER_BETWEEN_ELEMENTS, attOpsReference.HEIGHT_ATTRIBUTE_SHAPE+fittingAttributes*attOpsReference.HEIGHT_ATTRIBUTE_SHAPE, + newWidth-2*literals.PUFFER_BETWEEN_ELEMENTS, attOpsReference.HEIGHT_OPERATION_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS); + UIUtil.setShape_IdValue(indicatorDotsShape, attOpsReference.SHAPE_ID_ATTRIBUTE_INDICATOR_DOTS); + } + layoutChanged=true; + } + //(d) operation container shape + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER)) { + //resize and positioning the container + newHeight = horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS; + newWidth = width-2*literals.PUFFER_BETWEEN_ELEMENTS; + newY = horizontalFirstThird+literals.PUFFER_BETWEEN_ELEMENTS; + rectangle.setHeight(newHeight); + rectangle.setWidth(newWidth); + rectangle.setY(newY); + ContainerShape operationContainerShape = (ContainerShape) shape; + EList<Shape> operations = operationContainerShape.getChildren(); + //set place of attributes + for(int m = 0; m<operations.size(); m++) { + Text operationText = (Text) operationContainerShape.getChildren().get(m).getGraphicsAlgorithm(); + operationText.setY(newY+m*attOpsReference.HEIGHT_OPERATION_SHAPE); + operationText.setWidth(newWidth); + } + //set all operations visible + indicatorDotsShapeToDelete = null; + for(int n = 0; n<operations.size(); n++) { + operations.get(n).setVisible(true); + if(UIUtil.isShape_IdValue(operations.get(n), attOpsReference.SHAPE_ID_OPERATION_INDICATOR_DOTS)) + indicatorDotsShapeToDelete = operations.get(n); + } + operationContainerShape.getChildren().remove(indicatorDotsShapeToDelete); + //check if not all operations fit in the operations field + if(operations.size()*attOpsReference.HEIGHT_OPERATION_SHAPE>newHeight) { + int fittingOperations = (newHeight-attOpsReference.HEIGHT_OPERATION_SHAPE)/attOpsReference.HEIGHT_OPERATION_SHAPE; + //set not fitting operations to invisible + for(int o = fittingOperations; o<operations.size(); o++) { + operationContainerShape.getChildren().get(o).setVisible(false); + } + //add dots to indicate that not all operations fit + Shape indicatorDotsShape = pictogramElementCreateService.createShape(operationContainerShape, true); + Text indicatorDots = graphicAlgorithmService.createText(indicatorDotsShape, "..."); + indicatorDots.setForeground(manageColor(literals.COLOR_TEXT)); + graphicAlgorithmService.setLocationAndSize(indicatorDots, + literals.PUFFER_BETWEEN_ELEMENTS, newY+fittingOperations*attOpsReference.HEIGHT_OPERATION_SHAPE, + newWidth-2*literals.PUFFER_BETWEEN_ELEMENTS, attOpsReference.HEIGHT_OPERATION_SHAPE); + UIUtil.setShape_IdValue(indicatorDotsShape, attOpsReference.SHAPE_ID_OPERATION_INDICATOR_DOTS); + } + layoutChanged=true; + } //(c) content preview container - if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_COMPARTMENTTYPE_CONTENT_PREVIEW)) { + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_CONTENT_PREVIEW)) { //resize and positioning the container - newHeight = height-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS; - newWidth = width-2*literals.PUFFER_BETWEEN_ELEMENTS; - int containerY = literals.HEIGHT_NAME_SHAPE+literals.PUFFER_BETWEEN_ELEMENTS; + newHeight = horizontalFirstThird-literals.HEIGHT_NAME_SHAPE-2*literals.PUFFER_BETWEEN_ELEMENTS; + newWidth = width-2*literals.PUFFER_BETWEEN_ELEMENTS; + newY = horizontalSecondThird+literals.PUFFER_BETWEEN_ELEMENTS; rectangle.setHeight(newHeight); rectangle.setWidth(newWidth); + rectangle.setY(newY); ContainerShape elementsShape = (ContainerShape) shape; EList<Shape> elements = elementsShape.getChildren(); //set all elements visible, delete indicator dots and positions of the elements @@ -458,7 +629,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { for(Shape elementShape : elements) { elementShape.setVisible(true); graphicAlgorithmService.setLocationAndSize(elementShape.getGraphicsAlgorithm(), - literals.PUFFER_BETWEEN_ELEMENTS, containerY+literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE*counter, + literals.PUFFER_BETWEEN_ELEMENTS, newY+literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE*counter, newWidth-2*literals.PUFFER_BETWEEN_ELEMENTS, literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE); if(UIUtil.isShape_IdValue(elementShape, literals.SHAPE_ID_ROLEMODEL_INDICATOR_DOTS)) indicatorDotsShapeToDelete = elementShape; @@ -477,7 +648,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { Text indicatorDots = graphicAlgorithmService.createText(indicatorDotsShape, "..."); indicatorDots.setForeground(manageColor(literals.COLOR_TEXT)); graphicAlgorithmService.setLocationAndSize(indicatorDots, - literals.PUFFER_BETWEEN_ELEMENTS, fittingAttributes*literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE, + literals.PUFFER_BETWEEN_ELEMENTS, newY+fittingAttributes*literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE, newWidth-2*literals.PUFFER_BETWEEN_ELEMENTS, literals.HEIGHT_COMPARTMENT_ELEMENT_SHAPE); UIUtil.setShape_IdValue(indicatorDotsShape, literals.SHAPE_ID_ROLEMODEL_INDICATOR_DOTS); } @@ -495,9 +666,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { Object businessObject = getBusinessObjectForPictogramElement(pictogramElement); if(businessObject instanceof org.framed.iorm.model.Shape) { org.framed.iorm.model.Shape shape = (org.framed.iorm.model.Shape) businessObject; - if(shape.getType() == Type.COMPARTMENT_TYPE && - shape.getFirstSegment() == null && - shape.getSecondSegment() == null) { + if(shape.getType() == Type.COMPARTMENT_TYPE) { return true; } } return false; @@ -509,16 +678,34 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { modelContainerElementName; PictogramElement pictogramElement = updateContext.getPictogramElement(); - if(UIUtil.isShape_IdValue((Shape) pictogramElement, literals.SHAPE_ID_COMPARTMENTTYPE_TYPEBODY)) { + if(UIUtil.isShape_IdValue((Shape) pictogramElement, literals.SHAPE_ID_ROLEMODEL_TYPEBODY)) { + //pictogram name, attributes, operations and elements + String pictogramTypeName = util.getNameOfPictogramElement(pictogramElement); + List<String> pictogramAttributeNames = util.getpictogramAttributeNames(pictogramElement); + List<String> pictogramOperationNames = util.getpictogramOperationNames(pictogramElement); //model element names in model container of shape List<String> pictogramElementsNames = util.getContentPreviewElementsNames(pictogramElement); + //business name and attributes + String businessTypeName = UIUtil.getNameOfBusinessObject(getBusinessObjectForPictogramElement(pictogramElement)); + List<String> businessAttributeNames = util.getBusinessAttributeNames(pictogramElement); + List<String> businessOperationNames = util.getBusinessOperationNames(pictogramElement); //at creation no diagram is existing so catch this List<String> modelElementsNames = null; try { modelElementsNames = UIUtil.getGroupingFeaturesModelElementNames(pictogramElement, getDiagram(), Type.COMPARTMENT_TYPE); } catch(NoDiagramFoundException e) { return Reason.createFalseReason(); } - //check for update: different names/amount in the container preview + //check for update: different names, different amount of attibutes/ operations + if(pictogramTypeName==null || businessTypeName==null) return Reason.createTrueReason(literals.REASON_NAME_NULL); + if(!(pictogramTypeName.equals(businessTypeName))) return Reason.createTrueReason(literals.REASON_NAME_OUT_OF_DATE); + if(pictogramAttributeNames.size() != businessAttributeNames.size()) return Reason.createTrueReason(attOpsReference.REASON_AMOUNT_ATTRIBUTES); + if(pictogramOperationNames.size() != businessOperationNames.size()) return Reason.createTrueReason(attOpsReference.REASON_AMOUNT_OPERATION); + for(int i=0; i<pictogramAttributeNames.size(); i++) { + if(!(pictogramAttributeNames.get(i).equals(businessAttributeNames.get(i)))) return Reason.createTrueReason(attOpsReference.REASON_NAMES_ATTRIBUTES); + } + for(int i=0; i<pictogramOperationNames.size(); i++) { + if(!(pictogramOperationNames.get(i).equals(businessOperationNames.get(i)))) return Reason.createTrueReason(attOpsReference.REASON_NAMES_OPERATIONS); + } if(modelElementsNames.size() != pictogramElementsNames.size()) { return Reason.createTrueReason(literals.REASON_AMOUNT_ELEMENTS); } @@ -533,21 +720,57 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { @Override public boolean update(IUpdateContext updateContext) { int counter; - boolean changed = false; + boolean changed = false; + PictogramElement pictogramElement = updateContext.getPictogramElement(); + //business names of natural type, attributes and operations + String businessTypeName = UIUtil.getNameOfBusinessObject(getBusinessObjectForPictogramElement(pictogramElement)); + List<String> businessAttributeNames = util.getBusinessAttributeNames(pictogramElement); + List<String> businessOperationNames = util.getBusinessOperationNames(pictogramElement); + //set type name in pictogram model if (pictogramElement instanceof ContainerShape) { ContainerShape typeBodyShape = (ContainerShape) pictogramElement; Diagram diagram = util.getCompartmentTypeDiagramForItsShape(typeBodyShape, getDiagram()); for (Shape shape : typeBodyShape.getChildren()) { - //set container preview texts + if (shape.getGraphicsAlgorithm() instanceof Text) { + Text text = (Text) shape.getGraphicsAlgorithm(); + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_NAME)) { + diagram.setName(businessTypeName); + //change group name + text.setValue(businessTypeName); + changed = true; + } + } + //set attribute and operation names and thier places in pictogram model if(shape instanceof ContainerShape) { ContainerShape innerContainerShape = (ContainerShape) shape; if(innerContainerShape.getGraphicsAlgorithm() instanceof Rectangle) { - if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_COMPARTMENTTYPE_CONTENT_PREVIEW)) { + //Attributes + counter = 0; + if(UIUtil.isShape_IdValue(innerContainerShape, literals.SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER)) { + for(Shape attributeShape : innerContainerShape.getChildren()) { + if(UIUtil.isShape_IdValue(attributeShape, attOpsReference.SHAPE_ID_ATTRIBUTE_TEXT)) { + Text text = (Text) attributeShape.getGraphicsAlgorithm(); + text.setValue(businessAttributeNames.get(counter)); + changed = true; + counter++; + } } } + //Operations + counter = 0; + if(UIUtil.isShape_IdValue(innerContainerShape, literals.SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER)) { + for(Shape operationShape : innerContainerShape.getChildren()) { + if(UIUtil.isShape_IdValue(operationShape, attOpsReference.SHAPE_ID_OPERATION_TEXT)) { + Text text = (Text) operationShape.getGraphicsAlgorithm(); + text.setValue(businessOperationNames.get(counter)); + changed = true; + counter++; + } } } + if(UIUtil.isShape_IdValue(shape, literals.SHAPE_ID_ROLEMODEL_CONTENT_PREVIEW)) { ContainerShape modelContainerShape = (ContainerShape) shape; Model compartmentModel = UIUtil.getLinkedModelForDiagram(diagram); + counter = 0; modelContainerShape.getChildren().clear(); for(ModelElement modelElement : compartmentModel.getElements()) { @@ -556,7 +779,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { Text elementText = graphicAlgorithmService.createText(elementShape, UIUtil.getGroupingFeaturesElementText(modelElement)); elementText.setForeground(manageColor(literals.COLOR_TEXT)); UIUtil.setShape_IdValue(elementShape, literals.SHAPE_ID_ROLEMODEL_ELEMENT); - counter=counter+1; + counter++; } } changed = true; layoutPictogramElement(typeBodyShape); @@ -574,7 +797,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { */ @Override public boolean canMoveShape(IMoveShapeContext moveContext) { - if(UIUtil.isShape_IdValue((Shape) moveContext.getPictogramElement(), literals.SHAPE_ID_COMPARTMENTTYPE_SHADOW)) { + if(UIUtil.isShape_IdValue((Shape) moveContext.getPictogramElement(), literals.SHAPE_ID_ROLEMODEL_SHADOW)) { return false; } ContainerShape typeBodyShape = (ContainerShape) moveContext.getPictogramElement(); @@ -618,7 +841,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { */ @Override public boolean canResizeShape(IResizeShapeContext resizeContext) { - if(UIUtil.isShape_IdValue((Shape) resizeContext.getPictogramElement(), literals.SHAPE_ID_COMPARTMENTTYPE_SHADOW)) { + if(UIUtil.isShape_IdValue((Shape) resizeContext.getPictogramElement(), literals.SHAPE_ID_ROLEMODEL_SHADOW)) { return false; } return super.canResizeShape(resizeContext); @@ -631,22 +854,22 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { */ @Override public boolean canDelete(IDeleteContext deleteContext) { - if(UIUtil.isShape_IdValue((Shape) deleteContext.getPictogramElement(), literals.SHAPE_ID_COMPARTMENTTYPE_SHADOW)) { + if(UIUtil.isShape_IdValue((Shape) deleteContext.getPictogramElement(), literals.SHAPE_ID_ROLEMODEL_SHADOW)) { return false; } return super.canDelete(deleteContext); } /** - * deletes the role model and cares about all related concerns using the following steps + * deletes the group as cares about all related concerns using the following steps * <p> * Step 1: It deletes attached connection to it.<br> * Step 2: It gets the role model diagram and creates a {@link DeleteContext} for it.<br> - * Step 3: It gets all compartment types that are a child of this role models to delete them as well. This is needed to be + * Step 3: It gets all compartment types that are a child of this compartment type to delete them as well. This is needed to be * explicitly since otherwise the diagrams of the child compartments would not be deleted.<br> - * Step 4: It closes all editors that opened the diagram of the role model to delete.<br> + * Step 4: It closes all editors that opened the diagram of this group to delete.<br> * Step 5: It gets the container shape of the role model, so this can be deleted instead of the type body shape.<br> - * Step 6: It deletes the shapes gathered in Step 2, 3 and 5. It also updates a group in which the group is in, if any. + * Step 6: It deletes the shapes gathered in Step 2, 3 and 5. * <p> * If its not clear what the different shapes means, see {@link #add} for reference. */ @@ -658,8 +881,8 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { //Step 2 Diagram compartmentDiagram = util.getCompartmentTypeDiagramForItsShape((Shape) deleteContext.getPictogramElement(), getDiagram()); if(compartmentDiagram != null) { - DeleteContext deleteContextForRoleModelDiagram = new DeleteContext(compartmentDiagram); - deleteContextForRoleModelDiagram.setMultiDeleteInfo(new MultiDeleteInfo(false, false, 0)); + DeleteContext deleteContextForGroupDiagram = new DeleteContext(compartmentDiagram); + deleteContextForGroupDiagram.setMultiDeleteInfo(new MultiDeleteInfo(false, false, 0)); //Step 3 for(Shape shape : compartmentDiagram.getChildren()) { if(shape instanceof ContainerShape) { @@ -691,7 +914,7 @@ public class RoleModelPattern extends FRaMEDShapePattern implements IPattern { deleteFeatureForCompartmentDiagram.delete(deleteContextForChildDiagram); } super.delete(deleteContextForAllShapes); - super.delete(deleteContextForRoleModelDiagram); + super.delete(deleteContextForGroupDiagram); updateContainingGroupingFeaturesObject(); } } diff --git a/org.framed.iorm.ui/core/rolemodel/Util.java b/org.framed.iorm.ui/core/rolemodel/Util.java new file mode 100644 index 0000000000000000000000000000000000000000..356926f1fd05ff5d7f3064465dc22de5f2493db1 --- /dev/null +++ b/org.framed.iorm.ui/core/rolemodel/Util.java @@ -0,0 +1,101 @@ +package rolemodel; + +import java.util.List; + +import org.eclipse.graphiti.mm.pictograms.Diagram; +import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.mm.pictograms.Shape; +import org.framed.iorm.ui.UIUtil; +import org.framed.iorm.ui.references.AbstractAttributeAndOperationReference; + +/** +* This class offers utility operations in the scope of the role model feature module. This operations are mostly the same as the +* ones of a compartment type, since a created role model is handled like a compartment type if the corresponding feature is chosen. +* @author Kevin Kassin +*/ +public class Util { + + /** + * the object to get names, ids and so on for this feature + */ + private final Literals literals = new Literals(); + + /** + * a reference class which encapsulates the dependency to the attribute and operation features + */ + private final AbstractAttributeAndOperationReference aaoReference = UIUtil.getAttributeAndOperationFeatureReference(); + + /** + * This operation calculates where the horizontal first third of a role model is. + * @param heightOfCompartmentType the height of the role model + * @return the horizontal first third of the role model + */ + public final int calculateHorizontaltFirstThird(int heightOfCompartmentType) { + return ((heightOfCompartmentType-literals.HEIGHT_NAME_SHAPE)/3)+literals.HEIGHT_NAME_SHAPE; + } + + /** + * This operation calculates where the horizontal second third of a role model is. + * @param heightOfCompartmentType the height of the role model + * @return the horizontal second third of the role model + */ + public final int calculateHorizontaltSecondThird(int heightOfCompartmentType) { + return 2*calculateHorizontaltFirstThird(heightOfCompartmentType)-literals.HEIGHT_NAME_SHAPE; + } + + //Diagram + //~~~~~~~ + /** + * Convenience operation to call {@link UIUtil#getDiagramForGroupingShape(Shape, Diagram, String, String, String)} + * with the correct parameters. + */ + public Diagram getCompartmentTypeDiagramForItsShape(Shape groupOrCompartmentTypeShape, Diagram diagram) { + return UIUtil.getDiagramForGroupingShape(groupOrCompartmentTypeShape, diagram, + literals.SHAPE_ID_ROLEMODEL_TYPEBODY, literals.SHAPE_ID_ROLEMODEL_NAME, literals.DIAGRAM_KIND); + } + + //Update + //~~~~~~ + /** + * Convenience operation to call {@link UIUtil#getNameOfPictogramElement(PictogramElement, String)} with the correct parameters. + */ + public String getNameOfPictogramElement(PictogramElement pictogramElement) { + return UIUtil.getNameOfPictogramElement(pictogramElement, literals.SHAPE_ID_ROLEMODEL_NAME); + } + + /** + * Convenience operation to call {@link UIUtil#getpictogramAttributeNames(PictogramElement, String, String)} with the correct parameters. + */ + public List<String> getpictogramAttributeNames(PictogramElement pictogramElement) { + return UIUtil.getpictogramAttributeNames(pictogramElement, literals.SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER, aaoReference.SHAPE_ID_ATTRIBUTE_TEXT); + } + + /** + * Convenience operation to call {@link UIUtil#getBusinessAttributeNames(PictogramElement, String, String)} with the correct parameters. + */ + public List<String> getBusinessAttributeNames(PictogramElement pictogramElement) { + return UIUtil.getBusinessAttributeNames(pictogramElement, literals.SHAPE_ID_ROLEMODEL_ATTRIBUTECONTAINER, aaoReference.SHAPE_ID_ATTRIBUTE_TEXT); + } + + /** + * Convenience operation to call {@link UIUtil#getpictogramOperationNames(PictogramElement, String, String)} with the correct parameters. + */ + public List<String> getpictogramOperationNames(PictogramElement pictogramElement) { + return UIUtil.getpictogramOperationNames(pictogramElement, literals.SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER, aaoReference.SHAPE_ID_OPERATION_TEXT); + } + + /** + * Convenience operation to call {@link UIUtil#getBusinessOperationNames(PictogramElement, String, String)} with the correct parameters. + */ + public List<String> getBusinessOperationNames(PictogramElement pictogramElement) { + return UIUtil.getBusinessOperationNames(pictogramElement, literals.SHAPE_ID_ROLEMODEL_OPERATIONCONTAINER, aaoReference.SHAPE_ID_OPERATION_TEXT); + } + + /** + * Convenience operation to call {@link UIUtil#getContentPreviewElementsNames(PictogramElement, String, String)} + * with the correct parameters. + */ + public List<String> getContentPreviewElementsNames(PictogramElement pictogramElement) { + return UIUtil.getContentPreviewElementsNames(pictogramElement, literals.SHAPE_ID_ROLEMODEL_CONTENT_PREVIEW, literals.SHAPE_ID_ROLEMODEL_ELEMENT); + } +} diff --git a/org.framed.iorm.ui/core/rolemodel/icon_rolemodel.png b/org.framed.iorm.ui/core/rolemodel/icon_rolemodel.png new file mode 100644 index 0000000000000000000000000000000000000000..2b5ed86355aa76f89b880b0e330a24768568185e Binary files /dev/null and b/org.framed.iorm.ui/core/rolemodel/icon_rolemodel.png differ diff --git a/org.framed.iorm.ui/core/roletype/Literals.java b/org.framed.iorm.ui/core/roletype/Literals.java index 553a6738f1b67a1f8f3cd0cddefffddf4912b891..376210b56500f84f92e8459a4639cd40c94cadf6 100644 --- a/org.framed.iorm.ui/core/roletype/Literals.java +++ b/org.framed.iorm.ui/core/roletype/Literals.java @@ -12,7 +12,8 @@ public class Literals { /** * the features name used for the palette entry of this feature */ - public final String FEATURE_NAME = "Role Type"; + public final String FEATURE_NAME = "Role Type", + OC_FEATURE_NAME = "RT Occurrence Constraints"; /** * name of the custom feature @@ -30,6 +31,7 @@ public class Literals { * the id or the path for icon used for palette entry of this feature */ public final String ICON_IMG_ID = "org.framed.iorm.ui.core.roletype", + OC_ICON_IMG_ID = "org.framed.iorm.ui.modules.rt_oc", ICON_IMG_PATH = "core/roletype/icon_roletype.png"; /** diff --git a/org.framed.iorm.ui/core/roletype/RoleTypePattern.java b/org.framed.iorm.ui/core/roletype/RoleTypePattern.java index 2f40b6d010e6b23b68bef67c27db2bb32f4035cf..3988495c103dae15ef055470e21d281c860f4d4a 100644 --- a/org.framed.iorm.ui/core/roletype/RoleTypePattern.java +++ b/org.framed.iorm.ui/core/roletype/RoleTypePattern.java @@ -1,5 +1,6 @@ package roletype; +import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; @@ -30,6 +31,8 @@ import org.eclipse.graphiti.mm.pictograms.PictogramElement; import org.eclipse.graphiti.mm.pictograms.Shape; import org.eclipse.graphiti.pattern.AbstractPattern; import org.eclipse.graphiti.pattern.IPattern; +import org.framed.iorm.featuremodel.FRaMEDConfiguration; +import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.model.Model; import org.framed.iorm.model.NamedElement; import org.framed.iorm.model.OrmFactory; @@ -101,7 +104,7 @@ public class RoleTypePattern extends FRaMEDShapePattern implements IPattern { ICON_IMG_ID = literals.ICON_IMG_ID; ICON_IMG_PATH = literals.ICON_IMG_PATH; modelType = Type.ROLE_TYPE; - FPD = spec_FPD; + FPD = spec_FPD; } /** @@ -244,13 +247,14 @@ public class RoleTypePattern extends FRaMEDShapePattern implements IPattern { //occurence costraint Shape cardinalityShape = pictogramElementCreateService.createShape(containerShape, true); Text cardinalityText = graphicAlgorithmService.createText(cardinalityShape, addedRoleType.getDescription().getName()); - cardinalityText.setForeground(manageColor(literals.COLOR_TEXT)); + cardinalityText.setForeground(manageColor(literals.COLOR_TEXT)); + cardinalityShape.setVisible(occurrenceConstraintChosen()); graphicAlgorithmService.setLocationAndSize(cardinalityText, x+width/2-literals.HEIGHT_OCCURRENCE_CONSTRAINT/2, y-literals.HEIGHT_OCCURRENCE_CONSTRAINT-literals.PUFFER_BETWEEN_ELEMENTS, literals.WIDTH_OCCURRENCE_CONSTRAINT, literals.HEIGHT_OCCURRENCE_CONSTRAINT); - + //body shape of type ContainerShape typeBodyShape = pictogramElementCreateService.createContainerShape(containerShape, true); RoundedRectangle typeBodyRectangle = graphicAlgorithmService.createRoundedRectangle(typeBodyShape, literals.ROLE_CORNER_RADIUS, literals.ROLE_CORNER_RADIUS); @@ -325,7 +329,25 @@ public class RoleTypePattern extends FRaMEDShapePattern implements IPattern { layoutPictogramElement(typeBodyShape); updateContainingGroupingFeaturesObject(); return containerShape; - } + } + + /** + * calculates if the occurrence constraint feature is chosen when creating a role group + * <p> + * TODO: This should be modularized in a later stage of the development by separating the occurence constraint concern + * from this pattern. + * @return if the occurrence constraint feature is chosen when creating a role group + */ + private boolean occurrenceConstraintChosen() { + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = UIUtil.getLinkedModelForDiagram(mainDiagram); + FRaMEDConfiguration framedConfiguration = mainModel.getFramedConfiguration(); + List<String> framedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : framedConfiguration.getFeatures()) { + framedFeatureNames.add(framedFeature.getName().getLiteral()); + } + return framedFeatureNames.contains("Occurrence_Constraints"); + } //create feature //~~~~~~~~~~~~~~ diff --git a/org.framed.iorm.ui/modules/compartment/CompartmentTypePattern.java b/org.framed.iorm.ui/modules/compartment/CompartmentTypePattern.java index 4ceeb43f3fa1b74d2cf39e4c2c29bbd12d7b60ae..5597515253c40ae59f5c7c9a14ef398b5a79a59f 100644 --- a/org.framed.iorm.ui/modules/compartment/CompartmentTypePattern.java +++ b/org.framed.iorm.ui/modules/compartment/CompartmentTypePattern.java @@ -38,6 +38,7 @@ import org.eclipse.graphiti.ui.editor.DiagramEditorInput; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; +import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.model.Model; import org.framed.iorm.model.ModelElement; import org.framed.iorm.model.OrmFactory; @@ -143,15 +144,21 @@ public class CompartmentTypePattern extends FRaMEDShapePattern implements IPatte /** * checks if pattern is applicable for a given business object - * @return true, if business object is a {@link org.framed.iorm.model.Shape} of type {@link Type#COMPARTMENT_TYPE} + * @return true, if business object is a {@link org.framed.iorm.model.Shape} of type {@link Type#COMPARTMENT_TYPE} and the + * compartment type feature is chosen */ @Override public boolean isMainBusinessObjectApplicable(Object businessObject) { if(businessObject instanceof org.framed.iorm.model.Shape) { org.framed.iorm.model.Shape shape = (org.framed.iorm.model.Shape) businessObject; + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = (Model) getBusinessObjectForPictogramElement(mainDiagram); + List<String> framedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : mainModel.getFramedConfiguration().getFeatures()) { + framedFeatureNames.add(framedFeature.getName().getLiteral()); + } if(shape.getType() == Type.COMPARTMENT_TYPE && - shape.getFirstSegment() != null && - shape.getSecondSegment() != null) return true; + framedFeatureNames.contains("Compartment_Types")) return true; } return false; } diff --git a/org.framed.iorm.ui/modules/relationship/Literals.java b/org.framed.iorm.ui/modules/relationship/Literals.java index 644f1f237c89d67ccd999881cc3c182c14445971..169ca5a96e53930f2995b6b0e52afd1255c22dcd 100644 --- a/org.framed.iorm.ui/modules/relationship/Literals.java +++ b/org.framed.iorm.ui/modules/relationship/Literals.java @@ -12,7 +12,8 @@ public class Literals { /** * the features name used for the palette entry of this feature */ - public final String FEATURE_NAME = "Relationship"; + public final String FEATURE_NAME = "Relationship", + CARDINALITY_FEATURE_NAME = "Relationship Cardinality"; /** * the standard name for a pictogramm element and business object created by the feature or<br> @@ -25,6 +26,7 @@ public class Literals { * the id or the path for icon used for palette entry of this feature */ public final String ICON_IMG_ID = "org.framed.iorm.ui.modules.relationship", + CARDINALITIY_ICON_IMG_ID = "org.framed.iorm.ui.modules.rel_cardinality", ICON_IMG_PATH = "modules/relationship/icon_relationship.png"; /** diff --git a/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java b/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java index fe82ea2731b72c4dcdcdd1b8604c4ea007032b84..a64a1483a6a0032c1856ab3e11f64ab6b8bfa9bf 100644 --- a/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java +++ b/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java @@ -21,7 +21,10 @@ import org.eclipse.graphiti.mm.algorithms.Text; import org.eclipse.graphiti.mm.pictograms.Anchor; import org.eclipse.graphiti.mm.pictograms.Connection; import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; +import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.framed.iorm.featuremodel.FRaMEDConfiguration; +import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.model.Model; import org.framed.iorm.model.NamedElement; import org.framed.iorm.model.OrmFactory; @@ -219,11 +222,13 @@ public class RelationshipPattern extends FRaMEDConnectionPattern { Text sourceLabel = graphicAlgorithmService.createText(connectionDecoratorForSourceLabel, addedRelationship.getSourceLabel().getName()); graphicAlgorithmService.setLocation(sourceLabel, literals.DISTANCE_FROM_CONNECTION_LINE, -1*literals.DISTANCE_FROM_CONNECTION_LINE); sourceLabel.setForeground(manageColor(literals.COLOR_TEXT)); + connectionDecoratorForSourceLabel.setVisible(occurrenceConstraintChosen()); ConnectionDecorator connectionDecoratorForTargetLabel = pictogramElementCreateService.createConnectionDecorator(connection, true, 0.9, true); Text targetLabel = graphicAlgorithmService.createText(connectionDecoratorForTargetLabel, addedRelationship.getTargetLabel().getName()); graphicAlgorithmService.setLocation(targetLabel, literals.DISTANCE_FROM_CONNECTION_LINE, -1*literals.DISTANCE_FROM_CONNECTION_LINE); targetLabel.setForeground(manageColor(literals.COLOR_TEXT)); + connectionDecoratorForTargetLabel.setVisible(occurrenceConstraintChosen()); //Step 4 ConnectionDecorator connectionDecoratorForAnchor = pictogramElementCreateService.createConnectionDecorator(connection, true, 0.5, true); @@ -255,6 +260,24 @@ public class RelationshipPattern extends FRaMEDConnectionPattern { editRelationshipFeature.execute(customContext); return connection; } + + /** + * calculates if the cardinality feature is chosen when creating a relationship + * <p> + * TODO: This should be modularized in a later stage of the development by separating the cardinality concern + * from this pattern. + * @return if the cardinality feature is chosen when creating a role group + */ + private boolean occurrenceConstraintChosen() { + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = UIUtil.getLinkedModelForDiagram(mainDiagram); + FRaMEDConfiguration framedConfiguration = mainModel.getFramedConfiguration(); + List<String> framedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : framedConfiguration.getFeatures()) { + framedFeatureNames.add(framedFeature.getName().getLiteral()); + } + return framedFeatureNames.contains("Occurrence_Constraints"); + } //create feature //~~~~~~~~~~~~~~ @@ -275,11 +298,10 @@ public class RelationshipPattern extends FRaMEDConnectionPattern { org.framed.iorm.model.ModelElement sourceShape = UIUtil.getModelElementForAnchor(sourceAnchor); org.framed.iorm.model.ModelElement targetShape = UIUtil.getModelElementForAnchor(targetAnchor); if(sourceShape != null && targetShape != null) { - if(sourceShape.getContainer() == targetShape.getContainer()) { - if(types.contains(sourceShape.getType())) - if(targetShape.getType() == sourceShape.getType()) - return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.RELATIONSHIP); - } } + if(types.contains(sourceShape.getType())) + if(targetShape.getType() == sourceShape.getType()) + return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.RELATIONSHIP); + } return false; } diff --git a/org.framed.iorm.ui/modules/relationship/cardinality/RelationshipCardinalityPattern.java b/org.framed.iorm.ui/modules/relationship/cardinality/RelationshipCardinalityPattern.java new file mode 100644 index 0000000000000000000000000000000000000000..28d6498f3b32161e8421e6bdaa357645e214d006 --- /dev/null +++ b/org.framed.iorm.ui/modules/relationship/cardinality/RelationshipCardinalityPattern.java @@ -0,0 +1,120 @@ +package relationship.cardinality; + +import java.util.List; + +import org.eclipse.graphiti.mm.pictograms.Connection; +import org.eclipse.graphiti.mm.pictograms.Diagram; +import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.mm.pictograms.Shape; +import org.eclipse.graphiti.pattern.IPattern; +import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; +import org.framed.iorm.model.Relation; +import org.framed.iorm.model.Type; +import org.framed.iorm.ui.FRaMEDShapePattern; +import org.framed.iorm.ui.UIUtil; +import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; +import org.framed.iorm.ui.palette.PaletteCategory; +import org.framed.iorm.ui.palette.ViewVisibility; +import org.framed.iorm.ui.wizards.RoleModelWizard; + +import customFeatures.ChangeConfigurationListener; + +/** + * This pattern manages setting occurrence constraints of role types (in)visible when changing the configuration. It is + * a {@link ChangeConfigurationListener} for that reason. + * @author Kevin Kassin + */ +public class RelationshipCardinalityPattern extends FRaMEDShapePattern implements IPattern, ChangeConfigurationListener { + + /** + * literals of relationship + */ + relationship.Literals literals = new relationship.Literals(); + + /** + * the feature palette descriptor manages the palette visibility, see {@link FeaturePaletteDescriptor} + */ + private final FeaturePaletteDescriptor spec_FPD = new FeaturePaletteDescriptor( + PaletteCategory.NONE, + ViewVisibility.NO_VIEW); + + /** + * class constructor + */ + public RelationshipCardinalityPattern() { + super(); + FEATURE_NAME = literals.CARDINALITY_FEATURE_NAME; + ICON_IMG_ID = literals.CARDINALITIY_ICON_IMG_ID; + FPD = spec_FPD; + } + + /** + * checks if pattern is applicable for a given business object + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + public boolean isMainBusinessObjectApplicable(Object mainBusinessObject) { return false; } + + /** + * checks if pattern is applicable for a given pictogram element + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternControlled(PictogramElement pictogramElement) { return false; } + + /** + * checks if the pictogram element to edit with the pattern is its root + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternRoot(PictogramElement pictogramElement) { return false; } + + /** + * If the editor's configuration changes this operation is called. It takes the old and the new chosen features + * as a list of strings. If the relationship cardinality feature changes its status {@link #setVisibilityOfCardinalities} + * is called. + */ + @Override + public void configurationChanged(List<String> newframedFeatureNames, List<String> oldframedFeatureNames) { + if(newframedFeatureNames.contains("Relationship_Cardinality") && + !(oldframedFeatureNames.contains("Relationship_Cardinality"))) + setVisibilityOfCardinalities(true); + if(!(newframedFeatureNames.contains("Relationship_Cardinality")) && + oldframedFeatureNames.contains("Relationship_Cardinality")) + setVisibilityOfCardinalities(false); + } + + /** + * Sets the visibility of all relationship cardinalities to a given boolean using the following steps: + * <p> + * Step 1: It gets the container diagram to interate over it.<br> + * Step 2: For every child diagram of the container diagram iterates over the its element.<br> + * Step 3: If the inner elements are a relationship it find its cardinalities and set it (in)visible. + * <p> + * If its not clear what <em>container diagram</em> and <em>main diagram</em> means, see + * {@link RoleModelWizard#createEmfFileForDiagram} for reference. + * @param visible the boolean to set the visibility of all cardinalities to + */ + private void setVisibilityOfCardinalities(boolean visible) { + //Step 1 + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + if(mainDiagram.getContainer() instanceof Diagram) { + Diagram containerDiagram = (Diagram) mainDiagram.getContainer(); + for(Shape shape : containerDiagram.getChildren()) { + //Step 2 + if(shape instanceof Diagram) { + Diagram diagram = (Diagram) shape; + for(Connection connection : diagram.getConnections()) { + Object businessObject = getBusinessObjectForPictogramElement(connection); + //Step 3 + if(businessObject instanceof Relation) { + if(((Relation) businessObject).getType() == Type.RELATIONSHIP) { + for(ConnectionDecorator decorator : connection.getConnectionDecorators()) { + if(UIUtil.isShape_IdValue(decorator, literals.SHAPE_ID_RELATIONSHIP_SOURCE_CARDINALITY_DECORATOR) || + UIUtil.isShape_IdValue(decorator, literals.SHAPE_ID_RELATIONSHIP_TARGET_CARDINALITY_DECORATOR)) { + decorator.setVisible(visible); + } } } } } } } } } +} diff --git a/org.framed.iorm.ui/modules/rolemodel/Util.java b/org.framed.iorm.ui/modules/rolemodel/Util.java deleted file mode 100644 index 6a6e4117eb2760896a64336d2cfb7883b11d82bd..0000000000000000000000000000000000000000 --- a/org.framed.iorm.ui/modules/rolemodel/Util.java +++ /dev/null @@ -1,48 +0,0 @@ -package rolemodel; - -import java.util.List; - -import org.eclipse.graphiti.mm.pictograms.Diagram; -import org.eclipse.graphiti.mm.pictograms.PictogramElement; -import org.eclipse.graphiti.mm.pictograms.Shape; -import org.framed.iorm.ui.UIUtil; - -/** -* This class offers utility operations in the scope of the role model feature module. -* @author Kevin Kassin -*/ -public class Util { - - /** - * the object to get names, ids and so on for this feature - */ - private final Literals literals = new Literals(); - - //Diagram - //~~~~~~~ - /** - * Convenience operation to call {@link UIUtil#getDiagramForGroupingShape(Shape, Diagram, String, String, String)} - * with the correct parameters. - */ - public Diagram getCompartmentTypeDiagramForItsShape(Shape groupOrCompartmentTypeShape, Diagram diagram) { - return UIUtil.getDiagramForGroupingShape(groupOrCompartmentTypeShape, diagram, - literals.SHAPE_ID_COMPARTMENTTYPE_TYPEBODY, literals.SHAPE_ID_COMPARTMENTTYPE_NAME, literals.DIAGRAM_KIND); - } - - //Update - //~~~~~~ - /** - * Convenience operation to call {@link UIUtil#getNameOfPictogramElement(PictogramElement, String)} with the correct parameters. - */ - public String getNameOfPictogramElement(PictogramElement pictogramElement) { - return UIUtil.getNameOfPictogramElement(pictogramElement, literals.SHAPE_ID_COMPARTMENTTYPE_NAME); - } - - /** - * Convenience operation to call {@link UIUtil#getContentPreviewElementsNames(PictogramElement, String, String)} - * with the correct parameters. - */ - public List<String> getContentPreviewElementsNames(PictogramElement pictogramElement) { - return UIUtil.getContentPreviewElementsNames(pictogramElement, literals.SHAPE_ID_COMPARTMENTTYPE_CONTENT_PREVIEW, literals.SHAPE_ID_ROLEMODEL_ELEMENT); - } -} diff --git a/org.framed.iorm.ui/modules/rolemodel/icon_rolemodel.png b/org.framed.iorm.ui/modules/rolemodel/icon_rolemodel.png deleted file mode 100644 index ccb93aa8de18f1ddce2892fdfd6a06c39d38ecad..0000000000000000000000000000000000000000 Binary files a/org.framed.iorm.ui/modules/rolemodel/icon_rolemodel.png and /dev/null differ diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/Literals.java b/org.framed.iorm.ui/modules/roletype/group_constraints/Literals.java index b16ccf06b30c84f1be08cef47d37d625cce9d894..832447ca1e555a751d741c82a347a2ae95184265 100644 --- a/org.framed.iorm.ui/modules/roletype/group_constraints/Literals.java +++ b/org.framed.iorm.ui/modules/roletype/group_constraints/Literals.java @@ -12,7 +12,8 @@ public class Literals { /** * the features names used for the palette entry of this feature */ - public final String FEATURE_NAME = "Role Group"; + public final String FEATURE_NAME = "Role Group", + OC_FEATURE_NAME = "RG Occurrence Constraints"; /** * name of the custom feature @@ -29,6 +30,7 @@ public class Literals { * the ids or the paths for icon used for palette entry of this feature */ public final String ICON_IMG_ID = "org.framed.iorm.ui.modules.rolegroup", + OC_ICON_IMG_ID = "org.framed.ior.ui.modules.rolegroupe.oc", ICON_IMG_PATH = "modules/roletype/group_constraints/icon_rolegroup.png"; /** diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupOccurrenceConstraintPattern.java b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupOccurrenceConstraintPattern.java new file mode 100644 index 0000000000000000000000000000000000000000..0bd09b6b6110975a01490ba23c1f863a683f40a5 --- /dev/null +++ b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupOccurrenceConstraintPattern.java @@ -0,0 +1,116 @@ +package roletype.group_constraints; + +import java.util.List; + +import org.eclipse.graphiti.mm.pictograms.ContainerShape; +import org.eclipse.graphiti.mm.pictograms.Diagram; +import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.mm.pictograms.Shape; +import org.eclipse.graphiti.pattern.IPattern; +import org.framed.iorm.ui.FRaMEDShapePattern; +import org.framed.iorm.ui.UIUtil; +import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; +import org.framed.iorm.ui.palette.PaletteCategory; +import org.framed.iorm.ui.palette.ViewVisibility; +import org.framed.iorm.ui.wizards.RoleModelWizard; + +import customFeatures.ChangeConfigurationListener; + +/** + * This pattern manages setting occurrence constraints of role groups (in)visible when changing the configuration. It is + * a {@link ChangeConfigurationListener} for that reason. + * @author Kevin Kassin + */ +public class RoleGroupOccurrenceConstraintPattern extends FRaMEDShapePattern implements IPattern, ChangeConfigurationListener { + + /** + * literals of role groups + */ + Literals literals = new Literals(); + + /** + * the feature palette descriptor manages the palette visibility, see {@link FeaturePaletteDescriptor} + */ + private final FeaturePaletteDescriptor spec_FPD = new FeaturePaletteDescriptor( + PaletteCategory.NONE, + ViewVisibility.NO_VIEW); + + /** + * class constructor + */ + public RoleGroupOccurrenceConstraintPattern() { + super(); + FEATURE_NAME = literals.OC_FEATURE_NAME; + ICON_IMG_ID = literals.OC_ICON_IMG_ID; + FPD = spec_FPD; + } + + /** + * checks if pattern is applicable for a given business object + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + public boolean isMainBusinessObjectApplicable(Object mainBusinessObject) { return false; } + + /** + * checks if pattern is applicable for a given pictogram element + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternControlled(PictogramElement pictogramElement) { return false; } + + /** + * checks if the pictogram element to edit with the pattern is its root + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternRoot(PictogramElement pictogramElement) { return false; } + + + /** + * If the editor's configuration changes this operation is called. It takes the old and the new chosen features + * as a list of strings. If the occurrence constraints feature changes its status {@link #setVisibilityOfOccurrenceConstraints} + * is called. + */ + @Override + public void configurationChanged(List<String> newframedFeatureNames, List<String> oldframedFeatureNames) { + if(newframedFeatureNames.contains("Occurrence_Constraints") && + !(oldframedFeatureNames.contains("Occurrence_Constraints"))) + setVisibilityOfOccurrenceConstraints(true); + if(!(newframedFeatureNames.contains("Occurrence_Constraints")) && + oldframedFeatureNames.contains("Occurrence_Constraints")) + setVisibilityOfOccurrenceConstraints(false); + } + + /** + * Sets the visibility of all occurrence constraints of role groups to a given boolean using the following steps: + * <p> + * Step 1: It gets the container diagram to interate over it.<br> + * Step 2: For every child diagram of the container diagram iterates over the its element.<br> + * Step 3: If the inner elements are a rolegroup it find its occurrence constraint and set it (in)visible. + * <p> + * If its not clear what <em>container diagram</em> and <em>main diagram</em> means, see + * {@link RoleModelWizard#createEmfFileForDiagram} for reference. + * @param visible the boolean to set the visibility of all occurrence constraints to + */ + private void setVisibilityOfOccurrenceConstraints(boolean visible) { + //Step 1 + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + if(mainDiagram.getContainer() instanceof Diagram) { + Diagram containerDiagram = (Diagram) mainDiagram.getContainer(); + for(Shape shape : containerDiagram.getChildren()) { + //Step 2 + if(shape instanceof Diagram) { + Diagram diagram = (Diagram) shape; + for(Shape innerShape : diagram.getChildren()) { + //Step 3 + if(UIUtil.isShape_IdValue(innerShape, literals.SHAPE_ID_ROLEGROUP_CONTAINER)) { + for(Shape innerInnerShape : ((ContainerShape) innerShape).getChildren()) { + if(!(innerInnerShape instanceof Diagram)) { + if(UIUtil.isShape_IdValue(innerInnerShape, literals.SHAPE_ID_ROLEGROUP_OCCURRENCE_CONSTRAINT)) { + innerInnerShape.setVisible(visible); + } } } } } } } } } +} diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupPattern.java b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupPattern.java index 4a860fe843db3f35c54bf0b64d3d06a37ad6e6d0..2c7e3678c96296f13044c98bf6d4344bddb8bf97 100644 --- a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupPattern.java +++ b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroupPattern.java @@ -30,6 +30,8 @@ import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramElement; import org.eclipse.graphiti.mm.pictograms.Shape; import org.eclipse.graphiti.pattern.IPattern; +import org.framed.iorm.featuremodel.FRaMEDConfiguration; +import org.framed.iorm.featuremodel.FRaMEDFeature; import org.framed.iorm.model.Model; import org.framed.iorm.model.ModelElement; import org.framed.iorm.model.NamedElement; @@ -97,7 +99,7 @@ public class RoleGroupPattern extends FRaMEDShapePattern implements IPattern { ViewVisibility.ALL_VIEWS) { }; - + /** * class constructor */ @@ -233,7 +235,8 @@ public class RoleGroupPattern extends FRaMEDShapePattern implements IPattern { //occurence costraint Shape cardinalityShape = pictogramElementCreateService.createShape(containerShape, true); Text cardinalityText = graphicAlgorithmService.createText(cardinalityShape, addedRoleGroup.getDescription().getName()); - cardinalityText.setForeground(manageColor(literals.COLOR_TEXT)); + cardinalityText.setForeground(manageColor(literals.COLOR_TEXT)); + cardinalityShape.setVisible(occurrenceConstraintChosen()); graphicAlgorithmService.setLocationAndSize(cardinalityText, x+width/2-literals.HEIGHT_OCCURRENCE_CONSTRAINT/2, y-literals.HEIGHT_OCCURRENCE_CONSTRAINT-literals.PUFFER_BETWEEN_ELEMENTS, @@ -292,6 +295,24 @@ public class RoleGroupPattern extends FRaMEDShapePattern implements IPattern { return containerShape; } + /** + * calculates if the occurrence constraint feature is chosen when creating a role group + * <p> + * TODO: This should be modularized in a later stage of the development by separating the occurence constraint concern + * from this pattern. + * @return if the occurrence constraint feature is chosen when creating a role group + */ + private boolean occurrenceConstraintChosen() { + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + Model mainModel = UIUtil.getLinkedModelForDiagram(mainDiagram); + FRaMEDConfiguration framedConfiguration = mainModel.getFramedConfiguration(); + List<String> framedFeatureNames = new ArrayList<String>(); + for(FRaMEDFeature framedFeature : framedConfiguration.getFeatures()) { + framedFeatureNames.add(framedFeature.getName().getLiteral()); + } + return framedFeatureNames.contains("Occurrence_Constraints"); + } + //create feature //~~~~~~~~~~~~~~ /** @@ -469,7 +490,6 @@ public class RoleGroupPattern extends FRaMEDShapePattern implements IPattern { * the size of the type body and drop shadow shape.<br> * Step 3: It now iterates over all shapes of the role group:<br> * (a) It sets the width of the names shape.<br> - * TODO: occurence set * <p> * If its not clear what the different shapes means, see {@link #add} for reference. */ diff --git a/org.framed.iorm.ui/core/roletype/inheritance/RoleInheritance.etl b/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.etl similarity index 100% rename from org.framed.iorm.ui/core/roletype/inheritance/RoleInheritance.etl rename to org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.etl diff --git a/org.framed.iorm.ui/core/roletype/occurrence_constraints/RoleTypeOccurenceConstraints.etl b/org.framed.iorm.ui/modules/roletype/occurrence_constraints/RoleTypeOccurenceConstraints.etl similarity index 100% rename from org.framed.iorm.ui/core/roletype/occurrence_constraints/RoleTypeOccurenceConstraints.etl rename to org.framed.iorm.ui/modules/roletype/occurrence_constraints/RoleTypeOccurenceConstraints.etl diff --git a/org.framed.iorm.ui/modules/roletype/occurrence_constraints/RoletypeOccurrenceConstraintPattern.java b/org.framed.iorm.ui/modules/roletype/occurrence_constraints/RoletypeOccurrenceConstraintPattern.java new file mode 100644 index 0000000000000000000000000000000000000000..5772bd7ba99fbac210e6c046b9506ac55da6fa05 --- /dev/null +++ b/org.framed.iorm.ui/modules/roletype/occurrence_constraints/RoletypeOccurrenceConstraintPattern.java @@ -0,0 +1,114 @@ +package roletype.occurrence_constraints; + +import java.util.List; + +import org.eclipse.graphiti.mm.pictograms.ContainerShape; +import org.eclipse.graphiti.mm.pictograms.Diagram; +import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.mm.pictograms.Shape; +import org.eclipse.graphiti.pattern.IPattern; +import org.framed.iorm.ui.FRaMEDShapePattern; +import org.framed.iorm.ui.UIUtil; +import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; +import org.framed.iorm.ui.palette.PaletteCategory; +import org.framed.iorm.ui.palette.ViewVisibility; +import org.framed.iorm.ui.wizards.RoleModelWizard; + +import customFeatures.ChangeConfigurationListener; + +/** + * This pattern manages setting occurrence constraints of role types (in)visible when changing the configuration. It is + * a {@link ChangeConfigurationListener} for that reason. + * @author Kevin Kassin + */ +public class RoletypeOccurrenceConstraintPattern extends FRaMEDShapePattern implements IPattern, ChangeConfigurationListener { + + /** + * literals of role types + */ + roletype.Literals literals = new roletype.Literals(); + + /** + * the feature palette descriptor manages the palette visibility, see {@link FeaturePaletteDescriptor} + */ + private final FeaturePaletteDescriptor spec_FPD = new FeaturePaletteDescriptor( + PaletteCategory.NONE, + ViewVisibility.NO_VIEW); + + /** + * class constructor + */ + public RoletypeOccurrenceConstraintPattern() { + super(); + FEATURE_NAME = literals.OC_FEATURE_NAME; + ICON_IMG_ID = literals.OC_ICON_IMG_ID; + FPD = spec_FPD; + } + + /** + * checks if pattern is applicable for a given business object + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + public boolean isMainBusinessObjectApplicable(Object mainBusinessObject) { return false; } + + /** + * checks if pattern is applicable for a given pictogram element + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternControlled(PictogramElement pictogramElement) { return false; } + + /** + * checks if the pictogram element to edit with the pattern is its root + * <p> + * return false since the pattern is never used by graphiti + */ + @Override + protected boolean isPatternRoot(PictogramElement pictogramElement) { return false; } + + /** + * If the editor's configuration changes this operation is called. It takes the old and the new chosen features + * as a list of strings. If the occurrence constraints feature changes its status {@link #setVisibilityOfOccurrenceConstraints} + * is called. + */ + @Override + public void configurationChanged(List<String> newframedFeatureNames, List<String> oldframedFeatureNames) { + if(newframedFeatureNames.contains("Occurrence_Constraints") && + !(oldframedFeatureNames.contains("Occurrence_Constraints"))) + setVisibilityOfOccurrenceConstraints(true); + if(!(newframedFeatureNames.contains("Occurrence_Constraints")) && + oldframedFeatureNames.contains("Occurrence_Constraints")) + setVisibilityOfOccurrenceConstraints(false); + } + + /** + * Sets the visibility of all occurrence constraints of role groups to a given boolean using the following steps: + * <p> + * Step 1: It gets the container diagram to interate over it.<br> + * Step 2: For every child diagram of the container diagram iterates over the its element.<br> + * Step 3: If the inner elements are a role type it find its occurrence constraint and set it (in)visible. + * <p> + * If its not clear what <em>container diagram</em> and <em>main diagram</em> means, see + * {@link RoleModelWizard#createEmfFileForDiagram} for reference. + * @param visible the boolean to set the visibility of all occurrence constraints to + */ + private void setVisibilityOfOccurrenceConstraints(boolean visible) { + //Step 1 + Diagram mainDiagram = UIUtil.getMainDiagramForAnyDiagram(getDiagram()); + if(mainDiagram.getContainer() instanceof Diagram) { + Diagram containerDiagram = (Diagram) mainDiagram.getContainer(); + for(Shape shape : containerDiagram.getChildren()) { + //Step 2 + if(shape instanceof Diagram) { + Diagram diagram = (Diagram) shape; + for(Shape innerShape : diagram.getChildren()) { + //Step 3 + if(UIUtil.isShape_IdValue(innerShape, literals.SHAPE_ID_ROLETYPE_CONTAINER)) { + for(Shape innerInnerShape : ((ContainerShape) innerShape).getChildren()) { + if(UIUtil.isShape_IdValue(innerInnerShape, literals.SHAPE_ID_ROLETYPE_OCCURRENCE_CONSTRAINT)) { + innerInnerShape.setVisible(visible); + } } } } } } } } +} diff --git a/org.framed.iorm.ui/core/roletype/properties/RoleTypeAttsAndOps.etl b/org.framed.iorm.ui/modules/roletype/properties/RoleTypeAttsAndOps.etl similarity index 100% rename from org.framed.iorm.ui/core/roletype/properties/RoleTypeAttsAndOps.etl rename to org.framed.iorm.ui/modules/roletype/properties/RoleTypeAttsAndOps.etl diff --git a/org.framed.iorm.ui/core/roletype/properties/RoleTypeHasAttsAndOpsReference.java b/org.framed.iorm.ui/modules/roletype/properties/RoleTypeHasAttsAndOpsReference.java similarity index 100% rename from org.framed.iorm.ui/core/roletype/properties/RoleTypeHasAttsAndOpsReference.java rename to org.framed.iorm.ui/modules/roletype/properties/RoleTypeHasAttsAndOpsReference.java diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/multipage/MultipageEditor.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/multipage/MultipageEditor.java index 41daae43e631c5b9cb7201103160a2e0dcd2936f..5829f47606ce81a0508ad56e60aaa7e806895aa4 100644 --- a/org.framed.iorm.ui/src/org/framed/iorm/ui/multipage/MultipageEditor.java +++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/multipage/MultipageEditor.java @@ -58,7 +58,7 @@ import org.framed.iorm.ui.wizards.RoleModelWizard; //*import for javadoc link * @see FRaMEDTextViewer * @author Kevin Kassin */ -public class MultipageEditor extends FormEditor implements ISelectionListener, IWorkbenchListener { +public class MultipageEditor extends FormEditor implements ISelectionListener, IWorkbenchListener { /** * the reference to the model feature */ @@ -116,7 +116,7 @@ public class MultipageEditor extends FormEditor implements ISelectionListener, I * the editor with the diagram */ private FRaMEDDiagramEditor editorDiagram; - + /** * the subeditors of the multipage editor of type {@link FRaMEDTextViewer} * <p> @@ -177,7 +177,7 @@ public class MultipageEditor extends FormEditor implements ISelectionListener, I @Override public void dispose() { MultipageEditorSynchronizationService.deregisterEditor(this); - super.dispose(); + super.dispose(); } /**