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
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
76
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 }