Author: mvw
Date: 2007-08-03 07:51:01-0700
New Revision: 13216
Modified:
trunk/src/model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
Log:
Trying to complete these difficult functions.
In preparation of issue 4395.
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=13216&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=13215&r2=13216
==============================================================================
--- 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 07:51:01-0700
@@ -403,6 +403,23 @@
}
+ /*
+ * @see org.argouml.model.CoreHelper#getParent(java.lang.Object)
+ */
+ public Collection<GeneralizableElement> getParent(
+ Object generalizableElement) {
+ if (!(generalizableElement instanceof GeneralizableElement)) {
+ throw new IllegalArgumentException();
+ }
+ Collection<Generalization> gc =
+ ((GeneralizableElement) generalizableElement).getGeneralization();
+ Set<GeneralizableElement> result = new HashSet<GeneralizableElement>();
+ for (Generalization g : gc) {
+ result.add(g.getParent());
+ }
+ return result;
+ }
+
public List getReturnParameters(Object operation) {
List returnParams = new ArrayList();
try {
Modified: trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java?view=diff&rev=13216&p1=trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java&p2=trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java&r1=13215&r2=13216
==============================================================================
--- trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java (original)
+++ trunk/src/model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java 2007-08-03 07:51:01-0700
@@ -41,8 +41,10 @@
import org.argouml.model.InvalidElementException;
import org.argouml.model.ModelManagementHelper;
import org.omg.uml.behavioralelements.collaborations.Collaboration;
+import org.omg.uml.behavioralelements.commonbehavior.Instance;
import org.omg.uml.foundation.core.BehavioralFeature;
import org.omg.uml.foundation.core.Classifier;
+import org.omg.uml.foundation.core.GeneralizableElement;
import org.omg.uml.foundation.core.ModelElement;
import org.omg.uml.foundation.core.Namespace;
import org.omg.uml.foundation.core.Permission;
@@ -562,10 +564,64 @@
throw new IllegalArgumentException("handle: " + handle);
}
+ public Collection<ModelElement> getContents(Object modelelement) {
+ Set<ModelElement> results = new HashSet<ModelElement>();
+ if (modelelement == null) {
+ return results;
+ }
+
+ /*
+ * For a Package: <pre>
+ * [1] The operation contents results in a Set containing
+ * the ModelElements owned by or imported by the Package.
+ * contents : Set(ModelElement)
+ * contents = self.ownedElement->union(self.importedElement)
+ * </pre>
+ * For a Subsystem: <pre>
+ * [2] The operation contents results in a Set containing
+ * the ModelElements owned by or imported by the Subsystem.
+ * contents : Set(ModelElement)
+ * contents = self.ownedElement->union(self.importedElement)
+ * </pre>
+ */
+ if (modelelement instanceof UmlPackage) {
+ Collection<ElementImport> c =
+ ((UmlPackage) modelelement).getElementImport();
+ for (ElementImport ei : c) {
+ results.add(ei.getImportedElement());
+ }
+ }
+
+ /*
+ * For a Namespace: <pre>
+ * [1] The operation contents results in a Set containing
+ * all ModelElements contained by the Namespace.
+ * contents : Set(ModelElement)
+ * contents = self.ownedElement -> union(self.namespace, contents)
+ * </pre>
+ */
+ if (modelelement instanceof Namespace) {
+ results.addAll(((Namespace) modelelement).getOwnedElement());
+ Namespace ns = ((Namespace) modelelement).getNamespace();
+ if (ns != null) {
+ results.addAll(getContents(ns));
+ }
+ }
+
+ /*
+ * For a Instance: <pre>
+ * [5] The operation contents results in a Set containing all
+ * ModelElements contained by the Instance.
+ * contents: Set(ModelElement);
+ * contents = self.ownedInstance->union(self.ownedLink)
+ * </pre>
+ */
+ if (modelelement instanceof Instance) {
+ results.addAll(((Instance) modelelement).getOwnedInstance());
+ results.addAll(((Instance) modelelement).getOwnedLink());
+ }
- public Collection getContents(Object namespace) {
- // TODO: Auto-generated method stub
- return null;
+ return results;
}
@@ -625,8 +681,8 @@
}
- public Collection getAllContents(Object pack) {
- Set results = new HashSet();
+ public Collection<ModelElement> getAllContents(Object pack) {
+ Set<ModelElement> results = new HashSet<ModelElement>();
if (pack == null) {
return results;
}
@@ -643,7 +699,7 @@
* </pre><p>
*/
if (pack instanceof Namespace) {
- results.addAll(((Namespace) pack).getOwnedElement());
+ results.addAll(getContents(pack));
}
/*
@@ -663,30 +719,7 @@
* parent = self.generalization.parent
* </pre><p>
*/
- if (pack instanceof Classifier) {
- // Implementation from CoreHelperMDRImpl.getAllContents();
- try {
- Iterator it = ((Namespace) pack).getOwnedElement().iterator();
- while (it.hasNext()) {
- ModelElement element = (ModelElement) it.next();
- if (element.getVisibility()
- .equals(VisibilityKindEnum.VK_PUBLIC)
- || element.getVisibility().equals(
- VisibilityKindEnum.VK_PROTECTED)) {
- results.add(element);
- }
- }
- it = modelImpl.getFacade().getGeneralizations(pack).iterator();
- while (it.hasNext()) {
- results.addAll(getAllContents(it.next()));
- }
- } catch (InvalidObjectException e) {
- throw new InvalidElementException(e);
- }
-
- }
-
/*
* For a Package:
* <pre>
@@ -714,12 +747,25 @@
* re.elementImport.visibility = #protected))
* </pre>
*/
- if (pack instanceof Package) {
- // TODO: Not implemented
- throw new RuntimeException("Not implement - getAllContents for: "
- + pack);
+
+ if (pack instanceof Classifier || pack instanceof Package) {
+ Collection<GeneralizableElement> ges =
+ modelImpl.getCoreHelper().getParent(pack);
+ Collection<ModelElement> allContents = new HashSet<ModelElement>();
+ for (GeneralizableElement ge : ges) {
+ allContents.addAll(getAllContents(ge));
+ }
+ for (ModelElement element : allContents) {
+ if (element.getVisibility()
+ .equals(VisibilityKindEnum.VK_PUBLIC)
+ || element.getVisibility().equals(
+ VisibilityKindEnum.VK_PROTECTED)) {
+ results.add(element);
+ }
+ }
}
+
/*
* For a Collaboration:
* <pre>
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.