1 package org.andromda.core.simpleuml;
2
3
4 import java.util.Collection;
5 import java.util.Iterator;
6 import java.util.Vector;
7
8 import org.andromda.core.uml14.UMLStaticHelper;
9 import org.omg.uml.foundation.core.Operation;
10 import org.omg.uml.foundation.core.Parameter;
11 import org.omg.uml.foundation.datatypes.ParameterDirectionKindEnum;
12 import org.omg.uml.foundation.datatypes.VisibilityKind;
13 import org.omg.uml.foundation.datatypes.VisibilityKindEnum;
14
15 /***
16 * dynamic proxy for an Operation: dynamically supports the UMLOperation,
17 * and org.omg.uml.foundation.core.Operation interfaces.
18 *
19 *@author <A HREF="http://www.amowers.com">Anthony Mowers</A>
20 */
21 public class POperation extends PModelElement implements UMLOperation
22 {
23 private UMLStaticHelper scriptHelper;
24
25 /***
26 * Description of the Method
27 *
28 *@param operation Description of the Parameter
29 *@param scriptHelper Description of the Parameter
30 *@return Description of the Return Value
31 */
32 public static Operation newInstance(
33 UMLStaticHelper scriptHelper,
34 Operation operation)
35 {
36 Class[] interfaces =
37 new Class[] { UMLOperation.class, Operation.class };
38
39 return (Operation) java.lang.reflect.Proxy.newProxyInstance(
40 operation.getClass().getClassLoader(),
41 interfaces,
42 new POperation(operation, scriptHelper));
43 }
44
45 private POperation(Operation operation, UMLStaticHelper scriptHelper)
46 {
47 super(operation, scriptHelper);
48 }
49
50 public Object getId()
51 {
52 return this.modelElement;
53 }
54
55 public VisibilityKind getVisibility()
56 {
57 VisibilityKind visibility;
58
59 visibility = ((Operation)modelElement).getVisibility();
60 if (VisibilityKindEnum.VK_PRIVATE.equals(visibility))
61 {
62 return JavaVisibilityEnum.PRIVATE;
63 }
64 else if (VisibilityKindEnum.VK_PROTECTED.equals(visibility))
65 {
66 return JavaVisibilityEnum.PROTECTED;
67 }
68 else if (VisibilityKindEnum.VK_PUBLIC.equals(visibility))
69 {
70 return JavaVisibilityEnum.PUBLIC;
71 }
72
73 return JavaVisibilityEnum.PACKAGE;
74 }
75
76 public Collection getParameters()
77 {
78 Collection parms = ((Operation)modelElement).getParameter();
79 Vector ret = new Vector();
80
81 for (Iterator i = parms.iterator(); i.hasNext(); )
82 {
83 Parameter p = (Parameter) i.next();
84 if ( !ParameterDirectionKindEnum.PDK_RETURN.equals(p.getKind()))
85 {
86 ret.add(p);
87 }
88 }
89
90 return ret;
91 }
92
93 public Object getType()
94 {
95 Collection parms = ((Operation)modelElement).getParameter();
96 for (Iterator i = parms.iterator(); i.hasNext(); )
97 {
98 Parameter p = (Parameter) i.next();
99 if ( ParameterDirectionKindEnum.PDK_RETURN.equals(p.getKind()))
100 {
101 return p.getType();
102 }
103 }
104
105 return null;
106 }
107
108 }