Author: thn
Date: 2010-12-03 01:03:30-0800
New Revision: 18863

Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelManagementHelperEUMLImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/ModelManagementHelper.java

Log:
UML2 only: provide a method for getting root elements that are related to a 
given model object.

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelManagementHelperEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelManagementHelperEUMLImpl.java?view=diff&pathrev=18863&r1=18862&r2=18863
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelManagementHelperEUMLImpl.java
     (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelManagementHelperEUMLImpl.java
     2010-12-03 01:03:30-0800
@@ -202,7 +202,20 @@
         path.add(modelImpl.getFacade().getName(element));
         return path;
     }
-    
+
+    public List<Object> getRootElements(Object model) {
+        if (model instanceof Model) {
+            List<Object> contents = new ArrayList<Object>();
+            contents.addAll(((Model) model).eResource().getContents());
+            if (!contents.contains(model)) {
+                contents.add(model);
+            }
+            return contents;
+        }
+        throw new IllegalArgumentException(
+                "model must be instance of Model"); //$NON-NLS-1$
+    }
+
     public boolean isCyclicOwnership(Object parent, Object child) {
         // TODO: Auto-generated method stub
         return false;

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java?view=diff&pathrev=18863&r1=18862&r2=18863
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
        2010-12-03 01:03:30-0800
@@ -427,6 +427,13 @@
     }
     
 
+    public List<Object> getRootElements(Object model) {
+        List<Object> contents = new ArrayList<Object>();
+        contents.add(model);
+        return contents;
+    }
+
+    
     public boolean isCyclicOwnership(Object parent, Object child) {
         return (getOwnerShipPath(parent).contains(child) || parent == child);
     }

Modified: 
trunk/src/argouml-core-model/src/org/argouml/model/ModelManagementHelper.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/ModelManagementHelper.java?view=diff&pathrev=18863&r1=18862&r2=18863
==============================================================================
--- 
trunk/src/argouml-core-model/src/org/argouml/model/ModelManagementHelper.java   
    (original)
+++ 
trunk/src/argouml-core-model/src/org/argouml/model/ModelManagementHelper.java   
    2010-12-03 01:03:30-0800
@@ -185,6 +185,21 @@
      */
     List<String> getPathList(Object element);
     
+    /**
+     * Find the root elements in the context of a given model. The model itself
+     * also belongs to the list, so the resulting list cannot be empty.
+     * <p>
+     * Note: in UML 1.x, the model itself is the only element that is returned.
+     * But in UML 2.x, e.g., stereotype applications are also included.
+     * <p>
+     * 
+     * @param model
+     *                is the model the root elements belong to.
+     * @return A List of elements as described above.
+     * @throws IllegalArgumentException
+     *                 if model isn't a Model object.
+     */
+    List<Object> getRootElements(Object model);
 
     /**
      * Checks if a child for some ownership relationship (as in a

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2687493

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to