View Javadoc

1   package org.andromda.cartridges.meta.metafacades;
2   
3   import org.andromda.cartridges.meta.MetaProfile;
4   import org.andromda.metafacades.uml.GeneralizableElementFacade;
5   import org.apache.commons.lang.ObjectUtils;
6   import org.apache.commons.lang.StringUtils;
7   
8   import java.util.Collection;
9   
10  
11  /***
12   * MetafacadeLogic implementation for org.andromda.cartridges.meta.metafacades.MetafacadeGeneralization.
13   *
14   * @see org.andromda.cartridges.meta.metafacades.MetafacadeGeneralization
15   */
16  public class MetafacadeGeneralizationLogicImpl
17      extends MetafacadeGeneralizationLogic
18  {
19      public MetafacadeGeneralizationLogicImpl(
20          Object metaObject,
21          String context)
22      {
23          super(metaObject, context);
24      }
25  
26      /***
27       * @see org.andromda.cartridges.meta.metafacades.MetafacadeGeneralization#getPrecedence()
28       */
29      protected java.lang.Integer handleGetPrecedence()
30      {
31          Integer precedence = new Integer(999999999);
32          String value =
33              ObjectUtils.toString(
34                  this.findTaggedValue(MetaProfile.TAGGEDVALUE_GENERALIZATION_PRECEDENCE));
35          if (StringUtils.isNotBlank(value))
36          {
37              try
38              {
39                  precedence = new Integer(value);
40              }
41              catch (NumberFormatException ex)
42              {
43                  // ignore since we'll just take the large default.
44              }
45          }
46          return precedence;
47      }
48  
49      /***
50       * @see org.andromda.cartridges.meta.metafacades.MetafacadeGeneralization#getGetterName()
51       */
52      protected String handleGetGetterName()
53      {
54          String name = this.getName();
55          if (StringUtils.isBlank(name))
56          {
57              if (this.getParent() != null)
58              {
59                  name = this.getParent().getName();
60              }
61          }
62          name = StringUtils.capitalize(name);
63          return "get" + name;
64      }
65  
66      /***
67       * @see org.andromda.cartridges.meta.metafacades.MetafacadeGeneralization#getGetterNameVisibility()
68       */
69      protected String handleGetGetterNameVisibility()
70      {
71          String visibility = "private";
72          GeneralizableElementFacade child = this.getChild();
73          if (child != null)
74          {
75              // if we have more than one generalization for the metafacade
76              // then we expose the super facade accessors.
77              Collection generalizations = child.getGeneralizations();
78              if ((generalizations != null) && (generalizations.size() > 1))
79              {
80                  visibility = "protected";
81              }
82          }
83          return visibility;
84      }
85  
86      /***
87       * @see org.andromda.metafacades.uml.ModelElementFacade#getName()
88       */
89      public String getName()
90      {
91          String name = super.getName();
92          if (StringUtils.isBlank(name) && (this.getParent() != null))
93          {
94              name = this.getParent().getName();
95          }
96          return ObjectUtils.toString(
97              this.getConfiguredProperty(MetaGlobals.PROPERTY_GENERALIZATION_NAME_PATTERN))
98                            .replaceAll("//{0//}", name);
99      }
100 }