En mi afán por mejorar la aplicación que estoy desarrollando en Grails he querido convertir todos los catálogos a tipo Enum (cosa que me parecio buena idea). Al principio se vislumbraba fácil la tarea, pero he quedado enfrascado dando vueltas sobre un error que me esta saliendo al momento de crear “una clase de tipo Enum”.
Bueno, comencé creando una clase de tipo Enum como se muestra a continuación:
enum Catalogo { CATALOGO1(new Integer(1), "CATALOGO1") CATALOGO2(new Integer(2), "CATALOGO2"]) Integer id String nombre Catalogo(id,nombre){ this.id = id this.nombre = nombre } String toString(){ nombre } } |
Pero después me di cuenta, que grails no trata igual a las tipos Class que a los tipos Enum (al menos en la versión 1.3.6). Cuando lo intente implementar, tuve que implementar manualmente los métodos que grails automáticamente genera en las tipos Class y que no genera en los tipos Enum. Por ejemplo tuve que implementar el método list(), el método get() y me quede estancado ya que me esta pidiendo un metodo Catalogo.#<init>
Tal vez se preguntaran cuál es mi afan de cambiar los catalogos del tipo Class al tipo Enum. Bueno, mi respuesta es que muchas veces en mi codigo tengo que hacer referencia o comparación con los nombres. Por ejemplo, me pasa mucho con los tipos de direcciones. Tengo un catalogo con la siguiente información:
1-Fiscal
2-Comercial
3-Almacen
Y después quiero hacer método que busque las direcciones donde el tipo de dirección es “Fiscal”. En vez de crear una variable estática o de pasarle un 1 o pasarle la cadena “Fiscal” (que puede ser propensa a errores de escritura), le paso TipoDireccion.FISCAL y me evito de malas interpretaciones e incluso de problemas si alguien ajeno al código lo quiera entender.
En fin, voy a seguir con mi travesía en el intento de implementar un tipo Enum y ya les estaré contando que es lo que me paso.
pudist lograr implementar los enums en grails?
Si, pero no pude idear una manera de realizar las búsquedas dentro del HSQL.