View Javadoc

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      // ---------------- constructor -------------------------------
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 String packageName =
37              MessageFormat.format(
38                  this.getConfiguredProperty("valueObjectPackage").toString(),
39                  new String[] {StringUtils.trimToEmpty(super.getPackageName())});
40          StringBuffer buffer = new StringBuffer();
41          for (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  }