1 /**
2 *
3 */
4 package ar.com.jiji.kaya.reflect;
5
6 import java.lang.reflect.Method;
7
8 import org.apache.commons.lang.StringUtils;
9
10 import ar.com.jiji.kaya.utils.ValidateUtils;
11
12 /**
13 * Contiene las convenciones usadas para los nombres de los metodos.
14 *
15 * @author lparra
16 * @version $Revision$ $Date$
17 */
18 public class MethodNames {
19 private static final String DAO = "Dao";
20
21 private static final String SET = "set";
22
23 private static final String GET = "get";
24
25
26
27 private MethodNames() {
28 }
29
30 /**
31 * Construye el nombre del metodo para setear un property. El primer
32 * caracter se pasa a mayusculas.
33 *
34 * @param property
35 * El nombre del property.
36 * @return
37 */
38 public static String getMutator(String property) {
39 return SET + StringUtils.capitalise(property);
40 }
41
42 /**
43 * Construye el nombre del metodo para obtener un property. El primer
44 * caracter se pasa a mayusculas.
45 *
46 * @param property
47 * El nombre del property.
48 * @return
49 */
50 public static String getAccessor(String property) {
51 return GET + StringUtils.capitalise(property);
52 }
53
54 /**
55 * Construye el nombre del metodo para obtener el dao.
56 *
57 * @param modelClass
58 * El nombre de la clase que el dao manipula.
59 * @return
60 */
61 public static String getModelDaoAccessor(String modelClass) {
62 return getAccessor(modelClass + DAO);
63 }
64
65 /**
66 * Construye el nombre del metodo para setear el dao.
67 *
68 * @param modelClass
69 * El nombre de la clase que el dao manipula.
70 * @return
71 */
72 public static String getModelDaoMutator(String modelClass) {
73 return getMutator(modelClass + DAO);
74 }
75
76 /**
77 * Construye el nombre del metodo para obtener el dao. Utiliza el nombre de
78 * la clase para formar el nombre del metodo.
79 *
80 * @param modelClass
81 * La clase del modelo que el dao manipula.
82 * @return
83 */
84 public static String getModelDaoAccessor(Class modelClass) {
85 return getAccessor(modelClass.getSimpleName() + DAO);
86 }
87
88 /**
89 * Construye el nombre del metodo para setear el dao. Utiliza el nombre de
90 * la clase para formar el nombre del metodo.
91 *
92 * @param modelClass
93 * La clase del modelo que el dao manipula.
94 * @return
95 * @see #getDaoAccessor(String)
96 */
97 public static String getModelDaoMutator(Class modelClass) {
98 return getMutator(modelClass.getSimpleName() + DAO);
99 }
100
101 /**
102 * Construye el nombre del metodo para obtener el dao.
103 *
104 * @param interfaceClass
105 * El nombre de interfaz del dao.
106 * @return
107 */
108 public static String getDaoAccessor(String interfaceClass) {
109 return getAccessor(interfaceClass);
110 }
111
112 /**
113 * Construye el nombre del metodo para setear el dao.
114 *
115 * @param interfaceClass
116 * El nombre de interfaz del dao.
117 * @return
118 */
119 public static String getDaoMutator(String interfaceClass) {
120 return getMutator(interfaceClass);
121 }
122
123 /**
124 * Construye el nombre del metodo para setear el dao. Utiliza el nombre de
125 * la clase para formar el nombre del metodo.
126 *
127 * @param interfaceClass
128 * El nombre de interfaz del dao.
129 * @return
130 * @see #getDaoMutator(String)
131 */
132 public static String getDaoMutator(Class interfaceClazz) {
133 return getDaoMutator(interfaceClazz.getSimpleName());
134 }
135
136 /**
137 * Construye el nombre del metodo para obtener el dao. Utiliza el nombre de
138 * la clase para formar el nombre del metodo.
139 *
140 * @param interfaceClass
141 * El nombre de interfaz del dao.
142 * @return
143 * @see #getDaoAccessor(String)
144 */
145 public static String getDaoAccessor(Class interfaceClass) {
146 return getDaoAccessor(interfaceClass.getSimpleName());
147 }
148
149 /**
150 * Chequea que el metodo sea de un accessor. Chequea tanto el nombre del
151 * metodo como que no reciba parametros y devuelva void.
152 *
153 * @param method
154 * No puede ser null.
155 * @return
156 */
157 public static boolean isAccessor(Method method) {
158 ValidateUtils.notNull(method);
159
160 return (MethodNames.isAccessor(method.getName())
161
162
163 && method.getParameterTypes().length == 0);
164 }
165
166 /**
167 * Chequea que el metodo sea un accessor. El chequeo no es completo ya que
168 * se usa solo el nombre del metodo y no el tipo de retorno y los
169 * argumentos.
170 *
171 * @param methodName
172 * @return
173 * @see #isAccessor(Method)
174 */
175 public static boolean isAccessor(String methodName) {
176 return (methodName.startsWith(GET) && methodName.length() > 3);
177 }
178
179 public static boolean isMutator(String methodName) {
180 return (methodName.startsWith(SET) && methodName.length() > 3);
181 }
182
183 public static boolean isDaoAccessor(String methodName) {
184 return (methodName.startsWith(GET) && methodName.endsWith(DAO));
185 }
186
187 public static boolean isDaoMutator(String methodName) {
188 return (methodName.startsWith(SET) && methodName.endsWith(DAO));
189 }
190 }