Multiples clases de dominio y controladores

Aveces, necesitamos crear multiples clases de dominio junto con sus controladores para hacer un sencillo scaffolding. una forma de ganar tiempo al hacer este proceso es:

1) grails install-templates, para modificar la forma en la que se generan los artefactos. No cometer el error de traducir las vistas desde aqui, pues la idea es hacerlo con i18n. Lo que si va mos a modificar son los templates de los controladores para incluir cambiarlo con def scaffold = true en el lugar apropiado, en el archivo src/templates/artifacts/Controller.groovy. Tambien ahí hay otros archivos a modificar si se quisiera, por ejemplo las clases de dominio, etc. Este paso hay que hacerlo por cada nuevo proyecto. Debe haber un script que permita hacer la modificación de manera global, pero no voy a perder tiempo buscandolo porque no me parece tan importante el hecho que sea global.

2) Para crear rapidamente multiples clases de dominio y controladores, vamos a editar los scripts encargados de crearlos de tal forma que reciban más de un argumento. El cambio que hagamos si que va a quedar permanente para todos los nuevos proyectos que hagamos. Vamos a la carpeta GRAILS_HOME/scripts. Primero editamos CreateDomainClass.groovy para que la parte final quede así:

def names = argsMap["params"]
names.each{
createArtifact(name: it, suffix: "", type: "DomainClass", path: "grails-app/domain")
createUnitTest(name: it, suffix: "")
}

Ahora editamos CreateController.groovy:

names.each{
createArtifact(name: it, suffix: type, type: type, path: "grails-app/controllers")
def viewsDir = "${basedir}/grails-app/views/${propertyName}"
ant.mkdir(dir:viewsDir)
event("CreatedFile", [viewsDir])
createUnitTest(name: it, suffix: type, superClass: "ControllerUnitTestCase")
}

Con esto, y valiendonos de los brace expansions de bash ahora podemos hacer cosas como:
grails create-domain-class mycompany.{clase1,clase2,clase3}
grails create-controller mycompany.{clase1,clase2,clase3}

NOTA: mycompany sería el nombre del paquete que quiero usar. Cuando no uso paquetes, grails 1.2 me pone problema al tratar de hacer crud desde la web.

e reciban

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: