Skip to content
Commits on Source (5)
......@@ -57,6 +57,9 @@
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/deployment.emfprofile_diagram"/>
</extension>
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/design-decisions.emfprofile_diagram"/>
</extension>
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/interfaces-scoped.emfprofile_diagram"/>
</extension>
......@@ -72,6 +75,12 @@
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/namespaces.emfprofile_diagram"/>
</extension>
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram"/>
</extension>
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/patterns/observer.emfprofile_diagram"/>
</extension>
<extension point="org.modelversioning.emfprofile.profile">
<profile profile_resource="src/de/mkonersmann/il/profiles/quality-sec-sif.emfprofile_diagram"/>
</extension>
......
......@@ -26,11 +26,14 @@ public enum Profiles {
DATATYPES_EVENTS("datatypes/events", "datatypes-events"),
DATATYPES_OPERATIONS("datatypes/operations", "datatypes-operations"),
DEPLOYMENT("deployment", "deployment"),
DESIGN_DECISIONS("design-decisions", "design-decisions"),
INTERFACES_SCOPED("interfaces/scoped", "interfaces-scoped"),
INTERFACES_SHARED("interfaces/shared", "interfaces-shared"),
INTERFACES_TYPE_EVENTS("interfaces/type/events", "interfaces-type-events"),
INTERFACES_TYPE_OPERATIONS("interfaces/type/operations", "interfaces-type-operations"),
NAMESPACES("namespaces", "namespaces"),
PATTERNS("patterns", "patterns"),
PATTERN_OBSERVER("patterns/observer", "patterns/observer"),
QUALITY_SECURITY_SECURE_INFORMATION_FLOW("quality/sec/sif", "quality-sec-sif"),
QUALITY_TIME("quality/time", "quality-time");
......
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:emfprofile="http://www.modelversioning.org/emfprofile/1.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
<emfprofile:Profile xmi:id="_FNoKoOeXEeW91rqf8aw6BQ" name="patterns" nsURI="http://mkonersmann.de/il/profiles/patterns/1.0" nsPrefix="patterns">
<eClassifiers xmi:type="emfprofile:Stereotype" xmi:id="_8-2b0DFXEeaGF6e21-xYrA" name="ArchitectureWithPatterns">
<eSuperTypes xmi:type="ecore:EClass" href="http://www.modelversioning.org/emfprofile/application/1.1#//StereotypeApplication"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_OZLcsKmqEee5OrA2BbvKjg" name="instantiatedPatterns" upperBound="-1" eType="_KO1jMKmqEee5OrA2BbvKjg" containment="true"/>
<extensions xmi:type="emfprofile:Extension" xmi:id="_fXI6oDFYEeaGF6e21-xYrA">
<target xmi:type="ecore:EClass" href="http://mkonersmann.de/il/core/1.0#//Architecture"/>
</extensions>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_KO1jMKmqEee5OrA2BbvKjg" name="Pattern">
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_LTgsQKmqEee5OrA2BbvKjg" name="id" lowerBound="1" iD="true">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_VGAhEKmqEee5OrA2BbvKjg" name="ComponentRole">
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_cW8ioKmrEee5OrA2BbvKjg" name="components" lowerBound="1" upperBound="-1">
<eType xmi:type="ecore:EClass" href="http://mkonersmann.de/il/core/1.0#//ComponentType"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_WSC2YKmqEee5OrA2BbvKjg" name="ConnectorRole">
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_eN9uoKmrEee5OrA2BbvKjg" name="connectors" lowerBound="1" upperBound="-1">
<eType xmi:type="ecore:EClass" href="http://mkonersmann.de/il/profiles/connectors/1.0#_Iz3RkPRuEeKldeHu11cdfg"/>
</eStructuralFeatures>
</eClassifiers>
</emfprofile:Profile>
<notation:Diagram xmi:id="_FNoxsOeXEeW91rqf8aw6BQ" type="EMFProfile" element="_FNoKoOeXEeW91rqf8aw6BQ" name="profile.emfprofile_diagram" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_kvcTwAI_Eea_PrdxQji74w" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kvdh5wI_Eea_PrdxQji74w" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kvdh6AI_Eea_PrdxQji74w" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_kvdh4AI_Eea_PrdxQji74w" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_kvdh4QI_Eea_PrdxQji74w" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_kvdh4gI_Eea_PrdxQji74w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_kvdh4wI_Eea_PrdxQji74w"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_kvdh5AI_Eea_PrdxQji74w" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_kvdh5QI_Eea_PrdxQji74w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_kvdh5gI_Eea_PrdxQji74w"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_kvcTwQI_Eea_PrdxQji74w"/>
<styles xmi:type="notation:FontStyle" xmi:id="_kvcTwgI_Eea_PrdxQji74w" fontName="Segoe UI"/>
<element xmi:type="ecore:EClass" href="http://mkonersmann.de/il/core/1.0#//Architecture"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_kvcTwwI_Eea_PrdxQji74w" x="605" y="36"/>
</children>
<children xmi:type="notation:Node" xmi:id="_8_3IcDFXEeaGF6e21-xYrA" type="2006" element="_8-2b0DFXEeaGF6e21-xYrA">
<children xmi:type="notation:DecorationNode" xmi:id="_8_3vgDFXEeaGF6e21-xYrA" type="5008"/>
<children xmi:type="notation:DecorationNode" xmi:id="_8_3vgTFXEeaGF6e21-xYrA" type="7008">
<styles xmi:type="notation:SortingStyle" xmi:id="_8_3vgjFXEeaGF6e21-xYrA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_8_3vgzFXEeaGF6e21-xYrA"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_8_3IcTFXEeaGF6e21-xYrA"/>
<styles xmi:type="notation:FontStyle" xmi:id="_8_3IcjFXEeaGF6e21-xYrA" fontName="Segoe UI"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8_3IczFXEeaGF6e21-xYrA" x="596" y="96"/>
</children>
<children xmi:type="notation:Node" xmi:id="_KO2xUKmqEee5OrA2BbvKjg" type="2002" element="_KO1jMKmqEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_KO2xVKmqEee5OrA2BbvKjg" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_KO2xVamqEee5OrA2BbvKjg" type="7004">
<children xmi:type="notation:Node" xmi:id="_LTh6YKmqEee5OrA2BbvKjg" type="3004" element="_LTgsQKmqEee5OrA2BbvKjg">
<layoutConstraint xmi:type="notation:Location" xmi:id="_LTh6YamqEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_KO2xVqmqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_KO2xV6mqEee5OrA2BbvKjg"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_KO2xWKmqEee5OrA2BbvKjg" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_KO2xWamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_KO2xWqmqEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_KO2xUamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_KO2xUqmqEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_KO2xU6mqEee5OrA2BbvKjg" x="608" y="148"/>
</children>
<children xmi:type="notation:Node" xmi:id="_VGBIIKmqEee5OrA2BbvKjg" type="2002" element="_VGAhEKmqEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_VGBIJKmqEee5OrA2BbvKjg" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_VGBIJamqEee5OrA2BbvKjg" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_VGBIJqmqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_VGBIJ6mqEee5OrA2BbvKjg"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_VGBIKKmqEee5OrA2BbvKjg" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_VGBIKamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_VGBIKqmqEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_VGBIIamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_VGBIIqmqEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_VGBII6mqEee5OrA2BbvKjg" x="550" y="207"/>
</children>
<children xmi:type="notation:Node" xmi:id="_WSDdcKmqEee5OrA2BbvKjg" type="2002" element="_WSC2YKmqEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_WSDddKmqEee5OrA2BbvKjg" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_WSDddamqEee5OrA2BbvKjg" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_WSDddqmqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_WSDdd6mqEee5OrA2BbvKjg"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_WSDdeKmqEee5OrA2BbvKjg" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_WSDdeamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_WSDdeqmqEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_WSDdcamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_WSDdcqmqEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_WSDdc6mqEee5OrA2BbvKjg" x="680" y="208"/>
</children>
<children xmi:type="notation:Node" xmi:id="_YdjPMKmrEee5OrA2BbvKjg" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ydj2Q6mrEee5OrA2BbvKjg" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ydj2RKmrEee5OrA2BbvKjg" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_YdjPNKmrEee5OrA2BbvKjg" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_YdjPNamrEee5OrA2BbvKjg" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_YdjPNqmrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_YdjPN6mrEee5OrA2BbvKjg"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_Ydj2QKmrEee5OrA2BbvKjg" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_Ydj2QamrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Ydj2QqmrEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_YdjPMamrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_YdjPMqmrEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="http://mkonersmann.de/il/core/1.0#//ComponentType"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_YdjPM6mrEee5OrA2BbvKjg" x="552" y="272"/>
</children>
<children xmi:type="notation:Node" xmi:id="_asyG4KmrEee5OrA2BbvKjg" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_asyt-qmrEee5OrA2BbvKjg" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_asyt-6mrEee5OrA2BbvKjg" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_asyt86mrEee5OrA2BbvKjg" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_asyt9KmrEee5OrA2BbvKjg" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_asyt9amrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_asyt9qmrEee5OrA2BbvKjg"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_asyt96mrEee5OrA2BbvKjg" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_asyt-KmrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_asyt-amrEee5OrA2BbvKjg"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_asyt8KmrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_asyt8amrEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="http://mkonersmann.de/il/profiles/connectors/1.0#_Iz3RkPRuEeKldeHu11cdfg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_asyt8qmrEee5OrA2BbvKjg" x="680" y="272"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_FNoxseeXEeW91rqf8aw6BQ"/>
<edges xmi:type="notation:Edge" xmi:id="_fXL98DFYEeaGF6e21-xYrA" type="4005" element="_fXI6oDFYEeaGF6e21-xYrA" source="_8_3IcDFXEeaGF6e21-xYrA" target="_kvcTwAI_Eea_PrdxQji74w">
<children xmi:type="notation:DecorationNode" xmi:id="_fXNMEDFYEeaGF6e21-xYrA" type="6004">
<layoutConstraint xmi:type="notation:Location" xmi:id="_fXNMETFYEeaGF6e21-xYrA" x="-8" y="-21"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_fXL98TFYEeaGF6e21-xYrA"/>
<styles xmi:type="notation:FontStyle" xmi:id="_fXL98jFYEeaGF6e21-xYrA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fXL98zFYEeaGF6e21-xYrA" points="[-76, -16, 305, 65]$[-331, -71, 50, 10]"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YT5OUKWsEea7uf_rgwJEUQ" id="(0.6666666666666666,0.8571428571428571)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_OZMDwKmqEee5OrA2BbvKjg" type="4003" element="_OZLcsKmqEee5OrA2BbvKjg" source="_8_3IcDFXEeaGF6e21-xYrA" target="_KO2xUKmqEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_OZMDxKmqEee5OrA2BbvKjg" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_OZMDxamqEee5OrA2BbvKjg" x="-5" y="-51"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_OZMDxqmqEee5OrA2BbvKjg" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_OZMq0KmqEee5OrA2BbvKjg" x="-5" y="19"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_OZMDwamqEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_OZMDwqmqEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OZMDw6mqEee5OrA2BbvKjg" points="[-7, 20, 12, -56]$[-23, 53, -4, -23]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_cW9JsKmrEee5OrA2BbvKjg" type="4003" element="_cW8ioKmrEee5OrA2BbvKjg" source="_VGBIIKmqEee5OrA2BbvKjg" target="_YdjPMKmrEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_cW9wwKmrEee5OrA2BbvKjg" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_cW9wwamrEee5OrA2BbvKjg" x="-14" y="-30"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_cW9wwqmrEee5OrA2BbvKjg" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_cW9ww6mrEee5OrA2BbvKjg" x="-14" y="23"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_cW9JsamrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_cW9JsqmrEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cW9Js6mrEee5OrA2BbvKjg" points="[7, 20, 5, -57]$[7, 57, 5, -20]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_eN-VsKmrEee5OrA2BbvKjg" type="4003" element="_eN9uoKmrEee5OrA2BbvKjg" source="_WSDdcKmqEee5OrA2BbvKjg" target="_asyG4KmrEee5OrA2BbvKjg">
<children xmi:type="notation:DecorationNode" xmi:id="_eN-VtKmrEee5OrA2BbvKjg" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_eN-VtamrEee5OrA2BbvKjg" x="-15" y="-29"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_eN-VtqmrEee5OrA2BbvKjg" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_eN-Vt6mrEee5OrA2BbvKjg" x="-15" y="18"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_eN-VsamrEee5OrA2BbvKjg"/>
<styles xmi:type="notation:FontStyle" xmi:id="_eN-VsqmrEee5OrA2BbvKjg" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eN-Vs6mrEee5OrA2BbvKjg" points="[-3, 20, 10, -74]$[-12, 96, 1, 2]"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eN_j0KmrEee5OrA2BbvKjg" id="(0.4803921568627451,0.047619047619047616)"/>
</edges>
</notation:Diagram>
</xmi:XMI>
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:emfprofile="http://www.modelversioning.org/emfprofile/1.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
<emfprofile:Profile xmi:id="_FNoKoOeXEeW91rqf8aw6BQ" name="pattern_adapter" nsURI="http://mkonersmann.de/il/profiles/patterns/adapter/1.0" nsPrefix="adapter">
<eClassifiers xmi:type="emfprofile:Stereotype" xmi:id="_rmWA0KmyEeertexrRrBvug" name="AdapterPattern">
<eSuperTypes xmi:type="ecore:EClass" href="http://www.modelversioning.org/emfprofile/application/1.1#//StereotypeApplication"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Hrz-EKmwEeertexrRrBvug" name="adaptedRole" lowerBound="1" containment="true">
<eType xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_KuZlUKmwEeertexrRrBvug" name="adaptingRole" lowerBound="1" containment="true">
<eType xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
</eStructuralFeatures>
<extensions xmi:type="emfprofile:Extension" xmi:id="_uX9M0KmyEeertexrRrBvug">
<target xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_KO1jMKmqEee5OrA2BbvKjg"/>
</extensions>
</eClassifiers>
</emfprofile:Profile>
<notation:Diagram xmi:id="_FNoxsOeXEeW91rqf8aw6BQ" type="EMFProfile" element="_FNoKoOeXEeW91rqf8aw6BQ" name="profile.emfprofile_diagram" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_LhO30KmtEeertexrRrBvug" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LhQtAKmtEeertexrRrBvug" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LhQtAamtEeertexrRrBvug" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_LhQF8KmtEeertexrRrBvug" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_LhQF8amtEeertexrRrBvug" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_LhQF8qmtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LhQF86mtEeertexrRrBvug"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_LhQF9KmtEeertexrRrBvug" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_LhQF9amtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LhQF9qmtEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_LhO30amtEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_LhO30qmtEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_KO1jMKmqEee5OrA2BbvKjg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LhO306mtEeertexrRrBvug" x="168" y="84"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NXa9YKmtEeertexrRrBvug" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NXbkeqmtEeertexrRrBvug" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NXbke6mtEeertexrRrBvug" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_NXbkc6mtEeertexrRrBvug" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_NXbkdKmtEeertexrRrBvug" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_NXbkdamtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NXbkdqmtEeertexrRrBvug"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_NXbkd6mtEeertexrRrBvug" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_NXbkeKmtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NXbkeamtEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_NXbkcKmtEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_NXbkcamtEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NXbkcqmtEeertexrRrBvug" x="492" y="80"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rmZEIKmyEeertexrRrBvug" type="2006" element="_rmWA0KmyEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_rmZrM6myEeertexrRrBvug" type="5008"/>
<children xmi:type="notation:DecorationNode" xmi:id="_rmZrNKmyEeertexrRrBvug" type="7008">
<styles xmi:type="notation:SortingStyle" xmi:id="_rmZrNamyEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_rmZrNqmyEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_rmZrMKmyEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_rmZrMamyEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_rmZrMqmyEeertexrRrBvug" x="300" y="84"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_FNoxseeXEeW91rqf8aw6BQ"/>
<edges xmi:type="notation:Edge" xmi:id="_Hr9IAKmwEeertexrRrBvug" type="4003" element="_Hrz-EKmwEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_NXa9YKmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_Hr9IBKmwEeertexrRrBvug" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hr9IBamwEeertexrRrBvug" x="-56" y="-8"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Hr9vEKmwEeertexrRrBvug" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hr9vEamwEeertexrRrBvug" x="-12" y="-8"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_Hr9IAamwEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_Hr9IAqmwEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hr9IA6mwEeertexrRrBvug" points="[2, -2, -90, 0]$[90, -2, -2, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HsCAgKmwEeertexrRrBvug" id="(0.851063829787234,0.17073170731707318)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HsCAgamwEeertexrRrBvug" id="(0.029411764705882353,0.23809523809523808)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_KuazcKmwEeertexrRrBvug" type="4003" element="_KuZlUKmwEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_NXa9YKmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_KubagKmwEeertexrRrBvug" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KubagamwEeertexrRrBvug" x="-55" y="-7"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KubagqmwEeertexrRrBvug" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Kubag6mwEeertexrRrBvug" x="-12" y="-7"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_KuazcamwEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_KuazcqmwEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kuazc6mwEeertexrRrBvug" points="[2, 2, -128, 0]$[90, 2, -40, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kued0KmwEeertexrRrBvug" id="(0.9148936170212766,0.6097560975609756)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KufE4KmwEeertexrRrBvug" id="(0.4019607843137255,0.9047619047619048)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_uX9z4KmyEeertexrRrBvug" type="4005" element="_uX9M0KmyEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_LhO30KmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_uX9z5KmyEeertexrRrBvug" type="6004">
<layoutConstraint xmi:type="notation:Location" xmi:id="_uX9z5amyEeertexrRrBvug" x="-10" y="11"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_uX9z4amyEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_uX9z4qmyEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uX9z46myEeertexrRrBvug" points="[-46, -7, 86, -8]$[-82, -7, 50, -8]"/>
</edges>
</notation:Diagram>
</xmi:XMI>
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:emfprofile="http://www.modelversioning.org/emfprofile/1.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
<emfprofile:Profile xmi:id="_FNoKoOeXEeW91rqf8aw6BQ" name="pattern_observer" nsURI="http://mkonersmann.de/il/profiles/patterns/observer/1.0" nsPrefix="observer">
<eClassifiers xmi:type="emfprofile:Stereotype" xmi:id="_rmWA0KmyEeertexrRrBvug" name="ObserverPattern">
<eSuperTypes xmi:type="ecore:EClass" href="http://www.modelversioning.org/emfprofile/application/1.1#//StereotypeApplication"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Hrz-EKmwEeertexrRrBvug" name="observer" lowerBound="1" upperBound="-1" containment="true">
<eType xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_KuZlUKmwEeertexrRrBvug" name="observable" lowerBound="1" upperBound="-1" containment="true">
<eType xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
</eStructuralFeatures>
<extensions xmi:type="emfprofile:Extension" xmi:id="_uX9M0KmyEeertexrRrBvug">
<target xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_KO1jMKmqEee5OrA2BbvKjg"/>
</extensions>
</eClassifiers>
</emfprofile:Profile>
<notation:Diagram xmi:id="_FNoxsOeXEeW91rqf8aw6BQ" type="EMFProfile" element="_FNoKoOeXEeW91rqf8aw6BQ" name="profile.emfprofile_diagram" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_LhO30KmtEeertexrRrBvug" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LhQtAKmtEeertexrRrBvug" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LhQtAamtEeertexrRrBvug" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_LhQF8KmtEeertexrRrBvug" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_LhQF8amtEeertexrRrBvug" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_LhQF8qmtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LhQF86mtEeertexrRrBvug"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_LhQF9KmtEeertexrRrBvug" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_LhQF9amtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LhQF9qmtEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_LhO30amtEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_LhO30qmtEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_KO1jMKmqEee5OrA2BbvKjg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LhO306mtEeertexrRrBvug" x="168" y="84"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NXa9YKmtEeertexrRrBvug" type="2002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NXbkeqmtEeertexrRrBvug" source="Shortcut">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NXbke6mtEeertexrRrBvug" key="modelID" value="EMFProfile"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_NXbkc6mtEeertexrRrBvug" type="5002"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_NXbkdKmtEeertexrRrBvug" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_NXbkdamtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NXbkdqmtEeertexrRrBvug"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_NXbkd6mtEeertexrRrBvug" type="7005">
<styles xmi:type="notation:SortingStyle" xmi:id="_NXbkeKmtEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NXbkeamtEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_NXbkcKmtEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_NXbkcamtEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<element xmi:type="ecore:EClass" href="platform:/plugin/org.codeling.ial.mm/src/de/mkonersmann/il/profiles/patterns.emfprofile_diagram#_VGAhEKmqEee5OrA2BbvKjg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NXbkcqmtEeertexrRrBvug" x="492" y="80"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rmZEIKmyEeertexrRrBvug" type="2006" element="_rmWA0KmyEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_rmZrM6myEeertexrRrBvug" type="5008"/>
<children xmi:type="notation:DecorationNode" xmi:id="_rmZrNKmyEeertexrRrBvug" type="7008">
<styles xmi:type="notation:SortingStyle" xmi:id="_rmZrNamyEeertexrRrBvug"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_rmZrNqmyEeertexrRrBvug"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_rmZrMKmyEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_rmZrMamyEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_rmZrMqmyEeertexrRrBvug" x="304" y="84"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_FNoxseeXEeW91rqf8aw6BQ"/>
<edges xmi:type="notation:Edge" xmi:id="_Hr9IAKmwEeertexrRrBvug" type="4003" element="_Hrz-EKmwEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_NXa9YKmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_Hr9IBKmwEeertexrRrBvug" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hr9IBamwEeertexrRrBvug" x="-52" y="-8"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Hr9vEKmwEeertexrRrBvug" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hr9vEamwEeertexrRrBvug" x="-12" y="-8"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_Hr9IAamwEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_Hr9IAqmwEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hr9IA6mwEeertexrRrBvug" points="[2, -2, -90, 0]$[90, -2, -2, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HsCAgKmwEeertexrRrBvug" id="(0.851063829787234,0.17073170731707318)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HsCAgamwEeertexrRrBvug" id="(0.029411764705882353,0.23809523809523808)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_KuazcKmwEeertexrRrBvug" type="4003" element="_KuZlUKmwEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_NXa9YKmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_KubagKmwEeertexrRrBvug" type="6001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KubagamwEeertexrRrBvug" x="-47" y="-7"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KubagqmwEeertexrRrBvug" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Kubag6mwEeertexrRrBvug" x="-12" y="-7"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_KuazcamwEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_KuazcqmwEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kuazc6mwEeertexrRrBvug" points="[2, 2, -128, 0]$[90, 2, -40, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Kued0KmwEeertexrRrBvug" id="(0.9148936170212766,0.6097560975609756)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KufE4KmwEeertexrRrBvug" id="(0.4019607843137255,0.9047619047619048)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_uX9z4KmyEeertexrRrBvug" type="4005" element="_uX9M0KmyEeertexrRrBvug" source="_rmZEIKmyEeertexrRrBvug" target="_LhO30KmtEeertexrRrBvug">
<children xmi:type="notation:DecorationNode" xmi:id="_uX9z5KmyEeertexrRrBvug" type="6004">
<layoutConstraint xmi:type="notation:Location" xmi:id="_uX9z5amyEeertexrRrBvug" x="-10" y="11"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_uX9z4amyEeertexrRrBvug"/>
<styles xmi:type="notation:FontStyle" xmi:id="_uX9z4qmyEeertexrRrBvug" fontName=".Helvetica Neue DeskInterface"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uX9z46myEeertexrRrBvug" points="[-46, -7, 86, -8]$[-82, -7, 50, -8]"/>
</edges>
</notation:Diagram>
</xmi:XMI>
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Codeling AD3D Model Transformations
Bundle-SymbolicName: org.codeling.lang.am3d;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: Marco Konersmann <marco.konersmann@paluno.uni-due.de>
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.codeling.core,
org.eclipse.ui.workbench,
org.codeling.lang.base.java,
org.eclipse.jdt.core,
org.eclipse.emf.ecore,
org.eclipse.core.runtime;bundle-version="3.9.100",
org.eclipse.gmf.runtime.diagram.core;bundle-version="1.7.0",
org.eclipse.emf.common.ui,
org.eclipse.ui.ide;bundle-version="3.9.2",
org.eclipse.emf.ecore.editor;bundle-version="2.9.0",
org.eclipse.gmf.runtime.diagram.ui,
org.eclipse.gmf.runtime.diagram.ui.resources.editor;bundle-version="1.7.0",
de.uka.ipd.sdq.pcm.gmf.repository;bundle-version="2.0.0",
de.uka.ipd.sdq.pcm.gmf.allocation;bundle-version="1.0.0",
de.uka.ipd.sdq.pcm.gmf.composite;bundle-version="1.0.0",
de.uka.ipd.sdq.pcm.gmf.resource;bundle-version="1.0.0",
de.uka.ipd.sdq.pcm.gmf.seff;bundle-version="2.0.0",
de.uka.ipd.sdq.pcm.gmf.usage;bundle-version="2.0.0",
org.palladiosimulator.pcm;bundle-version="2.0.0",
org.codeling.utils,
org.eclipse.emf.henshin.model;bundle-version="1.4.0",
org.modelversioning.emfprofile,
org.codeling.lang.pcm;bundle-version="1.0.0"
Export-Package: de.mkonersmann.advert.am3d
source.. = src/main/resources/,src/main/java
output.. = target/classes/
bin.includes = META-INF/,\
.,\
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.codeling.languageRegistry">
<specificationLanguageDefinition
languageDefinitionClass="de.mkonersmann.advert.am3d.AM3DLanguageDefinition"
symbolicName="am3d"
name="Architectural Modelling with Design Deci- sion Documentation"
version="1.0">
</specificationLanguageDefinition>
</extension>
</plugin>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>org.codeling.lang.am3d</artifactId>
<packaging>eclipse-plugin</packaging>
<name>Codeling AM3D Model Transformations</name>
<parent>
<groupId>org.codeling</groupId>
<artifactId>org.codeling.parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../..</relativePath>
</parent>
</project>
\ No newline at end of file
package de.mkonersmann.advert.am3d;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.codeling.lang.base.amt.henshintgg.HenshinTGGBasedLanguageDefinition;
import org.codeling.lang.base.amt.henshintgg.HenshinTGGTransformation;
import org.codeling.lang.base.amt.henshintgg.RecoverPriorModelElements;
import org.codeling.lang.base.amt.henshintgg.TGGDirection;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.osgi.framework.FrameworkUtil;
import org.palladiosimulator.pcm.core.composition.AssemblyConnector;
import org.palladiosimulator.pcm.core.composition.AssemblyContext;
import org.palladiosimulator.pcm.core.composition.Connector;
import org.palladiosimulator.pcm.repository.OperationProvidedRole;
import org.palladiosimulator.pcm.repository.OperationRequiredRole;
import org.palladiosimulator.pcm.repository.ProvidedRole;
import org.palladiosimulator.pcm.repository.Repository;
import org.palladiosimulator.pcm.repository.RepositoryComponent;
import org.palladiosimulator.pcm.repository.RequiredRole;
import org.palladiosimulator.pcm.system.System;
import de.mkonersmann.advert.transformationmanager.TransformationResult;
import de.mkonersmann.advert.utils.CodelingConfiguration;
import de.mkonersmann.advert.utils.CodelingException;
import de.mkonersmann.advert.utils.IDRegistry;
import de.mkonersmann.advert.utils.Models;
import de.uka.ipd.sdq.identifier.Identifier;
import de.uka.ipd.sdq.pcm.gmf.composite.part.PalladioComponentModelComposedStructureDiagramEditorPlugin;
import de.uka.ipd.sdq.pcm.gmf.repository.part.PalladioComponentModelRepositoryDiagramEditorPlugin;
/**
* @author Marco Konersmann <marco.konersmann@paluno.uni-due.de>
*
*/
public class AM3DLanguageDefinition extends HenshinTGGBasedLanguageDefinition {
static final URI henshinTGGFileURI = URI
.createPlatformPluginURI("/" + FrameworkUtil.getBundle(AM3DLanguageDefinition.class).getSymbolicName()
+ "am3d2il.henshin", true);
public AM3DLanguageDefinition() {
super(henshinTGGFileURI);
}
@Override
public TransformationResult transformToADL(List<EObject> ilRoots, IDRegistry idRegistry, IProgressMonitor monitor) {
final HenshinTGGTransformation task = new HenshinTGGTransformation(this,
henshinTGGFileURI, "Transforming IAL to AMD3", TGGDirection.BACKWARD, idRegistry, ilRoots);
TransformationResult result = task.execute(monitor);
task.propagateIDsFromRegistryToModel();
return result;
}
@Override
public TransformationResult transformToIL(List<EObject> adlModelRoots, List<EObject> preChangeILRoots,
IDRegistry idRegistry, IProgressMonitor monitor) {
final List<EObject> integrationModel = new ArrayList<EObject>();
for (final EObject e : adlModelRoots)
integrationModel.add(e);
for (final EObject e : preChangeILRoots)
integrationModel.add(e);
monitor.subTask(String.format("Executing TGG Task =IT="));
final HenshinTGGTransformation itTask = new HenshinTGGTransformation(this,
henshinTGGFileURI, "IT Rules of ADM3 to IAL", TGGDirection.INTEGRATION, idRegistry, integrationModel);
final TransformationResult itResult = itTask.execute(monitor);
monitor.worked(15);
// Execute =Backwards Propagation= on last result
monitor.subTask(String.format("Executing TGG Task =BWPPG="));
final HenshinTGGTransformation bwppgTask = new HenshinTGGTransformation(this,
henshinTGGFileURI, "BWPPG Rules AM3D to IAL", TGGDirection.FORWARD_PROPAGATION, idRegistry,
itResult.getModelRoots());
final TransformationResult result = bwppgTask.execute(monitor);
bwppgTask.propagateIDsFromSourceModelToRegistry();
// Recover elements lost during the translation
// TODO file name coupled with ADL2ILHandler. Decouple somehow
Models.store(result.getModelRoots(), CodelingConfiguration.DEBUG_MODELDIR_PATH + "6_adl2il.xmi");
new RecoverPriorModelElements().recoverAll(preChangeILRoots, result.getModelRoots(),
this, result.getIdRegistry(), idRegistry);
return result;
}
@Override
public void transformationCompleteHook(List<EObject> modelRoots, IProgressMonitor monitor) {
try {
createSeparateRepositoryAndSystem(modelRoots);
} catch (final CodelingException | IOException e) {
addError("Error while seperating PCM repository and system", e);
}
}
@Override
public void transformationToCodePreStartHook(String modelFilepath, IProgressMonitor monitor) {
try {
aggregateRepositoryAndSystem(modelFilepath);
} catch (IOException e) {
addError("Error while aggregating PCM repository and system.", e);
}
}
private void aggregateRepositoryAndSystem(String modelFilepath) throws IOException {
final ResourceSet rSet = new ResourceSetImpl();
final Resource aggregatedResource = rSet.getResource(URI.createPlatformResourceURI(modelFilepath, true), true);
aggregatedResource.getContents().clear();
final Resource repositoryResource = rSet
.getResource(URI.createPlatformResourceURI(modelFilepath + ".repository", true), true);
aggregatedResource.getContents().addAll(repositoryResource.getContents());
final Resource systemResource = rSet.getResource(URI.createPlatformResourceURI(modelFilepath + ".system", true),
true);
aggregatedResource.getContents().addAll(systemResource.getContents());
aggregatedResource.save(Collections.EMPTY_MAP);
fixReferencesFromSystemToRepository(find(System.class, aggregatedResource.getContents()),
find(Repository.class, aggregatedResource.getContents()));
aggregatedResource.save(Collections.EMPTY_MAP);
}
private void fixReferencesFromSystemToRepository(System system, Repository repository) {
for (final AssemblyContext context : system.getAssemblyContexts__ComposedStructure()) {
final RepositoryComponent referencedComponent = context.getEncapsulatedComponent__AssemblyContext();
if (referencedComponent != null) {
final RepositoryComponent localComponent = find(repository, referencedComponent);
context.setEncapsulatedComponent__AssemblyContext(localComponent);
}
}
for (final Connector connector : system.getConnectors__ComposedStructure()) {
final AssemblyConnector assemblyConnector = (AssemblyConnector) connector;
final ProvidedRole providedRole = assemblyConnector.getProvidedRole_AssemblyConnector();
final RequiredRole requiredRole = assemblyConnector.getRequiredRole_AssemblyConnector();
if (providedRole != null) {
final ProvidedRole localProvidedRole = find(repository, providedRole);
assemblyConnector.setProvidedRole_AssemblyConnector((OperationProvidedRole) localProvidedRole);
}
if (requiredRole != null) {
final RequiredRole localRequiredRole = find(repository, requiredRole);
assemblyConnector.setRequiredRole_AssemblyConnector((OperationRequiredRole) localRequiredRole);
}
}
}
private ProvidedRole find(Repository repository, ProvidedRole referencedProvidedRole) {
final String originalId = getProxiedID(referencedProvidedRole);
for (final RepositoryComponent component : repository.getComponents__Repository())
for (final ProvidedRole providedRole : component.getProvidedRoles_InterfaceProvidingEntity())
if (providedRole.getId().equals(originalId))
return providedRole;
return null;
}
private RequiredRole find(Repository repository, RequiredRole referencedRequiredRole) {
final String originalId = getProxiedID(referencedRequiredRole);
for (final RepositoryComponent component : repository.getComponents__Repository())
for (final RequiredRole requiredRole : component.getRequiredRoles_InterfaceRequiringEntity())
if (requiredRole.getId().equals(originalId))
return requiredRole;
return null;
}
private RepositoryComponent find(Repository repository, RepositoryComponent referencedComponent) {
final String originalId = getProxiedID(referencedComponent);
for (final RepositoryComponent component : repository.getComponents__Repository()) {
if (component.getId().equals(originalId))
return component;
}
return null;
}
private String getProxiedID(EObject eobject) {
return ((MinimalEObjectImpl) eobject).eProxyURI().fragment();
}
private void createSeparateRepositoryAndSystem(List<EObject> modelRoots) throws CodelingException, IOException {
if (modelRoots.isEmpty())
throw new CodelingException(
"Cannot create a PCM Repository or System, because the ADL model roots are empty.");
final Repository repository = find(Repository.class, modelRoots);
if (repository == null)
throw new CodelingException("Expected a PCM Repository, but none exists in "
+ modelRoots.get(0).eResource().getURI().toString());
moveToNewResource(repository, repository.eResource().getURI().appendFileExtension("repository"));
createDiagram(repository);
final System system = find(System.class, modelRoots);
if (system == null)
throw new CodelingException(
"Expected a PCM System, but none exists in " + modelRoots.get(0).eResource().getURI().toString());
moveToNewResource(system, system.eResource().getURI().appendFileExtension("system"));
createDiagram(system);
}
@SuppressWarnings("unchecked")
private <T extends EObject> T find(Class<T> classToFind, List<EObject> modelRoots) {
for (final EObject root : modelRoots)
if (classToFind.isAssignableFrom(root.getClass()))
return (T) root;
return null;
}
private void moveToNewResource(EObject eObject, URI targetURI) {
final Resource resource = eObject.eResource().getResourceSet().createResource(targetURI);
resource.getContents().add(eObject);
try {
resource.save(Collections.EMPTY_MAP);
} catch (final IOException e) {
addError("Could not move an eobject to a new resource", e);
}
}
private void createDiagram(System system) throws IOException {
final Resource modelResource = system.eResource();
final Resource diagramResource = modelResource.getResourceSet()
.createResource(modelResource.getURI().appendFileExtension("system_diagram"));
final Diagram diagram = ViewService.createDiagram(system, "CompositeModel",
PalladioComponentModelComposedStructureDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
diagramResource.getContents().add(diagram);
diagramResource.save(Collections.EMPTY_MAP);
}
private void createDiagram(Repository repository) throws IOException {
final Resource modelResource = repository.eResource();
final Resource diagramResource = modelResource.getResourceSet()
.createResource(modelResource.getURI().appendFileExtension("repository_diagram"));
final Diagram diagram = ViewService.createDiagram(repository, "PCM Repository Model",
PalladioComponentModelRepositoryDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
diagramResource.getContents().add(diagram);
diagramResource.save(Collections.EMPTY_MAP);
}
public String getID(EObject eobject) {
if (eobject instanceof Identifier)
return ((Identifier) eobject).getId();
// TODO: Replace with something more helpful
throw new IllegalArgumentException(
String.format("Tried to get an id from an EObject %s, but the EObject is not of the type Identifier.",
eobject.eClass().getName()));
}
public void setID(EObject eobject, String id) {
if (!(eobject instanceof Identifier))
// TODO: Replace with something more helpful
throw new IllegalArgumentException(
String.format("Tried to set id %s to EObject %s, but the EObject is not of the type Identifier.",
id, eobject.eClass().getName()));
((Identifier) eobject).setId(id);
}
}