1 package org.andromda.cartridges.ejb.metafacades;
2
3 import java.text.MessageFormat;
4
5 import java.util.StringTokenizer;
6
7 import org.andromda.cartridges.ejb.EJBProfile;
8 import org.andromda.metafacades.uml.GeneralizableElementFacade;
9 import org.apache.commons.lang.StringUtils;
10
11
12 /***
13 * MetafacadeLogic implementation for org.andromda.cartridges.ejb.metafacades.ValueObjectFacade.
14 *
15 * @see org.andromda.cartridges.ejb.metafacades.ValueObjectFacade
16 */
17 public class ValueObjectFacadeLogicImpl
18 extends ValueObjectFacadeLogic
19 {
20
21 public ValueObjectFacadeLogicImpl(
22 Object metaObject,
23 String context)
24 {
25 super(metaObject, context);
26 }
27
28 /***
29 * Using <code>/</code> in the configuredProperty <code>valueObjectPackage</code> can remove the previous package
30 * name.
31 *
32 * @see org.andromda.cartridges.ejb.metafacades.ValueObjectFacade#getPackageName()
33 */
34 public String getPackageName()
35 {
36 final</strong> String packageName =
37 MessageFormat.format(
38 this.getConfiguredProperty("valueObjectPackage").toString(),
39 new String[] {StringUtils.trimToEmpty(super.getPackageName())});
40 StringBuffer buffer = new StringBuffer();
41 for</strong> (final StringTokenizer tokenizer = new StringTokenizer(packageName, "."); tokenizer.hasMoreTokens();)
42 {
43 String token = tokenizer.nextToken();
44 if (token.indexOf("/") < 0)
45 {
46 buffer.append(token).append(".");
47 }
48 }
49 final String name = buffer.toString();
50 return name.endsWith(".") ? name.substring(0, name.length() - 1) : name;
51 }
52
53 /***
54 * @see org.andromda.cartridges.ejb.metafacades.ValueObjectFacade#getName()
55 */
56 public String getName()
57 {
58 return MessageFormat.format(
59 this.getConfiguredProperty("valueObjectName").toString(),
60 new Object[] {StringUtils.trimToEmpty(super.getName())});
61 }
62
63 /***
64 * @see org.andromda.metafacades.uml.ModelElementFacade#getFullyQualifiedName()
65 */
66 public String getFullyQualifiedName()
67 {
68 final String name = this.getPackageName();
69 return name == null || name.equalsIgnoreCase("") ? getName() : name + "." + getName();
70 }
71
72 /***
73 * If we're using inheritance to build up a value object with all model elements of an entity, we're returning no
74 * superclass.
75 */
76 public GeneralizableElementFacade getGeneralization()
77 {
78 GeneralizableElementFacade generalization = super.getGeneralization();
79 return generalization == null || generalization.hasStereotype(EJBProfile.STEREOTYPE_ENTITY) ? null
80 : generalization;
81 }
82 }