svn commit: r13225 - trunk/src/model-mdr/src/org/argouml/model/mdr

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2007-08-03 13:04:49-0700
New Revision: 13225

Modified:
   trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
   trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
   trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
   trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java

Log:
Add methods for UML 2.x PackageImport.  Deprecate UML 1.x Permission methods.

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&rev=13225&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&r1=13224&r2=13225
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	2007-08-03 13:04:49-0700
@@ -92,6 +92,7 @@
 import org.omg.uml.foundation.datatypes.VisibilityKind;
 import org.omg.uml.foundation.datatypes.VisibilityKindEnum;
 import org.omg.uml.modelmanagement.Model;
+import org.omg.uml.modelmanagement.UmlPackage;
 
 /**
  * Factory to create UML classes for the UML Foundation::Core package.
@@ -343,7 +344,7 @@
     }
 
 
-    public Object createPermission() {
+    public Permission createPermission() {
         Permission myPermission = corePackage
                 .getPermission().createPermission();
         super.initialize(myPermission);
@@ -903,10 +904,7 @@
         return cl;
     }
 
-    /*
-     * @see org.argouml.model.CoreFactory#buildDataType(java.lang.String,
-     *      java.lang.Object)
-     */
+
     public Object buildDataType(String name, Object owner) {
         DataType dt = (DataType) createDataType();
         dt.setName(name);
@@ -916,9 +914,7 @@
         return dt;
     }
 
-    /*
-     * @see org.argouml.model.CoreFactory#buildEnumeration(java.lang.String, java.lang.Object)
-     */
+
     public Object buildEnumeration(String name, Object owner) {
         Enumeration e = (Enumeration) createEnumeration();
         e.setName(name);
@@ -928,10 +924,7 @@
         return e;
     }
 
-    /*
-     * @see org.argouml.model.CoreFactory#buildDependency(java.lang.Object,
-     *      java.lang.Object)
-     */
+
     public Object buildDependency(Object clientObj, Object supplierObj) {
 
         ModelElement client = (ModelElement) clientObj;
@@ -943,48 +936,69 @@
         Dependency dep = (Dependency) createDependency();
         dep.getSupplier().add(supplier);
         dep.getClient().add(client);
-        if (supplier.getNamespace() != null) {
-            dep.setNamespace(supplier.getNamespace());
+        if (client instanceof Namespace) {
+            dep.setNamespace((Namespace) client);
         } else if (client.getNamespace() != null) {
             dep.setNamespace(client.getNamespace());
         }
         return dep;
     }
 
-    /*
-     * @see org.argouml.model.CoreFactory#buildPermission(java.lang.Object,
-     *      java.lang.Object)
-     */
-    public Object buildPermission(Object clientObj, Object supplierObj) {
-
-        ModelElement client = (ModelElement) clientObj;
-        ModelElement supplier = (ModelElement) supplierObj;
-        // TODO: Supplier must be a namespace per UML 1.4 spec - tfm
-        if (client == null || supplier == null || client.getNamespace() == null
-                || supplier.getNamespace() == null) {
-            throw new IllegalArgumentException("client or supplier is null "
-                    + "or their namespaces.");
+    
+    @SuppressWarnings("deprecation")
+    public Permission buildPermission(Object client, Object supplier) {
+        return buildPackageImport(client, supplier);
+    }
+    
+    
+    public Permission buildPackageImport(Object client, Object supplier) {
+        if (!(client instanceof Namespace) 
+                || !(supplier instanceof UmlPackage)) {
+            throw new IllegalArgumentException("client is not a Namespace" +
+            		" or supplier is not a Namespace");
         }
-        Permission per = (Permission) createPermission();
-        per.getSupplier().add(supplier);
-        per.getClient().add(client);
-        if (supplier.getNamespace() != null) {
-            per.setNamespace(supplier.getNamespace());
+        Permission per = buildPermissionInternal((ModelElement) client, 
+                (UmlPackage) supplier);
+
+        // TODO: This should fetch the stereotype from our profile
+        modelImpl.getExtensionMechanismsFactory().buildStereotype(per, 
+                ModelManagementHelper.IMPORT_STEREOTYPE,
+                per.getNamespace());
+        return per;
+    }
+
+    
+    private Permission buildPermissionInternal(ModelElement client, 
+            UmlPackage supplier) {
+        Permission permission = (Permission) createPermission();
+        permission.getSupplier().add(supplier);
+        permission.getClient().add(client);
+        if (client instanceof Namespace) {
+            permission.setNamespace((Namespace) client);
         } else if (client.getNamespace() != null) {
-            per.setNamespace(client.getNamespace());
+            permission.setNamespace(client.getNamespace());
         }
-        // TODO: In addition to "import," a Permission can also take "friend"
-        // and "access" stereotypes, each with its own semantics
+        return permission;
+    }
+    
+    
+    public Permission buildPackageAccess(Object client, Object supplier) {
+        if (!(client instanceof Namespace) 
+                || !(supplier instanceof UmlPackage)) {
+            throw new IllegalArgumentException("client or " +
+                        "supplier is not a Namespace");
+        }
+        Permission per = buildPermissionInternal((ModelElement) client, 
+                (UmlPackage) supplier);
+
+        // TODO: This should fetch the stereotype from our profile
         modelImpl.getExtensionMechanismsFactory().buildStereotype(per, 
-                ModelManagementHelper.IMPORT_STEREOTYPE,
+                ModelManagementHelper.ACCESS_STEREOTYPE,
                 per.getNamespace());
         return per;
     }
 
-    /*
-     * @see org.argouml.model.CoreFactory#buildGeneralization(java.lang.Object,
-     *      java.lang.Object, java.lang.String)
-     */
+
     public Object buildGeneralization(Object child, Object parent, 
             String name) {
         if (child == null || parent == null

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java?view=diff&rev=13225&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java&r1=13224&r2=13225
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java	2007-08-03 13:04:49-0700
@@ -41,6 +41,7 @@
 import org.argouml.model.CoreHelper;
 import org.argouml.model.InvalidElementException;
 import org.argouml.model.Model;
+import org.argouml.model.ModelManagementHelper;
 import org.argouml.model.NotImplementedException;
 import org.omg.uml.behavioralelements.activitygraphs.ActivityGraph;
 import org.omg.uml.behavioralelements.activitygraphs.ClassifierInState;
@@ -104,6 +105,7 @@
 import org.omg.uml.foundation.core.Node;
 import org.omg.uml.foundation.core.Operation;
 import org.omg.uml.foundation.core.Parameter;
+import org.omg.uml.foundation.core.Permission;
 import org.omg.uml.foundation.core.Relationship;
 import org.omg.uml.foundation.core.Stereotype;
 import org.omg.uml.foundation.core.StructuralFeature;
@@ -1169,17 +1171,18 @@
     }
 
 
-    public Collection getDependencies(Object supplierObj, Object clientObj) {
+    public Collection<Dependency> getDependencies(Object supplierObj,
+            Object clientObj) {
 
         if (!(supplierObj instanceof ModelElement)
                 || !(clientObj instanceof ModelElement)) {
-            throw new IllegalArgumentException("null argument");
+            throw new IllegalArgumentException("invalid argument(s)");
         }
 
         ModelElement supplier = (ModelElement) supplierObj;
         ModelElement client = (ModelElement) clientObj;
 
-        List ret = new ArrayList();
+        List<Dependency> ret = new ArrayList<Dependency>();
         try {
             Collection clientDependencies = client.getClientDependency();
             Iterator it =
@@ -1196,6 +1199,39 @@
         return ret;
     }
 
+    public Collection<Permission> getPackageImports(Object client) {
+        if (!(client instanceof Namespace)) {
+            throw new IllegalArgumentException("invalid argument");
+        }
+        List<Permission> result = new ArrayList<Permission>();
+        try {
+            for (Dependency dependency : (Collection<Dependency>) ((ModelElement) client)
+                    .getClientDependency()) {
+                if (dependency instanceof Permission
+                        && Model.getExtensionMechanismsHelper().hasStereoType(
+                                dependency,
+                                ModelManagementHelper.IMPORT_STEREOTYPE)) {
+                    result.add((Permission) dependency);
+                }
+            }
+        } catch (InvalidObjectException e) {
+            throw new InvalidElementException(e);
+        }
+        return result;
+    }
+    
+    public Permission getPackageImport(Object supplier, Object client) {
+        for (Dependency dependency : getDependencies(supplier, client)) {
+            if (dependency instanceof Permission
+                    && Model.getExtensionMechanismsHelper()
+                            .hasStereoType(dependency,
+                                    ModelManagementHelper.IMPORT_STEREOTYPE)) {
+                return (Permission) dependency;
+            }
+        }
+        return null;
+    }
+
 
     public Collection getRelationships(Object source, Object dest) {
         Set ret = new HashSet();

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&rev=13225&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&r1=13224&r2=13225
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java	2007-08-03 13:04:49-0700
@@ -605,10 +605,15 @@
         return handle instanceof Partition;
     }
 
+    @SuppressWarnings("deprecation")
     public boolean isAPermission(Object handle) {
         return handle instanceof Permission;
     }
 
+    public boolean isAPackageImport(Object handle) {
+        return handle instanceof Permission;
+    }
+    
     public boolean isAPackage(Object handle) {
         return handle instanceof UmlPackage;
     }

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java?view=diff&rev=13225&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java&r1=13224&r2=13225
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java	2007-08-03 13:04:49-0700
@@ -378,10 +378,15 @@
         return Partition.class;
     }
 
+    @SuppressWarnings("deprecation")
     public Object getPermission() {
         return Permission.class;
     }
 
+    public Object getPackageImport() {
+        return Permission.class;
+    }
+    
     public Object getPseudostate() {
         return Pseudostate.class;
     }

Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&rev=13225&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&r1=13224&r2=13225
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	(original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	2007-08-03 13:04:49-0700
@@ -335,8 +335,8 @@
                     fromStyle, toElement, toStyle, (Boolean) unidirectional);
         } else if (elementType == metaTypes.getGeneralization()) {
             connection = getCore().buildGeneralization(fromElement, toElement);
-        } else if (elementType == metaTypes.getPermission()) {
-            connection = getCore().buildPermission(fromElement, toElement);
+        } else if (elementType == metaTypes.getPackageImport()) {
+            connection = getCore().buildPackageImport(fromElement, toElement);
         } else if (elementType == metaTypes.getUsage()) {
             connection = getCore().buildUsage(fromElement, toElement);
         } else if (elementType == metaTypes.getGeneralization()) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.