1 package org.andromda.cartridges.java.metafacades;
2
3 import java.util.Iterator;
4
5 import org.andromda.metafacades.uml.ClassifierFacade;
6 import org.apache.commons.lang.StringUtils;
7
8
9 /**
10 * MetafacadeLogic implementation for org.andromda.cartridges.java.metafacades.JavaClass.
11 *
12 * @see org.andromda.cartridges.java.metafacades.JavaClass
13 */
14 public class JavaClassLogicImpl
15 extends JavaClassLogic
16 {
17 public JavaClassLogicImpl(
18 Object metaObject,
19 String context)
20 {
21 super(metaObject, context);
22 }
23
24 /**
25 * @see org.andromda.cartridges.java.metafacades.JavaClass#getInterfaceImplementationName()
26 */
27 protected java.lang.String handleGetInterfaceImplementationName()
28 {
29 return this.getInterfaceImplementionName().replaceAll(
30 "\\{0\\}",
31 this.getName());
32 }
33
34 /**
35 * Gets the value of the {@link JavaGlobals#INTERFACE_IMPLEMENTATION_NAME_PATTERN}.
36 *
37 * @return the interface implementation name..
38 */
39 private String getInterfaceImplementionName()
40 {
41 return String.valueOf(this.getConfiguredProperty(JavaGlobals.INTERFACE_IMPLEMENTATION_NAME_PATTERN));
42 }
43
44 /**
45 * @see org.andromda.cartridges.java.metafacades.JavaClass#getFullyQualifiedInterfaceImplementationName()
46 */
47 protected String handleGetFullyQualifiedInterfaceImplementationName()
48 {
49 final StringBuffer fullName = new StringBuffer();
50 final String packageName = this.getPackageName();
51 if (StringUtils.isNotBlank(packageName))
52 {
53 fullName.append(packageName).append('.');
54 }
55 return fullName.append(this.getInterfaceImplementationName()).toString();
56 }
57
58 /**
59 * @see org.andromda.cartridges.java.metafacades.JavaClass#isAbstractInterfaceImplementation()
60 */
61 protected boolean handleIsAbstractInterfaceImplementation()
62 {
63 boolean abstractImplementation = !this.getOperations().isEmpty();
64 if (!abstractImplementation)
65 {
66 for (final Iterator iterator = this.getAllGeneralizations().iterator(); iterator.hasNext();)
67 {
68 final ClassifierFacade classifier = (ClassifierFacade)iterator.next();
69 abstractImplementation = !classifier.getOperations().isEmpty();
70 if (abstractImplementation)
71 {
72 break;
73 }
74 }
75 }
76 return abstractImplementation;
77 }
78 }