refactorings REMOVE EMPTY ASSOCIATED CLASS and INLINE CLASS added
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class
new file mode 100644
index 0000000..3a5cdbb
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..3ef980f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class
new file mode 100644
index 0000000..da45b3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..18c5640
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..a1e64c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class
new file mode 100644
index 0000000..9f93efd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..26e91c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel
new file mode 100644
index 0000000..1badfcb
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<comrel:CompositeRefactoring xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:comrel="http://comrel/0.1" name="inlineclass" refId="comrel.inlineclass" label="Inline Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="inlineclass">
+ <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedAttributesNoAssocEnds" helperUnitId="comrel.getownedattributesnoassocends" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.0">
+ <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="property_s" type="org.eclipse.uml2.uml.Property"/>
+ </helperUnits>
+ <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedOperations" helperUnitId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.1">
+ <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="operation_s" type="org.eclipse.uml2.uml.Operation"/>
+ </helperUnits>
+ <helperUnits xsi:type="comrel:SingleFeatureUnit" name="Get Associated Class" helperUnitId="comrel.getassociatedclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" singleFeatureHelper="//@helper.2">
+ <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="class_out" type="org.eclipse.uml2.uml.Class"/>
+ </helperUnits>
+ <helperUnits xsi:type="comrel:SingleFeatureUnit" name="Get Class Name" helperUnitId="comrel.getclassname" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" singleFeatureHelper="//@helper.3">
+ <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="string_out" type="java.lang.String"/>
+ </helperUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="1">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Attribute" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.0">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </refactoringUnit>
+ <singleInputPorts name="className" type="java.lang.String"/>
+ <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Property"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="2">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Operation" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.1">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </refactoringUnit>
+ <singleInputPorts name="className" type="java.lang.String"/>
+ <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Operation"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:AtomicUnit" name="Remove Empty Associated Class" seqExecutionOrder="3" unitId="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass" label="Remove Empty Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.2">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>
+ </refactoringUnits>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="selectedEObject" type="org.eclipse.uml2.uml.Class"/>
+ </mainRefactoringUnit>
+ <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.1"/>
+ <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.0/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>
+ <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>
+ <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.1/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.2/@inputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.2/@outputPort" target="//@mainRefactoringUnit/@helperUnits.3/@inputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.3/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.3/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.2/@inputPorts.0"/>
+ <modelRefactorings name="Move Attribute" refId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </modelRefactorings>
+ <modelRefactorings name="Move Operation" refId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </modelRefactorings>
+ <modelRefactorings name="Remove Empty Associated Class" refId="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass" label="Remove Empty Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>
+ </modelRefactorings>
+ <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedAttributesNoAssocEnds" helperId="comrel.getownedattributesnoassocends" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="property_s" type="org.eclipse.uml2.uml.Property"/>
+ </helper>
+ <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedOperations" helperId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="operation_s" type="org.eclipse.uml2.uml.Operation"/>
+ </helper>
+ <helper xsi:type="comrel:SingleFeatureHelper" name="Get Associated Class" helperId="comrel.getassociatedclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="class_out" type="org.eclipse.uml2.uml.Class"/>
+ </helper>
+ <helper xsi:type="comrel:SingleFeatureHelper" name="Get Class Name" helperId="comrel.getclassname" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>
+ <outputPort name="string_out" type="java.lang.String"/>
+ </helper>
+</comrel:CompositeRefactoring>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram
new file mode 100644
index 0000000..7393961
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:comrel="http://comrel/0.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_Yq6icOn7EeChi9jJDguWgA" type="Comrel" name="inlineclass.comrel_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_gNF6cOn7EeChi9jJDguWgA" type="2005" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gNF6c-n7EeChi9jJDguWgA" type="5083"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gNF6dOn7EeChi9jJDguWgA" type="7079">
+ <children xmi:type="notation:Shape" xmi:id="_5LPaEOn7EeChi9jJDguWgA" type="3062" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5LPaEun7EeChi9jJDguWgA" type="5045"/>
+ <children xmi:type="notation:Shape" xmi:id="_5LYkAOn7EeChi9jJDguWgA" type="3013" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5LYkAun7EeChi9jJDguWgA" type="5010">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5LYkA-n7EeChi9jJDguWgA" x="-94" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LYkAen7EeChi9jJDguWgA" x="168" y="-19"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_5LYkBOn7EeChi9jJDguWgA" type="3015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5LYkCen7EeChi9jJDguWgA" type="5012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5LYkCun7EeChi9jJDguWgA" y="5"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_5LYkBen7EeChi9jJDguWgA"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5LYkBun7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_5LYkB-n7EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:MultiOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LYkCOn7EeChi9jJDguWgA" x="168" y="39"/>
+ </children>
+ <element xmi:type="comrel:MultiFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LPaEen7EeChi9jJDguWgA" x="38" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MqavkOn8EeChi9jJDguWgA" type="3062" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Mqavkun8EeChi9jJDguWgA" type="5045"/>
+ <children xmi:type="notation:Shape" xmi:id="_Mqavk-n8EeChi9jJDguWgA" type="3013" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Mqavlen8EeChi9jJDguWgA" type="5010">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Mqavlun8EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MqavlOn8EeChi9jJDguWgA" x="78" y="-19"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_Mqavl-n8EeChi9jJDguWgA" type="3015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MqavnOn8EeChi9jJDguWgA" type="5012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Mqavnen8EeChi9jJDguWgA" y="5"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_MqavmOn8EeChi9jJDguWgA"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Mqavmen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_Mqavmun8EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:MultiOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mqavm-n8EeChi9jJDguWgA" x="78" y="39"/>
+ </children>
+ <element xmi:type="comrel:MultiFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mqavken8EeChi9jJDguWgA" x="422" y="98"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S54igOn8EeChi9jJDguWgA" type="3061" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S54igun8EeChi9jJDguWgA" type="5044"/>
+ <children xmi:type="notation:Shape" xmi:id="_S6x6YOn8EeChi9jJDguWgA" type="3009" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S6x6Yun8EeChi9jJDguWgA" type="5006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S6x6Y-n8EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S6x6Yen8EeChi9jJDguWgA" x="114" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S6x6ZOn8EeChi9jJDguWgA" type="3011" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S6x6Zun8EeChi9jJDguWgA" type="5008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S6x6Z-n8EeChi9jJDguWgA" y="5"/>
+ </children>
+ <element xmi:type="comrel:SingleOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S6x6Zen8EeChi9jJDguWgA" x="48" y="39"/>
+ </children>
+ <element xmi:type="comrel:SingleFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S54igen8EeChi9jJDguWgA" x="734" y="70"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VnW1YOn8EeChi9jJDguWgA" type="3061" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VnW1Yun8EeChi9jJDguWgA" type="5044"/>
+ <children xmi:type="notation:Shape" xmi:id="_VngmYOn8EeChi9jJDguWgA" type="3009" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VngmYun8EeChi9jJDguWgA" type="5006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VngmY-n8EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VngmYen8EeChi9jJDguWgA" x="78" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VngmZOn8EeChi9jJDguWgA" type="3011" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VngmZun8EeChi9jJDguWgA" type="5008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VngmZ-n8EeChi9jJDguWgA" y="5"/>
+ </children>
+ <element xmi:type="comrel:SingleOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VngmZen8EeChi9jJDguWgA" x="72" y="39"/>
+ </children>
+ <element xmi:type="comrel:SingleFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VnW1Yen8EeChi9jJDguWgA" x="704" y="190"/>
+ </children>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gNF6den7EeChi9jJDguWgA" type="7080">
+ <children xmi:type="notation:Shape" xmi:id="_l42jYOn7EeChi9jJDguWgA" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l42jY-n7EeChi9jJDguWgA" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l42jZOn7EeChi9jJDguWgA" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l42jZen7EeChi9jJDguWgA" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_qHUu8On7EeChi9jJDguWgA" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qHUu8un7EeChi9jJDguWgA" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_qHUu8-n7EeChi9jJDguWgA" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qHUu9en7EeChi9jJDguWgA" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qHUu9un7EeChi9jJDguWgA" x="-187" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu9On7EeChi9jJDguWgA" x="120" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qHUu9-n7EeChi9jJDguWgA" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qHUu-en7EeChi9jJDguWgA" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qHUu-un7EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu-On7EeChi9jJDguWgA" x="156" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu8en7EeChi9jJDguWgA" x="68" y="91"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_l5AUYOn7EeChi9jJDguWgA" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l5AUZen7EeChi9jJDguWgA" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l5AUZun7EeChi9jJDguWgA" x="-193" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_l5AUYen7EeChi9jJDguWgA"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_l5AUYun7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_l5AUY-n7EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:MultiInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5AUZOn7EeChi9jJDguWgA" x="198" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vTPaMOn7EeChi9jJDguWgA" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vTPaMun7EeChi9jJDguWgA" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vTPaM-n7EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vTPaMen7EeChi9jJDguWgA" x="234" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l42jYen7EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l42jYun7EeChi9jJDguWgA" x="8" y="130" width="397" height="254"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DFKskOn8EeChi9jJDguWgA" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DFKsk-n8EeChi9jJDguWgA" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DFKslOn8EeChi9jJDguWgA" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DFKslen8EeChi9jJDguWgA" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_EbdKEOn8EeChi9jJDguWgA" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EbdKEun8EeChi9jJDguWgA" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_EbdKE-n8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EbdKFen8EeChi9jJDguWgA" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EbdKFun8EeChi9jJDguWgA" x="-198" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKFOn8EeChi9jJDguWgA" x="132" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EbdKF-n8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EbdKGen8EeChi9jJDguWgA" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EbdKGun8EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKGOn8EeChi9jJDguWgA" x="168" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKEen8EeChi9jJDguWgA" x="69" y="78"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DFUdkOn8EeChi9jJDguWgA" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DFUdlen8EeChi9jJDguWgA" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DFUdlun8EeChi9jJDguWgA" x="-204" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_DFUdken8EeChi9jJDguWgA"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DFUdkun8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_DFUdk-n8EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:MultiInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFUdlOn8EeChi9jJDguWgA" x="217" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KbTMoOn8EeChi9jJDguWgA" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KbTMoun8EeChi9jJDguWgA" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KbTMo-n8EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KbTMoen8EeChi9jJDguWgA" x="253" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_DFKsken8EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFKskun8EeChi9jJDguWgA" x="416" y="131" width="415" height="253"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gE2H8On8EeChi9jJDguWgA" type="3074" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gE2H8un8EeChi9jJDguWgA" type="5050"/>
+ <children xmi:type="notation:Shape" xmi:id="_gE_48On8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gE_48un8EeChi9jJDguWgA" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gE_48-n8EeChi9jJDguWgA" x="-164" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gE_48en8EeChi9jJDguWgA" x="183" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gE2H8en8EeChi9jJDguWgA" x="848" y="210"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hJM9YOn7EeChi9jJDguWgA" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hJM9Yun7EeChi9jJDguWgA" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hJM9Y-n7EeChi9jJDguWgA" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hJM9Yen7EeChi9jJDguWgA"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_gNF6cen7EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:SequentialUnit" href="inlineclass.comrel#//@mainRefactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gNF6cun7EeChi9jJDguWgA" x="66" y="72" width="1177" height="757"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Yq6icen7EeChi9jJDguWgA"/>
+ <element xmi:type="comrel:CompositeRefactoring" href="inlineclass.comrel#/"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uf6f0On7EeChi9jJDguWgA" type="4003" source="_l5AUYOn7EeChi9jJDguWgA" target="_qHUu8-n7EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_uf6f0en7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="inlineclass.comrel#//@portMappings.0"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uf6f0un7EeChi9jJDguWgA" points="[-1, 10, 14, -215]$[-17, 215, -2, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_xFgCAOn7EeChi9jJDguWgA" type="4001" source="_vTPaMOn7EeChi9jJDguWgA" target="_qHUu9-n7EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_xFgCAen7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xFgCAun7EeChi9jJDguWgA" points="[-2, 10, 27, -215]$[-33, 215, -4, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_8W6E0On7EeChi9jJDguWgA" type="4002" source="_5LYkBOn7EeChi9jJDguWgA" target="_l5AUYOn7EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_8W6E0en7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="inlineclass.comrel#//@portMappings.2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8W6E0un7EeChi9jJDguWgA" points="[1, 10, -25, -245]$[25, 253, -1, -2]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-auWsOn7EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_5LYkAOn7EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_-auWsen7EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.3"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-auWsun7EeChi9jJDguWgA" points="[-10, 3, 405, -147]$[-418, 140, -3, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_H8aIUOn8EeChi9jJDguWgA" type="4003" source="_DFUdkOn8EeChi9jJDguWgA" target="_EbdKE-n8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_H8aIUen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="inlineclass.comrel#//@portMappings.4"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_H8aIUun8EeChi9jJDguWgA" points="[-4, 10, -1, -208]$[-4, 208, -1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LHMCQOn8EeChi9jJDguWgA" type="4001" source="_KbTMoOn8EeChi9jJDguWgA" target="_EbdKF-n8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_LHMCQen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.5"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LHMCQun8EeChi9jJDguWgA" points="[1, 10, -32, -208]$[31, 208, -2, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OiVTcOn8EeChi9jJDguWgA" type="4002" source="_Mqavl-n8EeChi9jJDguWgA" target="_DFUdkOn8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_OiVTcen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="inlineclass.comrel#//@portMappings.6"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OiVTcun8EeChi9jJDguWgA" points="[6, 10, -156, -252]$[160, 252, -2, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PUd7AOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_Mqavk-n8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_PUd7Aen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.7"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PUd7Aun8EeChi9jJDguWgA" points="[-8, 10, 113, -144]$[-131, 154, -10, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZOsvgOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_S6x6YOn8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZOsvgen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZOsvgun8EeChi9jJDguWgA" points="[10, 5, -217, -121]$[226, 116, -1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Z3LEwOn8EeChi9jJDguWgA" type="4001" source="_S6x6ZOn8EeChi9jJDguWgA" target="_VngmYOn8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Z3LEwen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.9"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Z3LEwun8EeChi9jJDguWgA" points="[-8, 10, 52, -70]$[-61, 70, -1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_afyj8On8EeChi9jJDguWgA" type="4001" source="_VngmZOn8EeChi9jJDguWgA" target="_vTPaMOn7EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_afyj8en8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.10"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_afyj8un8EeChi9jJDguWgA" points="[-10, 4, 470, -202]$[-480, 196, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bgWpEOn8EeChi9jJDguWgA" type="4001" source="_VngmZOn8EeChi9jJDguWgA" target="_KbTMoOn8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bgWpEen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.11"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bgWpEun8EeChi9jJDguWgA" points="[-2, 10, 28, -197]$[-30, 197, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iDAdwOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_gE_48On8EeChi9jJDguWgA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_iDAdwen8EeChi9jJDguWgA" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.12"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDAdwun8EeChi9jJDguWgA" points="[10, 0, -443, -573]$[453, 0, 0, -573]$[453, 563, 0, -10]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
index a8ac11e..de01257 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
@@ -88,6 +88,12 @@
id="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass"
menulabel="Extract Superclass"
namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+ <refactoring
+ controller="org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringController"
+ gui="org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringGuiHandler"
+ id="org.eclipse.emf.refactor.refactorings.uml24.inlineclass"
+ menulabel="Inline Class"
+ namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
<refactoring
controller="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringController"
gui="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringGuiHandler"
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java
new file mode 100644
index 0000000..195d94c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java
@@ -0,0 +1,227 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;
+import org.eclipse.emf.refactor.refactorings.uml24.compositional.UmlUtils;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
+import org.eclipse.uml2.uml.Class;
+
+import comrel.InputPort;
+import comrel.RefactoringUnit;
+import comrel.SingleInputPort;
+import comrel.interpreter.ComrelInterpreter;
+
+public final class RefactoringController implements IController{
+
+ /**
+ * Refactoring supported by the controller.
+ * @generated
+ */
+ private Refactoring parent;
+
+ /**
+ * DataManagement object of the model refactoring.
+ * @generated
+ */
+ private RefactoringDataManagement dataManagement =
+ new RefactoringDataManagement();
+
+ /**
+ * Invocation context of the model refactoring.
+ * @generated
+ */
+ private List<EObject> selection = new ArrayList<EObject>();
+
+ /**
+ * Ltk RefactoringProcessor of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor refactoringProcessor = null;
+
+ /**
+ * Gets the Refactoring supported by the controller.
+ * @return Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.common.core.IController#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return this.parent;
+ }
+
+ /**
+ * Sets the Refactoring supported by the controller.
+ * @param emfRefactoring Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * setParent(org.eclipse.emf.refactor.common.core.Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring emfRefactoring) {
+ this.parent = emfRefactoring;
+ }
+
+ /**
+ * Returns the DataManagement object of the model refactoring.
+ * @return DataManagement object of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * getDataManagementObject()
+ * @generated
+ */
+ @Override
+ public IDataManagement getDataManagementObject() {
+ return this.dataManagement;
+ }
+
+ /**
+ * Returns the ltk RefactoringProcessor of the model refactoring.
+ * @return Ltk RefactoringProcessor of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * getLtkRefactoringProcessor()
+ * @generated
+ */
+ @Override
+ public RefactoringProcessor getLtkRefactoringProcessor() {
+ return this.refactoringProcessor;
+ }
+
+ /**
+ * Sets the selected EObject (invocation context of the model refactoring).
+ * @param selection Invocation context of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * setSelection(java.util.List)
+ * @generated
+ */
+ @Override
+ public void setSelection(List<EObject> selection) {
+ this.selection = selection;
+ this.refactoringProcessor =
+ new InternalRefactoringProcessor(this.selection);
+ }
+
+ /**
+ * Returns a Runnable object that executes the model refactoring.
+ * @return Runnable object that executes the model refactoring.
+ * @generated
+ */
+ private Runnable applyRefactoring() {
+ return new Runnable() {
+ /**
+ * @see java.lang.Runnable#run()
+ * @generated
+ */
+ @Override
+ public void run() {
+ try {
+ org.eclipse.uml2.uml.Class selectedEObject =
+ (org.eclipse.uml2.uml.Class) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // begin prepare and execute comrel interpreter
+ ComrelInterpreter interpreter = new ComrelInterpreter(selectedEObject);
+ interpreter.loadComrelModel(dataManagement.getComrelFilePath());
+ setRootPortValues(interpreter, selectedEObject);
+ interpreter.execute();
+ // end prepare and execute comrel interpreter
+ stopTimeRecording();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void setRootPortValues(
+ ComrelInterpreter interpreter,
+ org.eclipse.uml2.uml.Class selectedEObject) {
+ RefactoringUnit rootRefactoringUnit = interpreter.getRootRefactoringUnit();
+ for (InputPort ip : rootRefactoringUnit.getAllInputPorts()) {
+ System.out.println(ip.getName());
+ if (ip.getName().equals("selectedEObject")) {
+ ((SingleInputPort) ip).setValue(selectedEObject);
+ }
+ }
+ }
+ };
+ }
+
+ /**
+ * Internal class for providing an instance of a LTK RefactoringProcessor
+ * used for EMF model refactorings.
+ * @generated
+ */
+ public final class InternalRefactoringProcessor extends
+ LtkEmfRefactoringProcessorAdapter {
+
+ /**
+ * Constructor using the invocation context of the model refactoring.
+ * @param selection Invocation context of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor(List<EObject> selection){
+ super(getParent(), selection, applyRefactoring());
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkInitialConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ org.eclipse.uml2.uml.Class selectedEObject =
+ (org.eclipse.uml2.uml.Class) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // test: the selected class must be associated to at least one class
+ List<Class> associatedclasses =
+ UmlUtils.getOtherAssociatedClasses(selectedEObject);
+ String msg = "Class '" + selectedEObject.getName() +
+ "' is not associated to any classes!";
+ if (associatedclasses.isEmpty()) {
+ result.addFatalError(msg);
+ return result;
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor,
+ * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkFinalConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ // the refactoring does not have any additional initial conditions
+ startTimeRecording();
+ return result;
+ }
+
+ }
+
+ long zstVorher;
+ long zstNachher;
+
+ private void startTimeRecording() {
+ zstVorher = System.currentTimeMillis();
+ }
+
+ private void stopTimeRecording() {
+ zstNachher = System.currentTimeMillis();
+ System.out.println("Time needed (withoud loading): " + ((zstNachher - zstVorher)) + " ms");
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..fcd82c2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java
@@ -0,0 +1,81 @@
+
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;
+
+import java.io.File;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Port;
+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;
+import org.eclipse.emf.refactor.refactorings.uml24.compositional.Activator;
+import org.osgi.framework.Bundle;
+
+/**
+ * Class for specific data concerning a model refactoring.
+ * @generated
+ */
+public class RefactoringDataManagement extends DataManagementAdapter {
+
+ protected final String SELECTEDEOBJECT = "selectedEObject";
+ protected final String COMRELMODELS = "comrelmodels";
+ protected final String COMRELMODELSSLASH = "\\comrelmodels\\";
+
+ private String comrelFileName = "inlineclass.comrel";
+
+ /**
+ * Default constructor.
+ * @generated
+ */
+ public RefactoringDataManagement() {
+ this.addPorts();
+ }
+
+ /**
+ * Adds the ports to the data management used for parameter passing.
+ * @generated
+ */
+ private void addPorts(){
+ this.inPorts.add
+ (new Port<org.eclipse.uml2.uml.Class>
+ (SELECTEDEOBJECT, org.eclipse.uml2.uml.Class.class));
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.IDataManagement#
+ * preselect(java.util.List)
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void preselect(List<EObject> selection) {
+ getInPortByName(SELECTEDEOBJECT).
+ setValue((org.eclipse.uml2.uml.Class) selection.get(0));
+ }
+
+ public String getComrelFilePath() {
+ String path = "";
+ final Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
+ try {
+ if (bundle != null) {
+ path = FileLocator.toFileURL(bundle.getEntry(COMRELMODELS)).getFile();
+ path += this.comrelFileName;
+ } else {
+ path = new File(".").getCanonicalPath()
+ + COMRELMODELSSLASH + this.comrelFileName;
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ return path;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..56b6f68
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java
@@ -0,0 +1,76 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;
+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
+
+/**
+ * Class used for specifying gui topics of a specific model refactoring.
+ * @generated
+ */
+public class RefactoringGuiHandler implements IGuiHandler {
+
+ /**
+ * Refactoring supported by the GuiHandler.
+ * @generated
+ */
+ Refactoring parent;
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return parent;
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#
+ * setParent(org.eclipse.emf.refactor.common.core.Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring emfRefactoring) {
+ this.parent = emfRefactoring;
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#show()
+ * @generated
+ */
+ @Override
+ public RefactoringWizard show() {
+ return new org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringWizard
+ ((RefactoringController)this.parent.getController());
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#
+ * showInMenu(java.util.List)
+ * @generated
+ */
+ @Override
+ public boolean showInMenu(List<EObject> selection) {
+ if (selection.size() != 1) return false;
+ for (EObject o : selection) {
+ if (null != o) {
+ if (o instanceof org.eclipse.uml2.uml.Class) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java
new file mode 100644
index 0000000..9613d6f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizard.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;
+
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;
+
+/**
+ * Class used for providing an implementation of an LTK
+ * RefactoringWizard in EMF Refactor.
+ * @generated
+ */
+public class RefactoringWizard
+ extends AbstractRefactoringWizard {
+
+ /**
+ * Default constructor implementation.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizard(IController controller) {
+ super(controller);
+ }
+
+ /**
+ * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#
+ * addUserInputPages()
+ * @generated
+ */
+ @Override
+ protected void addUserInputPages() {
+ addPage(new RefactoringWizardPage
+ (controller.getParent().getName(), (RefactoringController)controller));
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..fa73892
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;
+
+import java.util.List;
+
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;
+import org.eclipse.emf.refactor.refactoring.runtime.ui.IInputPageButtonCreator;
+import org.eclipse.emf.refactor.refactoring.runtime.ui.InputPageButtonLoader;
+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * Class for setting model refactoring specific parameters
+ * by the user.
+ * @generated
+ */
+public class RefactoringWizardPage extends
+ UserInputWizardPage implements Listener {
+
+ /**
+ * Controller of the EMF model refactoring.
+ * @generated
+ */
+ private final RefactoringController controller;
+
+
+ /**
+ * Default constructor using a name and the controller of the
+ * EMF model refactoring.
+ * @param name Name of the WizardPage.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizardPage
+ (String name, RefactoringController controller) {
+ super(name);
+ this.controller = controller;
+ }
+
+ /**
+ * @see org.eclipse.swt.widgets.Listener#
+ * handleEvent(org.eclipse.swt.widgets.Event)
+ * @generated
+ */
+ @Override
+ public void handleEvent(Event event) {
+ getWizard().getContainer().updateButtons();
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.IDialogPage#
+ * createControl(org.eclipse.swt.widgets.Composite)
+ * @generated
+ */
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ composite.setLayout(gl);
+
+ List<IInputPageButtonCreator> buttonCreators = InputPageButtonLoader.iNSTANCE.getInputPageButtonCreatorClasses();
+ for(IInputPageButtonCreator creator : buttonCreators){
+ creator.createButton(composite, controller, (AbstractRefactoringWizard)this.getWizard());
+ }
+
+ setControl(composite);
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
index 33a7499..bd54d7c 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
+++ b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
index 4e8db9f..069b828 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
+++ b/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
@@ -60,6 +60,7 @@
*/
@Override
public boolean showInMenu(List<EObject> selection) {
+ if (selection.size() > 1) return false;
for(EObject o:selection){
if(null != o){
if (o instanceof org.eclipse.uml2.uml.Property) {
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
index a4bafe3..bbc1734 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class
new file mode 100644
index 0000000..64d200c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..23f2a07
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class
new file mode 100644
index 0000000..78cd61a
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..22ae892
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..7ca7e62
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class
new file mode 100644
index 0000000..e863762
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class
new file mode 100644
index 0000000..9f36570
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class
new file mode 100644
index 0000000..6a56ce2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..cfbcf0f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
index 4c8ff22..538d8fb 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
@@ -56,6 +56,12 @@
menulabel="Push Down Operation"
namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
<refactoring
+ controller="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringController"
+ gui="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringGuiHandler"
+ id="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass"
+ menulabel="Remove Empty Associated Class"
+ namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+<refactoring
controller="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass.RefactoringController"
gui="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass.RefactoringGuiHandler"
id="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass"
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
index cdff5ab..2e686a2 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
@@ -60,6 +60,7 @@
*/
@Override
public boolean showInMenu(List<EObject> selection) {
+ if (selection.size() > 1) return false;
for(EObject o:selection){
if(null != o){
if (o instanceof org.eclipse.uml2.uml.Property) {
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java
new file mode 100644
index 0000000..e00f8cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java
@@ -0,0 +1,261 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;
+import org.eclipse.emf.refactor.refactorings.uml24.UmlUtils;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+
+
+public final class RefactoringController implements IController{
+
+ /**
+ * Refactoring supported by the controller.
+ * @generated
+ */
+ private Refactoring parent;
+
+ /**
+ * DataManagement object of the model refactoring.
+ * @generated
+ */
+ private RefactoringDataManagement dataManagement =
+ new RefactoringDataManagement();
+
+ /**
+ * Invocation context of the model refactoring.
+ * @generated
+ */
+ private List<EObject> selection = new ArrayList<EObject>();
+
+ /**
+ * Ltk RefactoringProcessor of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor refactoringProcessor = null;
+
+ /**
+ * Gets the Refactoring supported by the controller.
+ * @return Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.common.core.IController#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return this.parent;
+ }
+
+ /**
+ * Sets the Refactoring supported by the controller.
+ * @param emfRefactoring Refactoring supported by the controller.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * setParent(org.eclipse.emf.refactor.common.core.Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring emfRefactoring) {
+ this.parent = emfRefactoring;
+ }
+
+ /**
+ * Returns the DataManagement object of the model refactoring.
+ * @return DataManagement object of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * getDataManagementObject()
+ * @generated
+ */
+ @Override
+ public IDataManagement getDataManagementObject() {
+ return this.dataManagement;
+ }
+
+ /**
+ * Returns the ltk RefactoringProcessor of the model refactoring.
+ * @return Ltk RefactoringProcessor of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * getLtkRefactoringProcessor()
+ * @generated
+ */
+ @Override
+ public RefactoringProcessor getLtkRefactoringProcessor() {
+ return this.refactoringProcessor;
+ }
+
+ /**
+ * Sets the selected EObject (invocation context of the model refactoring).
+ * @param selection Invocation context of the model refactoring.
+ * @see org.eclipse.emf.refactor.common.core.IController#
+ * setSelection(java.util.List)
+ * @generated
+ */
+ @Override
+ public void setSelection(List<EObject> selection) {
+ this.selection = selection;
+ this.refactoringProcessor =
+ new InternalRefactoringProcessor(this.selection);
+ }
+
+ /**
+ * Returns a Runnable object that executes the model refactoring.
+ * @return Runnable object that executes the model refactoring.
+ * @generated
+ */
+ private Runnable applyRefactoring() {
+ return new Runnable() {
+ /**
+ * @see java.lang.Runnable#run()
+ * @generated
+ */
+ @Override
+ public void run() {
+ org.eclipse.uml2.uml.Class selectedEObject =
+ (org.eclipse.uml2.uml.Class) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // execute: remove all associations from class
+ List<Association> associations = UmlUtils.getAssociations(selectedEObject);
+ List<Class> owningClasses = new ArrayList<Class>();
+ List<Property> attributesToDelete = new ArrayList<Property>();
+ List<Package> owningPackages = new ArrayList<Package>();
+ List<Association> associationsToDelete = new ArrayList<Association>();
+ for (Association assoc : associations) {
+ for (Property ae : assoc.getMemberEnds()) {
+ if (! assoc.getOwnedEnds().contains(ae)) {
+ owningClasses.add(ae.getClass_());
+ attributesToDelete.add(ae);
+ }
+ }
+ owningPackages.add(assoc.getPackage());
+ associationsToDelete.add(assoc);
+ }
+ // remove association end as class attributes
+ for (int i=0; i < owningClasses.size(); i++) {
+ owningClasses.get(i).getOwnedAttributes().remove(attributesToDelete.get(i));
+ }
+ // remove associations from owning packages
+ for (int i=0; i < owningPackages.size(); i++) {
+ owningPackages.get(i).getPackagedElements().remove(associationsToDelete.get(i));
+ }
+ // execute: remove selected class from owning package
+ Package owningPackage = selectedEObject.getPackage();
+ owningPackage.getPackagedElements().remove(selectedEObject);
+ }
+ };
+ }
+
+ /**
+ * Internal class for providing an instance of a LTK RefactoringProcessor
+ * used for EMF model refactorings.
+ * @generated
+ */
+ public final class InternalRefactoringProcessor extends
+ LtkEmfRefactoringProcessorAdapter {
+
+ /**
+ * Constructor using the invocation context of the model refactoring.
+ * @param selection Invocation context of the model refactoring.
+ * @generated
+ */
+ private InternalRefactoringProcessor(List<EObject> selection){
+ super(getParent(), selection, applyRefactoring());
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkInitialConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ org.eclipse.uml2.uml.Class selectedEObject =
+ (org.eclipse.uml2.uml.Class) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // test: the selected class must be owned by a package
+ String msg = "This refactoring can only be applied" +
+ " on classes which are owned by a package!";
+ if (selectedEObject.getPackage() == null) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the selected class must be associated to at least one class
+ List<Class> associatedclasses =
+ UmlUtils.getOtherAssociatedClasses(selectedEObject);
+ msg = "Class '" + selectedEObject.getName() +
+ "' is not associated to any classes!";
+ if (associatedclasses.isEmpty()) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the selected class must be associated to at most one class
+ msg = "Class '" + selectedEObject.getName() +
+ "' is associated to more than one class!";
+ if (associatedclasses.size() > 1) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the selected class must not have any attributes
+ // except for those that are owned by associations
+ msg = "Class '" + selectedEObject.getName() + "' has further " +
+ "attributes except for those that are owned by associations!";
+ for (Property attr : selectedEObject.getOwnedAttributes()) {
+ if (attr.getAssociation() == null) result.addFatalError(msg);
+ }
+ // test: the selected class must not own any operations
+ msg = "Class '" + selectedEObject.getName() + "' owns at least one operation!";
+ if (UmlUtils.hasOperations(selectedEObject)) result.addFatalError(msg);
+ // test: the class must not have any inner classes
+ msg = "Class '" + selectedEObject.getName() + "' has at least one inner class!";
+ if (UmlUtils.hasInnerClasses(selectedEObject)) result.addFatalError(msg);
+ // test: the selected class must not have any subclasses
+ msg = "Class '" + selectedEObject.getName() + "' has at least one subclass!";
+ if (UmlUtils.hasSubclasses(selectedEObject)) result.addFatalError(msg);
+ // test: the selected class must not have any superclasses
+ msg = "Class '" + selectedEObject.getName() + "' has at least one superclass!";
+ if (UmlUtils.hasSuperclasses(selectedEObject)) result.addFatalError(msg);
+ // test: the class must not implement any interfaces
+ msg = "Class '" + selectedEObject.getName() + "' implements at least one interface!";
+ if (UmlUtils.implementsInterfaces(selectedEObject)) result.addFatalError(msg);
+ // test: the class must not use any interfaces
+ msg = "Class '" + selectedEObject.getName() + "' uses at least one interface!";
+ if (UmlUtils.usesInterfaces(selectedEObject)) result.addFatalError(msg);
+ // test: the class must not be used as attribute type
+ msg = "Class '" + selectedEObject.getName() + "' is used as attribute type!";
+ if (UmlUtils.isUsedAsFurtherAttributeType(selectedEObject)) result.addFatalError(msg);
+ // test: the class must not be used as operation/parameter type
+ msg = "Class '" + selectedEObject.getName() + "' is used as operation/parameter type!";
+ if (UmlUtils.isUsedAsParameterType(selectedEObject)) result.addFatalError(msg);
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#
+ * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor,
+ * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)
+ * @generated
+ */
+ @Override
+ public RefactoringStatus checkFinalConditions(){
+ RefactoringStatus result = new RefactoringStatus();
+ // no final checks
+ return result;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..3145384
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Port;
+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;
+
+/**
+ * Class for specific data concerning a model refactoring.
+ * @generated
+ */
+public class RefactoringDataManagement extends DataManagementAdapter {
+
+ protected final String SELECTEDEOBJECT = "selectedEObject";
+
+ /**
+ * Default constructor.
+ * @generated
+ */
+ public RefactoringDataManagement() {
+ this.addPorts();
+ }
+
+ /**
+ * Adds the ports to the data management used for parameter passing.
+ * @generated
+ */
+ private void addPorts(){
+ this.inPorts.add
+ (new Port<org.eclipse.uml2.uml.Class>
+ (SELECTEDEOBJECT, org.eclipse.uml2.uml.Class.class));
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.IDataManagement#
+ * preselect(java.util.List)
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void preselect(List<EObject> selection) {
+ getInPortByName(SELECTEDEOBJECT).
+ setValue((org.eclipse.uml2.uml.Class) selection.get(0));
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..3e3fa51
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java
@@ -0,0 +1,76 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;
+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
+
+/**
+ * Class used for specifying gui topics of a specific model refactoring.
+ * @generated
+ */
+public class RefactoringGuiHandler implements IGuiHandler {
+
+ /**
+ * Refactoring supported by the GuiHandler.
+ * @generated
+ */
+ Refactoring parent;
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#getParent()
+ * @generated
+ */
+ @Override
+ public Refactoring getParent() {
+ return parent;
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#
+ * setParent(org.eclipse.emf.refactor.common.core.Refactoring)
+ * @generated
+ */
+ @Override
+ public void setParent(Refactoring emfRefactoring) {
+ this.parent = emfRefactoring;
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#show()
+ * @generated
+ */
+ @Override
+ public RefactoringWizard show() {
+ return new org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringWizard
+ ((RefactoringController)this.parent.getController());
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#
+ * showInMenu(java.util.List)
+ * @generated
+ */
+ @Override
+ public boolean showInMenu(List<EObject> selection) {
+ if (selection.size() > 1) return false;
+ for(EObject o:selection){
+ if(null != o){
+ if (o instanceof org.eclipse.uml2.uml.Class) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java
new file mode 100644
index 0000000..4c882e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java
@@ -0,0 +1,97 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringTest.javajet,v 1.2 2011/03/16 16:14:21 tarendt Exp $
+ */
+
+package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.runtime.test.JUnitTestCaseAdapter;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Class used for running individual JUnit test cases
+ * of the specific model refactoring.
+ * @generated
+ */
+@RunWith(value = Parameterized.class)
+public class RefactoringTest extends JUnitTestCaseAdapter {
+
+ /**
+ * Number of test cases.
+ * @generated
+ */
+ private String number;
+
+ /**
+ * Constructor implementation.
+ * @param number Number of test cases.
+ * @generated
+ */
+ public RefactoringTest(String number) throws IOException {
+ super("de.unimarburg.swt.refactorings.uml.removeemptyassociatedclass",
+ "uml",
+ new File(".").getCanonicalPath(),
+ new Refactoring(null, "", "http://www.eclipse.org/uml2/4.0.0/UML", new RefactoringGuiHandler(), new RefactoringController()));
+ register(UMLPackage.eINSTANCE);
+ this.number = number;
+ }
+
+ @Parameters
+ public static Collection<Object[]> data() {
+ List<String> testNumbers = getTestNumbers();
+ Object[][] data = new Object[testNumbers.size()][1];
+ for (int i = 0; i < testNumbers.size(); i++) {
+ data[i][0] = testNumbers.get(i);
+ }
+ return Arrays.asList(data);
+ }
+
+ private static List<String> getTestNumbers() {
+ List<String> numbers = new ArrayList<String>();
+ try {
+ String pathPrefix = new File(".").getCanonicalPath() + "/tests/" + "de.unimarburg.swt.refactorings.uml.removeemptyassociatedclass";
+ File testCaseDir = new File(pathPrefix,"/");
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.startsWith("test_");
+ }
+ };
+ String[] children = testCaseDir.list(filter);
+ if (children != null) {
+ for (String child : children) {
+ numbers.add(
+ child.substring(
+ child.indexOf('_') + 1));
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return numbers;
+ }
+
+ /**
+ * Runs the test.
+ */
+ @Test
+ public void test() {
+ System.out.println("running test test_" + number);
+ executeTestCase(number);
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java
new file mode 100644
index 0000000..c262451
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizard.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import org.eclipse.emf.refactor.refactoring.interfaces.IController;
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;
+
+/**
+ * Class used for providing an implementation of an LTK
+ * RefactoringWizard in EMF Refactor.
+ * @generated
+ */
+public class RefactoringWizard
+ extends AbstractRefactoringWizard {
+
+ /**
+ * Default constructor implementation.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizard(IController controller) {
+ super(controller);
+ }
+
+ /**
+ * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#
+ * addUserInputPages()
+ * @generated
+ */
+ @Override
+ protected void addUserInputPages() {
+ addPage(new RefactoringWizardPage
+ (controller.getParent().getName(), (RefactoringController)controller));
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..42cf287
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;
+
+import java.util.List;
+
+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;
+import org.eclipse.emf.refactor.refactoring.runtime.ui.IInputPageButtonCreator;
+import org.eclipse.emf.refactor.refactoring.runtime.ui.InputPageButtonLoader;
+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * Class for setting model refactoring specific parameters
+ * by the user.
+ * @generated
+ */
+public class RefactoringWizardPage extends
+ UserInputWizardPage implements Listener {
+
+ /**
+ * Controller of the EMF model refactoring.
+ * @generated
+ */
+ private final RefactoringController controller;
+
+
+ /**
+ * Default constructor using a name and the controller of the
+ * EMF model refactoring.
+ * @param name Name of the WizardPage.
+ * @param controller Controller of the EMF model refactoring.
+ * @generated
+ */
+ public RefactoringWizardPage
+ (String name, RefactoringController controller) {
+ super(name);
+ this.controller = controller;
+ }
+
+ /**
+ * @see org.eclipse.swt.widgets.Listener#
+ * handleEvent(org.eclipse.swt.widgets.Event)
+ * @generated
+ */
+ @Override
+ public void handleEvent(Event event) {
+ getWizard().getContainer().updateButtons();
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.IDialogPage#
+ * createControl(org.eclipse.swt.widgets.Composite)
+ * @generated
+ */
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ composite.setLayout(gl);
+
+ List<IInputPageButtonCreator> buttonCreators = InputPageButtonLoader.iNSTANCE.getInputPageButtonCreatorClasses();
+ for(IInputPageButtonCreator creator : buttonCreators){
+ creator.createButton(composite, controller, (AbstractRefactoringWizard)this.getWizard());
+ }
+
+ setControl(composite);
+ }
+
+}
+
\ No newline at end of file