View Javadoc

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  	// TODO: revisar en el resto del codigo donde se generan los nombres a mano
26  	// y reemplazarlo por esta clase
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 		// TODO: testear que devuelve void
162 		// && m.getReturnType() == Void.class
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 }