From 76991867af45173d7450e5af057b6e7283ecaa3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20D=C3=B6bber?= <doebber@in.tum.de>
Date: Fri, 2 Sep 2011 09:26:45 +0000
Subject: [PATCH] refactorings and cleanups

---
 .../HierarchicElementCompositorBase.java      | 68 +++++++++++++------
 .../tooling/kernel/utils/ModelUtils.java      | 43 ++++++++++++
 2 files changed, 90 insertions(+), 21 deletions(-)
 create mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ModelUtils.java

diff --git a/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/decompose/HierarchicElementCompositorBase.java b/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/decompose/HierarchicElementCompositorBase.java
index 60337769e..f8106f141 100644
--- a/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/decompose/HierarchicElementCompositorBase.java
+++ b/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/decompose/HierarchicElementCompositorBase.java
@@ -49,17 +49,18 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 	 * Decomposition ability check that takes care of the whole model subtree.
 	 * Subclasses implement {@link #canDecompose*****()} instead.
 	 */
+	@SuppressWarnings("javadoc")
 	@Override
 	public final boolean canDecompose(EObject contained) {
 		// TODO remove
-		System.out.println(contained);
 		return iterateDecompose(contained, true);
 	}
 
 	/**
-	 * Decomposition ability check that takes care of the whole model subtree.
-	 * Subclasses implement {@link #decompose*****()} instead.
+	 * Decomposition that takes care of the whole model subtree. Subclasses
+	 * implement {@link #decompose*****()} instead.
 	 */
+	@SuppressWarnings("javadoc")
 	@Override
 	public final boolean decompose(EObject contained) {
 		return iterateDecompose(contained, false);
@@ -76,7 +77,6 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 	 * (non-recursively). Subclasses may override.
 	 */
 	protected boolean decomposeSpecific(EObject contained) {
-		System.out.println("specific: " + contained + " ### " + this);
 		EcoreUtil.delete(contained);
 		return true;
 	}
@@ -216,8 +216,8 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 	}
 
 	/**
-	 * Iterates over specifications of given {@link IModelElement} and checks
-	 * for decomposition ability
+	 * Iterates over specifications of given {@link IModelElement} and performs
+	 * decomposition.
 	 */
 	private boolean iterateDecomposeSpecifications(IModelElement me) {
 		ArrayList<IModelElementSpecification> list = new ArrayList<IModelElementSpecification>(
@@ -232,7 +232,7 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 
 	/**
 	 * Iterates over sub elements of given {@link IHierarchicElementContainer}
-	 * and checks for decomposition ability.
+	 * and performs decomposition.
 	 */
 	private boolean iterateDecomposeSubelements(
 			IHierarchicElementContainer contained) {
@@ -247,8 +247,8 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 	}
 
 	/**
-	 * Iterates over list of connections and checks for disconnection ability or
-	 * decomposition ability of sub elements respectively.
+	 * Iterates over list of connections and runs disconnection or decomposition
+	 * of sub elements respectively.
 	 */
 	private boolean iterateDecomposeConnections(
 			EList<IConnection> connectionsList) {
@@ -263,8 +263,8 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 	}
 
 	/**
-	 * Iterates over connectors of given {@link IHierarchicElement} and checks
-	 * for decomposition ability.
+	 * Iterates over connectors of given {@link IHierarchicElement} and runs
+	 * decomposition.
 	 */
 	private boolean iterateDecomposeConnectors(IHierarchicElement contained) {
 		ArrayList<IConnector> list = new ArrayList<IConnector>(
@@ -277,7 +277,10 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return true;
 	}
 
-	/** Base implementation returns true by default. Subclasses may override. */
+	/**
+	 * Base implementation returns compositors' decision by default. Subclasses
+	 * may override.
+	 */
 	protected boolean canDecomposeSpecification(
 			IModelElementSpecification element) {
 		if (element instanceof IHiddenSpecification) {
@@ -286,18 +289,27 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return IElementCompositorService.INSTANCE.canDecompose(element);
 	}
 
-	/** Base implementation returns true by default. Subclasses may override. */
-	protected boolean canDecomposeReference(EObject element) {
+	/**
+	 * Base implementation yet empty.
+	 */
+	protected boolean canDecomposeReference(
+			@SuppressWarnings("unused") EObject element) {
 		// TODO implement reference removal
 		return true;
 	}
 
-	/** Base implementation returns true by default. Subclasses may override. */
+	/**
+	 * Base implementation returns compositors' decision by default. Subclasses
+	 * may override.
+	 */
 	protected boolean canDecomposeSubElement(IHierarchicElement element) {
 		return IElementCompositorService.INSTANCE.canDecompose(element);
 	}
 
-	/** Base implementation returns true by default. Subclasses may override. */
+	/**
+	 * Base implementation returns compositors' decision by default. Subclasses
+	 * may override.
+	 */
 	protected boolean canDecomposeConnector(IConnector element) {
 		return IElementCompositorService.INSTANCE.canDecompose(element);
 	}
@@ -310,8 +322,11 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return IConnectionCompositorService.INSTANCE.canDisconnect(conn);
 	}
 
+	/**
+	 * Base implementation returns compositors' decomposition by default and
+	 * invokes EcoreUtil.delete() otherwise. Subclasses may override.
+	 */
 	protected boolean decomposeSpecification(IModelElementSpecification element) {
-		System.out.println("specification: " + element + " ### " + this);
 		if (IElementCompositorService.INSTANCE.canDecompose(element)) {
 			return IElementCompositorService.INSTANCE.decompose(element);
 		}
@@ -319,13 +334,18 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return true;
 	}
 
-	protected boolean decomposeReferences(EObject element) {
+	/** Base implementation yet empty. */
+	protected boolean decomposeReferences(
+			@SuppressWarnings("unused") EObject element) {
 		// TODO implement reference removal
 		return true;
 	}
 
+	/**
+	 * Base implementation returns compositors' decomposition by default and
+	 * invokes EcoreUtil.delete() otherwise Subclasses may override.
+	 */
 	protected boolean decomposeSubelement(IHierarchicElement element) {
-		System.out.println("subelement: " + element + " ### " + this);
 		if (IElementCompositorService.INSTANCE.canDecompose(element)) {
 			return IElementCompositorService.INSTANCE.decompose(element);
 		}
@@ -333,12 +353,15 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return true;
 	}
 
+	/**
+	 * Base implementation returns compositors' decomposition by default and
+	 * invokes EcoreUtil.delete() otherwise Subclasses may override.
+	 */
 	protected boolean decomposeConnector(IConnector element) {
 		ArrayList<IConnection> list = new ArrayList<IConnection>(
 				element.getIncomingList());
 		list.addAll(element.getOutgoingList());
 		for (IConnection conn : list) {
-			System.out.println("disconnect: " + element + " ### " + this);
 			if (!IConnectionCompositorService.INSTANCE.disconnect(conn)) {
 				return false;
 			}
@@ -347,8 +370,11 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
 		return true;
 	}
 
+	/**
+	 * Base implementation returns compositors' decomposition by default and
+	 * invokes EcoreUtil.delete() otherwise Subclasses may override.
+	 */
 	protected boolean decomposeConnection(IConnection conn) {
-		System.out.println("connection: " + conn + " ### " + this);
 		return IConnectionCompositorService.INSTANCE.disconnect(conn);
 	}
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ModelUtils.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ModelUtils.java
new file mode 100644
index 000000000..e633cc4ab
--- /dev/null
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ModelUtils.java
@@ -0,0 +1,43 @@
+/*--------------------------------------------------------------------------+
+$Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.utils;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
+import org.fortiss.tooling.kernel.service.IPersistencyService;
+
+/**
+ * Utils class implementing basic model related functionality for convenience.
+ * 
+ * @author doebber
+ * @author $Author: hoelzl $
+ * @version $Rev: 18709 $
+ * @ConQAT.Rating RED Hash:
+ */
+public class ModelUtils {
+
+	/**
+	 * Wraps model change in transactional command and invokes on model context.
+	 */
+	public static void runAsCommand(EObject element, Runnable command) {
+		ITopLevelElement topLevel = IPersistencyService.INSTANCE
+				.getTopLevelElementFor(element);
+		topLevel.runAsCommand(command);
+	}
+
+}
-- 
GitLab