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 java.util.List; 9 10 /** 11 * A Classifier is a classification of instances - it describes a set of instances that have 12 * features in common. Can specify a generalization hierarchy by referencing its general 13 * classifiers. It may be a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, 14 * etc. Can specify a generalization hierarchy by referencing its general classifiers. Has the 15 * capability to own collaboration uses. These collaboration uses link a collaboration with the 16 * classifier to give a description of the workings of the classifier. Classifier is defined to be a 17 * kind of templateable element so that a classifier can be parameterized. It is also defined to be 18 * a kind of parameterable element so that a classifier can be a formal template parameter. 19 * 20 * Metafacade interface to be used by AndroMDA cartridges. 21 */ 22 public interface ClassifierFacade 23 extends GeneralizableElementFacade 24 { 25 /** 26 * Indicates the metafacade type (used for metafacade mappings). 27 * 28 * @return boolean always <code>true</code> 29 */ 30 public boolean isClassifierFacadeMetaType(); 31 32 /** 33 * Return the attribute which name matches the parameter 34 * @param name String 35 * @return AttributeFacade 36 */ 37 public AttributeFacade findAttribute(String name); 38 39 /** 40 * Those abstraction dependencies for which this classifier is the client. 41 * @return Collection<ClassifierFacade> 42 */ 43 public Collection<ClassifierFacade> getAbstractions(); 44 45 /** 46 * Lists all classes associated to this one and any ancestor classes (through generalization). 47 * There will be no duplicates. The order of the elements is predictable. 48 * @return Collection<ClassifierFacade> 49 */ 50 public Collection<ClassifierFacade> getAllAssociatedClasses(); 51 52 /** 53 * A collection containing all 'properties' of the classifier and its ancestors. Properties are 54 * any attributes and navigable connecting association ends. 55 * @return Collection<ModelElementFacade> 56 */ 57 public Collection<ModelElementFacade> getAllProperties(); 58 59 /** 60 * A collection containing all required and/or read-only 'properties' of the classifier and its 61 * ancestors. Properties are any attributes and navigable connecting association ends. 62 * @return Collection<ModelElementFacade> 63 */ 64 public Collection<ModelElementFacade> getAllRequiredConstructorParameters(); 65 66 /** 67 * Gets the array type for this classifier. If this classifier already represents an array, it 68 * just returns itself. 69 * @return ClassifierFacade 70 */ 71 public ClassifierFacade getArray(); 72 73 /** 74 * The name of the classifier as an array. 75 * @return String 76 */ 77 public String getArrayName(); 78 79 /** 80 * Lists the classes associated to this one, there is no repitition of classes. The order of the 81 * elements is predictable. 82 * @return Collection<ClassifierFacade> 83 */ 84 public Collection<ClassifierFacade> getAssociatedClasses(); 85 86 /** 87 * Gets the association ends belonging to a classifier. 88 * @return List<AssociationEndFacade> 89 */ 90 public List<AssociationEndFacade> getAssociationEnds(); 91 92 /** 93 * Gets the attributes that belong to the classifier. 94 * @return List<AttributeFacade> 95 */ 96 public List<AttributeFacade> getAttributes(); 97 98 /** 99 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 100 * hierarchy and gets the attributes from the super classes as well. 101 * @param follow boolean 102 * @return List<AttributeFacade> 103 */ 104 public List<AttributeFacade> getAttributes(boolean follow); 105 106 /** 107 * The fully qualified name of the classifier as an array. 108 * @return String 109 */ 110 public String getFullyQualifiedArrayName(); 111 112 /** 113 * Returns all those operations that could be implemented at this classifier's level. This means 114 * the operations owned by this classifier as well as any realized interface's operations 115 * (recursively) in case this classifier itself is not already an interface, or generalized when 116 * this classifier is an interface. 117 * @return Collection<OperationFacade> 118 */ 119 public Collection<OperationFacade> getImplementationOperations(); 120 121 /** 122 * A comma separated list of the fully qualified names of all implemented interfaces. 123 * @return String 124 */ 125 public String getImplementedInterfaceList(); 126 127 /** 128 * Those attributes that are scoped to an instance of this class. 129 * @return Collection<AttributeFacade> 130 */ 131 public Collection<AttributeFacade> getInstanceAttributes(); 132 133 /** 134 * Those operations that are scoped to an instance of this class. 135 * @return List<OperationFacade> 136 */ 137 public List<OperationFacade> getInstanceOperations(); 138 139 /** 140 * Those interfaces that are abstractions of this classifier, this basically means this 141 * classifier realizes them. 142 * @return Collection<ClassifierFacade> 143 */ 144 public Collection<ClassifierFacade> getInterfaceAbstractions(); 145 146 /** 147 * A String representing a new Constructor declaration for this classifier type to be used in a 148 * Java environment. 149 * @return String 150 */ 151 public String getJavaNewString(); 152 153 /** 154 * A String representing the null-value for this classifier type to be used in a Java 155 * environment. 156 * @return String 157 */ 158 public String getJavaNullString(); 159 160 /** 161 * The other ends of this classifier's association ends which are navigable. 162 * @return Collection<AssociationEndFacade> 163 */ 164 public Collection<AssociationEndFacade> getNavigableConnectingEnds(); 165 166 /** 167 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 168 * is true goes up the inheritance hierarchy and gets the super association ends as well. 169 * @param follow boolean 170 * @return List<AssociationEndFacade> 171 */ 172 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow); 173 174 /** 175 * Assuming that the classifier is an array, this will return the non array type of the 176 * classifier from 177 * the model. If the classifier is NOT an array, it will just return itself. 178 * @return ClassifierFacade 179 */ 180 public ClassifierFacade getNonArray(); 181 182 /** 183 * The attributes from this classifier in the form of an operation call (this example would be 184 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the 185 * classifier, the result would be an empty '()'. 186 * @return String 187 */ 188 public String getOperationCallFromAttributes(); 189 190 /** 191 * The operations owned by this classifier. 192 * @return List<OperationFacade> 193 */ 194 public List<OperationFacade> getOperations(); 195 196 /** 197 * A collection containing all 'properties' of the classifier. Properties are any attributes 198 * and navigable connecting association ends. 199 * @return List<ModelElementFacade> 200 */ 201 public List<ModelElementFacade> getProperties(); 202 203 /** 204 * Gets all properties (attributes and navigable association ends) for the classifier and if 205 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 206 * classes as well. 207 * @param follow boolean 208 * @return List 209 */ 210 public List getProperties(boolean follow); 211 212 /** 213 * A collection containing all required and/or read-only 'properties' of the classifier. 214 * Properties are any attributes and navigable connecting association ends. 215 * @return Collection<ModelElementFacade> 216 */ 217 public Collection<ModelElementFacade> getRequiredConstructorParameters(); 218 219 /** 220 * Returns the serial version UID of the underlying model element. 221 * @return long 222 */ 223 public long getSerialVersionUID(); 224 225 /** 226 * Those attributes that are scoped to the definition of this class. 227 * @return Collection<AttributeFacade> 228 */ 229 public Collection<AttributeFacade> getStaticAttributes(); 230 231 /** 232 * Those operations that are scoped to the definition of this class. 233 * @return List<OperationFacade> 234 */ 235 public List<OperationFacade> getStaticOperations(); 236 237 /** 238 * This class' superclass, returns the generalization if it is a ClassifierFacade, null 239 * otherwise. 240 * @return ClassifierFacade 241 */ 242 public ClassifierFacade getSuperClass(); 243 244 /** 245 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long' 246 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will 247 * return a null. Note that wrapper mappings must be defined for the namespace by defining the 248 * 'wrapperMappingsUri', this property must point to the location of the mappings file which 249 * maps the primitives to wrapper types. 250 * @return String 251 */ 252 public String getWrapperName(); 253 254 /** 255 * Indicates if this classifier is 'abstract'. 256 * @return boolean 257 */ 258 public boolean isAbstract(); 259 260 /** 261 * True if this classifier represents an array type. False otherwise. 262 * @return boolean 263 */ 264 public boolean isArrayType(); 265 266 /** 267 * True if the ClassifierFacade is an AssociationClass. 268 * @return boolean 269 */ 270 public boolean isAssociationClass(); 271 272 /** 273 * Returns true if this type represents a Blob type. 274 * @return boolean 275 */ 276 public boolean isBlobType(); 277 278 /** 279 * Indicates if this type represents a boolean type or not. 280 * @return boolean 281 */ 282 public boolean isBooleanType(); 283 284 /** 285 * Indicates if this type represents a char, Character, or java.lang.Character type or not. 286 * @return boolean 287 */ 288 public boolean isCharacterType(); 289 290 /** 291 * Returns true if this type represents a Clob type. 292 * @return boolean 293 */ 294 public boolean isClobType(); 295 296 /** 297 * True if this classifier represents a collection type. False otherwise. 298 * @return boolean 299 */ 300 public boolean isCollectionType(); 301 302 /** 303 * True/false depending on whether or not this classifier represents a datatype. A data type is 304 * a type whose instances are identified only by their value. A data type may contain attributes 305 * to support the modeling of structured data types. 306 * @return boolean 307 */ 308 public boolean isDataType(); 309 310 /** 311 * True when this classifier is a date type. 312 * @return boolean 313 */ 314 public boolean isDateType(); 315 316 /** 317 * Indicates if this type represents a Double type or not. 318 * @return boolean 319 */ 320 public boolean isDoubleType(); 321 322 /** 323 * Indicates whether or not this classifier represents an "EmbeddedValue'. 324 * @return boolean 325 */ 326 public boolean isEmbeddedValue(); 327 328 /** 329 * True if this classifier is in fact marked as an enumeration. 330 * @return boolean 331 */ 332 public boolean isEnumeration(); 333 334 /** 335 * Returns true if this type represents a 'file' type. 336 * @return boolean 337 */ 338 public boolean isFileType(); 339 340 /** 341 * Indicates if this type represents a Float type or not. 342 * @return boolean 343 */ 344 public boolean isFloatType(); 345 346 /** 347 * Indicates if this type represents an int or Integer or java.lang.Integer type or not. 348 * @return boolean 349 */ 350 public boolean isIntegerType(); 351 352 /** 353 * True/false depending on whether or not this Classifier represents an interface. 354 * @return boolean 355 */ 356 public boolean isInterface(); 357 358 /** 359 * True if this classifier cannot be extended and represent a leaf in the inheritance tree. 360 * @return boolean 361 */ 362 public boolean isLeaf(); 363 364 /** 365 * True if this classifier represents a list type. False otherwise. 366 * @return boolean 367 */ 368 public boolean isListType(); 369 370 /** 371 * Indicates if this type represents a Long type or not. 372 * @return boolean 373 */ 374 public boolean isLongType(); 375 376 /** 377 * Indicates whether or not this classifier represents a Map type. 378 * @return boolean 379 */ 380 public boolean isMapType(); 381 382 /** 383 * Indicates whether or not this classifier represents a primitive type. 384 * @return boolean 385 */ 386 public boolean isPrimitive(); 387 388 /** 389 * True if this classifier represents a set type. False otherwise. 390 * @return boolean 391 */ 392 public boolean isSetType(); 393 394 /** 395 * Indicates whether or not this classifier represents a string type. 396 * @return boolean 397 */ 398 public boolean isStringType(); 399 400 /** 401 * Indicates whether or not this classifier represents a time type. 402 * @return boolean 403 */ 404 public boolean isTimeType(); 405 406 /** 407 * Returns true if this type is a wrapped primitive type. 408 * @return boolean 409 */ 410 public boolean isWrappedPrimitive(); 411 }