1 package org.andromda.core.simpleuml;
2
3 import java.util.Collection;
4 import java.util.Iterator;
5 import java.util.Vector;
6
7 import org.andromda.core.uml14.UMLStaticHelper;
8 import org.omg.uml.foundation.core.Attribute;
9 import org.omg.uml.foundation.core.Classifier;
10 import org.omg.uml.foundation.core.Dependency;
11 import org.omg.uml.foundation.core.Operation;
12
13
14 /***
15 * dynamic proxy for a Classifier: dynamically supports the UMLClassifier,
16 * and org.omg.uml.foundation.core.Classifier interfaces.
17 *
18 *@author <A HREF="http://www.amowers.com">Anthony Mowers</A>
19 */
20 public class PClassifier
21 extends PModelElement
22 implements UMLClassifier
23 {
24 /***
25 * Description of the Method
26 *
27 *@param classifier Description of the Parameter
28 *@param scriptHelper Description of the Parameter
29 *@return Description of the Return Value
30 */
31 public static Classifier newInstance(
32 UMLStaticHelper scriptHelper,
33 Classifier classifier)
34 {
35 Class[] interfaces = {
36 UMLClassifier.class,
37 Classifier.class
38 };
39
40 return (Classifier)java.lang.reflect.Proxy.newProxyInstance(
41 classifier.getClass().getClassLoader(),
42 interfaces,
43 new PClassifier(classifier, scriptHelper));
44 }
45
46
47
48 protected PClassifier(
49 Classifier classifier,
50 UMLStaticHelper scriptHelper)
51 {
52 super(classifier,scriptHelper);
53 }
54
55
56
57 /***
58 * Gets the attributes attribute of the ClassifierProxy object
59 *
60 *@return The attributes value
61 */
62 public Collection getAttributes()
63 {
64 Collection attributes = scriptHelper.getAttributes(modelElement);
65 Collection attributeProxies = new Vector();
66
67 for (Iterator i = attributes.iterator(); i.hasNext(); )
68 {
69 attributeProxies.add(
70 PAttribute.newInstance(scriptHelper,(Attribute)i.next())
71 );
72 }
73
74 return attributeProxies;
75 }
76
77
78 /***
79 * Gets the dependencies attribute of the ClassifierProxy object
80 *
81 *@return The dependencies value
82 */
83 public Collection getDependencies()
84 {
85 Collection dependencies = scriptHelper.getDependencies(modelElement);
86 Collection dependencyProxies = new Vector();
87
88 for (Iterator i = dependencies.iterator(); i.hasNext(); )
89 {
90 dependencyProxies.add(
91 PDependency.newInstance(scriptHelper,(Dependency)i.next())
92 );
93 }
94
95 return dependencyProxies;
96 }
97
98
99 /***
100 * Gets the associationLinks attribute of the ClassifierProxy object
101 *
102 *@return The associationLinks value
103 */
104 public Collection getAssociationLinks()
105 {
106 return scriptHelper.getAssociationEnds(modelElement);
107 }
108
109
110 /***
111 * Gets the package attribute of the ClassifierProxy object
112 *
113 *@return The package value
114 */
115 public Object getPackage()
116 {
117 return this.modelElement;
118 }
119
120 public Collection getOperations()
121 {
122 Collection operations = scriptHelper.getOperations(modelElement);
123 Collection operationProxies = new Vector();
124
125
126 for (Iterator i = operations.iterator(); i.hasNext(); )
127 {
128 Object proxy =
129 POperation.newInstance(
130 scriptHelper,
131 (Operation) (i.next() )
132 );
133
134 operationProxies.add(proxy);
135
136 }
137
138
139 return operationProxies;
140 }
141
142 }
143