1 // license-header java merge-point
2 //
3 // Attention: generated code (by Metafacade.vsl) - do not modify!
4 //
5 package org.andromda.cartridges.ejb3.metafacades;
6
7 import java.util.Collection;
8 import java.util.List;
9 import org.andromda.metafacades.uml.AttributeFacade;
10 import org.andromda.metafacades.uml.DependencyFacade;
11 import org.andromda.metafacades.uml.Entity;
12 import org.andromda.metafacades.uml.ModelElementFacade;
13 import org.andromda.metafacades.uml.Role;
14
15 /**
16 * Represents an entity EJB.
17 *
18 * Metafacade interface to be used by AndroMDA cartridges.
19 */
20 public interface EJB3EntityFacade
21 extends Entity
22 {
23 /**
24 * Indicates the metafacade type (used for metafacade mappings).
25 *
26 * @return boolean always <code>true</code>
27 */
28 public boolean isEJB3EntityFacadeMetaType();
29
30 /**
31 * Find all associations that define relations to other entities.
32 * This method returns the source association ends for all associations that define
33 * a container managed relation. The returned collection includes both
34 * direct relations and inherited relations. A direct relation is an association with some other
35 * class matching the following criteria: 1) The class at the other side of the association is
36 * stereotyped <<Entity>> 2) The association is navigable from to the other side.
37 * An inherited relation is an association from an abstract super type matching the following
38 * criteria: 1) The inheritance path to this abstract super type, including this super type
39 * itself, consists only of abstract classes with stereotype <<Entity>> 2) The class at the
40 * other side of the association is stereotyped <<Entity>>. 3) The association is navigable from
41 * this abstract super type to the other side.
42 * Relations must match the following integrity constraint:
43 * - The <<Entity>> at the target end is not abstract.
44 * The integrity constraint is necessary because the target of a container managed relation in
45 * the EJB framework must be a concrete entity bean; there is no such thing as an
46 * "abstract entity bean" in the EJB specification. It is possible, however, to generate and
47 * compile code for this case, an error will only show up at deploy time. In order to catch
48 * this kind of error at the earliest possible stage, this method checks the integrity
49 * constraint and throws an exception if it is violated.
50 * @return Collection
51 */
52 public Collection getAllEntityRelations();
53
54 /**
55 * All instanceAttributes for this entity. The list includes the instanceAttributes that are
56 * inherited from super classes. The list contains the inherited instanceAttributes first,
57 * followed by the instanceAttributes defined in this class.
58 * @return List
59 */
60 public List getAllInstanceAttributes();
61
62 /**
63 * Returns all value object references (this includes all those that are inherited from any
64 * parent entities)
65 * @return Collection<DependencyFacade>
66 */
67 public Collection<DependencyFacade> getAllValueObjectReferences();
68
69 /**
70 * Create a comma separated list of attributes. This method can be used to generate argument
71 * lists for constructors, method calls etc. It will not return attributes tagged to be
72 * optimistic lock values. It will consider LOB attributes where the LOB type has been
73 * overridden using the @androma.persistence.lob.type tagged value.
74 * @param attributes Collection
75 * @param includeTypes boolean
76 * @param includeNames boolean
77 * @param includeAutoIdentifiers boolean
78 * @return String
79 */
80 public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames, boolean includeAutoIdentifiers);
81
82 /**
83 * Provides the cache policy for the entity.
84 * Posible values are NONE, READ_WRITE, NONSTRICT_READ_WRITE, READ_ONLY, TRANSACTIONAL.
85 * @return String
86 */
87 public String getCacheType();
88
89 /**
90 * Gets all constants for this entity. Constants are defined as static read-only attributes
91 * which do NOT have the <<EnvEntry>> stereotype. If 'follow' is true, then the inheritance
92 * hierarchy will be followed and we'll retrieve all constants from any super types as well.
93 * @param follow boolean
94 * @return Collection
95 */
96 public Collection getConstants(boolean follow);
97
98 /**
99 * Gets create methods for the entity. If 'follow'l is set to true, create methods from any
100 * super types will also be retrieved by following up the inheritance chain.
101 * @param follow boolean
102 * @return Collection
103 */
104 public Collection getCreateMethods(boolean follow);
105
106 /**
107 * The DAO base class name. This is the abstract DAO that containsCRUD operations as well as
108 * any generated finders defined on an entity.
109 * @return String
110 */
111 public String getDaoBaseName();
112
113 /**
114 * The business operations modeled on the entity that will be generated on the DAO (Data Access
115 * Object).
116 * @return Collection<EJB3OperationFacade>
117 */
118 public Collection<EJB3OperationFacade> getDaoBusinessOperations();
119
120 /**
121 * Returns the default DAO exception name.
122 * @return String
123 */
124 public String getDaoDefaultExceptionName();
125
126 /**
127 * The DAO implementation class name.
128 * @return String
129 */
130 public String getDaoImplementationName();
131
132 /**
133 * The name of the DAO for the specified entity.
134 * @return String
135 */
136 public String getDaoName();
137
138 /**
139 * The constant name denoting no transformation is to be applied.
140 * @return String
141 */
142 public String getDaoNoTransformationConstantName();
143
144 /**
145 * Returns the default entity cascadable property attribute looked up in the namespace
146 * descriptor.
147 * @return String
148 */
149 public String getDefaultCascadeType();
150
151 /**
152 * Returns the default persistence context unit name for the injected EntityManger for the
153 * DAO/Manageable service beans. It is derived from the persistenceContextUnitName namespace
154 * property.
155 * @return String
156 */
157 public String getDefaultPersistenceContextUnitName();
158
159 /**
160 * The name of the discriminator column. Default is TYPE if this is missing.
161 * @return String
162 */
163 public String getDiscriminatorColumn();
164
165 /**
166 * The SQL used when generating the DDL for the discriminator column.
167 * @return String
168 */
169 public String getDiscriminatorColumnDefinition();
170
171 /**
172 * The standard length of a discriminator value. Default is 10.
173 * @return int
174 */
175 public int getDiscriminatorLength();
176
177 /**
178 * The type of the entity discriminator column. Default is STRING.
179 * @return String
180 */
181 public String getDiscriminatorType();
182
183 /**
184 * The value indicating the row in an entity of the annotated entity type.
185 * @return String
186 */
187 public String getDiscriminatorValue();
188
189 /**
190 * Entity composite primary key class name for this entity.
191 * @return String
192 */
193 public String getEntityCompositePrimaryKeyName();
194
195 /**
196 * Entity embeddable super class name this entity inherits from.
197 * @return String
198 */
199 public String getEntityEmbeddableName();
200
201 /**
202 * The name of the implementation class.
203 * @return String
204 */
205 public String getEntityImplementationName();
206
207 /**
208 * Entity listener class name for callback methods.
209 * @return String
210 */
211 public String getEntityListenerName();
212
213 /**
214 * The named used for the EJB3 entity.
215 * @return String
216 */
217 public String getEntityName();
218
219 /**
220 * Entity classes that are association relationships from this entity.
221 * @return Collection
222 */
223 public Collection getEntityRelations();
224
225 /**
226 * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
227 * attributes on the entity and stereotyped as <<EnvEntry>>. If 'follow' is true, then the
228 * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
229 * types as well.
230 * @param follow boolean
231 * @return Collection
232 */
233 public Collection getEnvironmentEntries(boolean follow);
234
235 /**
236 * The fully qualified name of the base DAO.
237 * @return String
238 */
239 public String getFullyQualifiedDaoBaseName();
240
241 /**
242 * Returns the fully qualified default DAO exception name.
243 * @return String
244 */
245 public String getFullyQualifiedDaoDefaultExceptionName();
246
247 /**
248 * The fully qualified name of the DAO implemetation.
249 * @return String
250 */
251 public String getFullyQualifiedDaoImplementationName();
252
253 /**
254 * The fully qualified name of the DAO.
255 * @return String
256 */
257 public String getFullyQualifiedDaoName();
258
259 /**
260 * The fully qualified name of the composite primary key class of this entity.
261 * @return String
262 */
263 public String getFullyQualifiedEntityCompositePrimaryKeyName();
264
265 /**
266 * The fully qualified name of the embeddable super class of this entity.
267 * @return String
268 */
269 public String getFullyQualifiedEntityEmbeddableName();
270
271 /**
272 * Fully qualified name of the Entity implementation class.
273 * @return String
274 */
275 public String getFullyQualifiedEntityImplementationName();
276
277 /**
278 * Fully qualified name of the Entity listner class holding entity callback methods.
279 * @return String
280 */
281 public String getFullyQualifiedEntityListenerName();
282
283 /**
284 * The fully qualified name of the EJB3 entity.
285 * @return String
286 */
287 public String getFullyQualifiedEntityName();
288
289 /**
290 * A String representing the name of a home interface for this entity EJB.
291 * @return String
292 */
293 public String getHomeInterfaceName();
294
295 /**
296 * Returns the identifier, which can be an attribute or an association. For an association, the
297 * target primary key is used as part of the embedded identifier.
298 * @return ModelElementFacade
299 */
300 public ModelElementFacade getIdentifier();
301
302 /**
303 * Return the value of the andromda_persistence_inheritance tagged value which is an enumeration
304 * containing SINGLE_TABLE, TABLE_PER_CLASS or JOINED.
305 * @return String
306 */
307 public String getInheritanceStrategy();
308
309 /**
310 * All inherited instanceAttributes this class. The instanceAttributes are grouped by the class
311 * that defines the instanceAttributes, with instanceAttributes from the most removed super
312 * class first.
313 * @return List
314 */
315 public List getInheritedInstanceAttributes();
316
317 /**
318 * Gets a comma separated list of instance attribute names. If 'follow' is true, will travel up
319 * the inheritance hierarchy to include instance attributes in parent entities as well. If
320 * 'withIdentifiers' is true, will include identifiers.
321 * @param follow boolean
322 * @param withIdentifiers boolean
323 * @return String
324 */
325 public String getInstanceAttributeNameList(boolean follow, boolean withIdentifiers);
326
327 /**
328 * Gets a comma separated list of instance attribute types. If 'follow' is true, will travel up
329 * the inheritance hierarchy to include instance attribute types in parent entities as well. If
330 * 'withIdentifiers' is true, will include identifiers.
331 * @param follow boolean
332 * @param withIdentifiers boolean
333 * @return String
334 */
335 public String getInstanceAttributeTypeList(boolean follow, boolean withIdentifiers);
336
337 /**
338 * Gets all instance attributes of the entity, and optionally retieves the super entities
339 * instance attributes as well as excludes the entity's identifiers if 'withIdentifiers' is set
340 * to false.
341 * @param follow boolean
342 * @param withIdentifiers boolean
343 * @return Collection
344 */
345 public Collection getInstanceAttributes(boolean follow, boolean withIdentifiers);
346
347 /**
348 * jndiNamePrefix/ejb/this.getFullyQualifiedName()
349 * @return String
350 */
351 public String getJndiName();
352
353 /**
354 * Find the attribute with 'andromda_manageable_table_displayname'
355 * @return AttributeFacade
356 */
357 public AttributeFacade getManageableDisplayAttribute();
358
359 /**
360 * Return all dependent Roles with the stereotype 'RunAs'
361 * @return Collection<Role>
362 */
363 public Collection<Role> getNonRunAsRoles();
364
365 /**
366 * Returns the comma separated list of roles allowd to execute DAO operations. This is defined
367 * by actor dependencies on the entity.
368 * @return String
369 */
370 public String getRolesAllowed();
371
372 /**
373 * Travels up the inheritance hierarchy and retrieves the root of this entity. If the root is
374 * the entity itself then just the entity is returned.
375 * @return EJB3EntityFacade
376 */
377 public EJB3EntityFacade getRoot();
378
379 /**
380 * Returns the Seam component name for the class.
381 * @return String
382 */
383 public String getSeamComponentName();
384
385 /**
386 * Returns the seam component scope type if one is specified.
387 * @return String
388 */
389 public String getSeamComponentScopeType();
390
391 /**
392 * Returns the security domain value. Specified using the securityRealm namespace property or
393 * overridden in the andromda.ejb.security.realm tagged value.
394 * @return String
395 */
396 public String getSecurityRealm();
397
398 /**
399 * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
400 * retrieved (including those inherited from any superclasses).
401 * @param follow boolean
402 * @return Collection
403 */
404 public Collection getSelectMethods(boolean follow);
405
406 /**
407 * Gets the SQL Mappings from the SQLMappings URI
408 * @return String
409 */
410 public String getSqlType();
411
412 /**
413 * ValueObject dependency references from this Entity
414 * @return Collection
415 */
416 public Collection getValueDependencies();
417
418 /**
419 * Retrieves the value object dependencies for this entity without inherited object references.
420 * @return Collection<DependencyFacade>
421 */
422 public Collection<DependencyFacade> getValueObjectReferences();
423
424 /**
425 * Retrieves the values object references for this entity. If <code>follow</code> is true, then
426 * all value object references (including those that were inherited) will be retrieved.
427 * @param follow boolean
428 * @return Collection
429 */
430 public Collection getValueObjectReferences(boolean follow);
431
432 /**
433 * A string indicating whether the Bean is a local or remotely accessable bean.
434 * @return String
435 */
436 public String getViewType();
437
438 /**
439 * If the attribute att is present
440 * @param att String
441 * @return boolean
442 */
443 public boolean isAttributePresent(String att);
444
445 /**
446 * Returns true if caching has been enabled via namespace property hibernateEnableCache.
447 * @return boolean
448 */
449 public boolean isCacheEnabled();
450
451 /**
452 * Returns true if a composite primary key exists for this entity bean. A composite primary key
453 * consists of 2 or more entity identifiers.
454 * @return boolean
455 */
456 public boolean isCompositePrimaryKeyPresent();
457
458 /**
459 * Indicates whether or not any business DAO operations are present.
460 * @return boolean
461 */
462 public boolean isDaoBusinessOperationsPresent();
463
464 /**
465 * True if an implementation is required for the dao class, this is the case when there are
466 * business operations or value-object transformation.
467 * @return boolean
468 */
469 public boolean isDaoImplementationRequired();
470
471 /**
472 * Determines if this entity is an mapped/embeddable super class.
473 * @return boolean
474 */
475 public boolean isEmbeddableSuperclass();
476
477 /**
478 * Returns true if this entity is a subclass of an mapped/embeddable super class. You cannot
479 * have more than 1 level of inheritance using mapped/embeddable super class. To achieve
480 * multiple levels, use one of the inheritance mapping strategies like single table, table per
481 * class or joined table strategies.
482 * @return boolean
483 */
484 public boolean isEmbeddableSuperclassGeneralizationExists();
485
486 /**
487 * True if an entity implementation is required for the entity class, this is the case when
488 * there are business operations.
489 * @return boolean
490 */
491 public boolean isEntityImplementationRequired();
492
493 /**
494 * Returns true if the findAll finder method (specified as a query method) has been modelled.
495 * @return boolean
496 */
497 public boolean isFinderFindAllExists();
498
499 /**
500 * Returns true if the finder findByPrimaryKey has been modelled.
501 * @return boolean
502 */
503 public boolean isFinderFindByPrimaryKeyExists();
504
505 /**
506 * Returns true if the generic finder property is true. This will create generic finder static
507 * methods in the entity POJO like findByPrimaryKey and findAll.
508 * @return boolean
509 */
510 public boolean isGenericFinders();
511
512 /**
513 * If the identifier id is present
514 * @param id String
515 * @return boolean
516 */
517 public boolean isIdentifierPresent(String id);
518
519 /**
520 * Return true if the entity inheritance strategy as specified by the tagged value
521 * andromda_persistence_inheritance is defined as JOINED.
522 * @return boolean
523 */
524 public boolean isInheritanceJoined();
525
526 /**
527 * Return true if the entity inheritance strategy as specified by the tagged value
528 * andromda_persistence_inheritance is defined as SINGLE_TABLE.
529 * @return boolean
530 */
531 public boolean isInheritanceSingleTable();
532
533 /**
534 * Return true if the entity inheritance strategy as specified by the tagged value
535 * andromda_persistence_inheritance is defined as TABLE_PER_CLASS.
536 * @return boolean
537 */
538 public boolean isInheritanceTablePerClass();
539
540 /**
541 * Returns true if this entity bean has the stereotype Listener. False otherwise.
542 * @return boolean
543 */
544 public boolean isListenerEnabled();
545
546 /**
547 * Returns true if this entity is assigned the Manageable stereotype. False otherwise.
548 * @return boolean
549 */
550 public boolean isManageable();
551
552 /**
553 * If the operation op is present
554 * @param op String
555 * @return boolean
556 */
557 public boolean isOperationPresent(String op);
558
559 /**
560 * Returns true if the entity requires generalization mapping. The Inheritance annotation is
561 * required for child entities for all inheritance strategies.
562 * @return boolean
563 */
564 public boolean isRequiresGeneralizationMapping();
565
566 /**
567 * Returns true if the entity requires specialization mapping. The Inheritance annotation is
568 * required for parent entities for all inheritance strategies.
569 * @return boolean
570 */
571 public boolean isRequiresSpecializationMapping();
572
573 /**
574 * Returns true if this entity has the <<Seam>> stereotype modelled indicating it is a Seam
575 * entity component.
576 * @return boolean
577 */
578 public boolean isSeamComponent();
579
580 /**
581 * Returns true if the security realm is specified. This will generate the security setting for
582 * the DAO components.
583 * @return boolean
584 */
585 public boolean isSecurityEnabled();
586
587 /**
588 * Whether or not to allow a synthetic (auto generated) create method.
589 * @return boolean
590 */
591 public boolean isSyntheticCreateMethodAllowed();
592
593 /**
594 * Return true if a unique cache region is NOT required for entities and queries. This means we
595 * use the default cache region specified by the container. Specified via the
596 * useDefaultCacheRegion namepsace property.
597 * @return boolean
598 */
599 public boolean isUseDefaultCacheRegion();
600
601 /**
602 * Returns true if the application wide namespace property hibernateUseQueryCache is enabled.
603 * This is used for generic finder methods i.e. findAll.
604 * @return boolean
605 */
606 public boolean isUseQueryCache();
607 }