1 // license-header java merge-point
2 //
3 // Attention: generated code (by Metafacade.vsl) - do not modify!
4 //
5 package org.andromda.metafacades.uml;
6
7 import java.util.Collection;
8 import org.andromda.core.metafacade.ModelValidationMessage;
9
10 /**
11 * Represents a UML template parameter. Exposes a parameterable element as a formal template
12 * parameter of a template. Only UML2 TemplateParameter inherits from ModelElement, so the UML14
13 * implementation cannot extend ModelElement. UML14 TemplateParameter.parameter inherits from
14 * Parameter.
15 *
16 * Metafacade interface to be used by AndroMDA cartridges.
17 */
18 public interface TemplateParameterFacade
19 {
20 /**
21 * Indicates the metafacade type (used for metafacade mappings).
22 *
23 * @return boolean always <code>true</code>
24 */
25 public boolean isTemplateParameterFacadeMetaType();
26
27 /**
28 * Provides any required initialization of the metafacade.
29 */
30 void initialize();
31
32 /**
33 * Gets the metafacade that acts as the <code>owner</code> of this metafacade.
34 * (for example: an operation is an owner of its parameters, etc). This is used
35 * by AndroMDA's validation framework to provide more context as to where the
36 * error has occurred.
37 * @return Object the Validation Owner
38 */
39 public Object getValidationOwner();
40
41 /**
42 * Gets the name of the metafacade used within validation messages. This provides
43 * the full name of the metafacade.
44 * @return String the Validation Name
45 */
46 public String getValidationName();
47
48 /**
49 * Performs validation of any invariants found on this model element
50 * and stores the messages within the <code>validationMessages</code>
51 * collection.
52 *
53 * @param validationMessages the collection of messages to which additional
54 * validation messages will be added if invariants are broken.
55 */
56 void validateInvariants(Collection<ModelValidationMessage> validationMessages);
57
58 /**
59 * UML2 only: Returns the list of classifiers (Classes) which constrain the parameter type.
60 * Results in <? extends ConstrainingClassifier> declaration.
61 * @return Collection<ClassifierFacade>
62 */
63 public Collection<ClassifierFacade> getConstrainingClassifiers();
64
65 /**
66 * Return the default element for the template parameter
67 * @return ModelElementFacade
68 */
69 public ModelElementFacade getDefaultElement();
70
71 /**
72 * Gets the documentation for the model element, The indent argument is prefixed to each line.
73 * By default this method wraps lines after 64 characters.
74 * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
75 * @param indent String
76 * @return String
77 */
78 public String getDocumentation(String indent);
79
80 /**
81 * This method returns the documentation for this model element, with the lines wrapped after
82 * the specified number of characters, values of less than 1 will indicate no line wrapping is
83 * required. By default paragraphs are returned as HTML.
84 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
85 * @param indent String
86 * @param lineLength int
87 * @return String
88 */
89 public String getDocumentation(String indent, int lineLength);
90
91 /**
92 * TODO: Model Documentation for
93 * org.andromda.metafacades.uml.TemplateParameterFacade.getDocumentation
94 * @param indent String
95 * @param lineLength int
96 * @param htmlStyle boolean
97 * @return String
98 */
99 public String getDocumentation(String indent, int lineLength, boolean htmlStyle);
100
101 /**
102 * Return the fully qualified name of the template parameter: package + class + parameter name
103 * @return String
104 */
105 public String getFullyQualifiedName();
106
107 /**
108 * get + capitalized parameter name
109 * @return String
110 */
111 public String getGetterName();
112
113 /**
114 * The type of the template parameter.
115 * @return String
116 */
117 public String getGetterSetterTypeName();
118
119 /**
120 * TODO: Model Documentation for org.andromda.metafacades.uml.TemplateParameterFacade.name
121 * @return String
122 */
123 public String getName();
124
125 /**
126 * The ModelElement that owns this parameter. For UML14, the classifier package. For UML2, the
127 * Classifier.
128 * @return ModelElementFacade
129 */
130 public ModelElementFacade getOwner();
131
132 /**
133 * Returns the parameter value for the template parameter. In andromda, parameter and template
134 * parameter functionality are combined for simplicity.
135 * @return ModelElementFacade
136 */
137 public ModelElementFacade getParameter();
138
139 /**
140 * set + capitalized parameter name
141 * @return String
142 */
143 public String getSetterName();
144
145 /**
146 * TemplateParameter may be of type Classifier, PackageableElement,
147 * Operation or Property. Generally a Class parameter has a name and a type of Classifier.
148 * @return ClassifierFacade
149 */
150 public ClassifierFacade getType();
151 }