View Javadoc

1   package com.bm.ejb3metadata.annotations.metadata;
2   
3   import java.util.Arrays;
4   
5   import com.bm.ejb3metadata.annotations.impl.JAnnotationResource;
6   import com.bm.ejb3metadata.annotations.impl.JEjbEJB;
7   import com.bm.ejb3metadata.annotations.impl.JavaxPersistenceContext;
8   import com.bm.ejb3metadata.annotations.impl.JavaxPersistenceUnit;
9   import com.bm.ejb3metadata.annotations.metadata.interfaces.ISharedMetadata;
10  
11  /**
12   * Defines Metadata shared by Field, Method and Classes. For example
13   * @javax.annotation.EJB, @javax.annotation.Resource, etc.
14   * @author Daniel Wiese
15   */
16  public class CommonAnnotationMetadata implements ISharedMetadata {
17  
18      /**
19       * This field is used as a PersistenceContext.
20       */
21      private JavaxPersistenceContext javaxPersistenceContext = null;
22  
23      /**
24       * This field is used as a PersistenceUnit.
25       */
26      private JavaxPersistenceUnit javaxPersistenceUnit = null;
27  
28      /**
29       * Object representing @{@link javax.ejb.EJB} annotation.
30       */
31      private JEjbEJB jEjbEJB = null;
32  
33      /**
34       * Object representing @{@link javax.annotation.Resource} annotation.
35       */
36      private JAnnotationResource jAnnotationResource = null;
37  
38      /**
39       * @return JEjbEJB object representing javax.ejb.EJB annotation.
40       */
41      public JEjbEJB getJEjbEJB() {
42          return jEjbEJB;
43      }
44  
45      /**
46       * Set JAnnotationEJB object.
47       * @param jEjbEJB object representing javax.annotation.EJB annotation.
48       */
49      public void setJEjbEJB(final JEjbEJB jEjbEJB) {
50          this.jEjbEJB = jEjbEJB;
51      }
52  
53      /**
54       * @return JAnnotationResource object representing javax.annotation.Resource
55       *         annotation.
56       */
57      public JAnnotationResource getJAnnotationResource() {
58          return jAnnotationResource;
59      }
60  
61      /**
62       * Set JAnnotationResource object.
63       * @param jAnnotationResource object representing javax.annotation.Resource
64       *        annotation.
65       */
66      public void setJAnnotationResource(final JAnnotationResource jAnnotationResource) {
67          this.jAnnotationResource = jAnnotationResource;
68      }
69  
70      /**
71       * @return true if this field is used as a persistence context.
72       */
73      public boolean isPersistenceContext() {
74          return javaxPersistenceContext != null;
75      }
76  
77      /**
78       * @return the persistence context infos.
79       */
80      public JavaxPersistenceContext getJavaxPersistenceContext() {
81          return javaxPersistenceContext;
82      }
83  
84      /**
85       * Sets the persistence context info on this field.
86       * @param javaxPersistenceContext information on persistence context.
87       */
88      public void setJavaxPersistenceContext(final JavaxPersistenceContext javaxPersistenceContext) {
89          this.javaxPersistenceContext = javaxPersistenceContext;
90      }
91  
92      /**
93       * @return true if this field is used as a persistence unit.
94       */
95      public boolean isPersistenceUnit() {
96          return javaxPersistenceUnit != null;
97      }
98  
99      /**
100      * @return the persistence unit infos.
101      */
102     public JavaxPersistenceUnit getJavaxPersistenceUnit() {
103         return javaxPersistenceUnit;
104     }
105 
106     /**
107      * Sets the persistence unit info on this field.
108      * @param javaxPersistenceUnit information on persistence unit.
109      */
110     public void setJavaxPersistenceUnit(final JavaxPersistenceUnit javaxPersistenceUnit) {
111         this.javaxPersistenceUnit = javaxPersistenceUnit;
112     }
113 
114     /**
115      * @return string representation
116      */
117     @Override
118     public String toString() {
119         StringBuilder sb = new StringBuilder();
120         String titleIndent = " ";
121         // classname
122         sb.append(titleIndent);
123         sb.append(this.getClass().getName().substring(this.getClass().getPackage().getName().length() + 1));
124         sb.append("[\n");
125 
126         // jEjbEJB
127         concatStringBuilder("jEjbEJB", jEjbEJB, sb);
128 
129         // jAnnotationResource
130         concatStringBuilder("jAnnotationResource", jAnnotationResource, sb);
131 
132         // javaxPersistenceContext
133         concatStringBuilder("javaxPersistenceContext", javaxPersistenceContext, sb);
134 
135         // javaxPersistenceUnit
136         concatStringBuilder("javaxPersistenceUnit", javaxPersistenceUnit, sb);
137 
138         sb.append(titleIndent);
139         sb.append("]\n");
140         return sb.toString();
141     }
142 
143     /**
144      * Adds an entry to the given StringBuilder.
145      * @param name the name of the entry.
146      * @param object object to add.
147      * @param sb the string builder object on which add the given element.
148      * @param indent the indent to add at each line.
149      */
150     protected static void concatStringBuilder(final String name, final Object object, final StringBuilder sb,
151             final String indent) {
152         if (object != null) {
153             sb.append(indent);
154             sb.append(name);
155             sb.append("=");
156             // For arrays, use asList
157             if (object instanceof Object[]) {
158                 sb.append(Arrays.asList((Object[]) object));
159             } else {
160                 sb.append(object);
161             }
162             sb.append("\n");
163         }
164     }
165 
166     /**
167      * Adds an entry to the given StringBuilder.
168      * @param name the name of the entry.
169      * @param object object to add.
170      * @param sb the string builder object on which add the given element.
171      */
172     protected static void concatStringBuilder(final String name, final Object object, final StringBuilder sb) {
173         concatStringBuilder(name, object, sb, "    ");
174     }
175 
176 }