viernes 28 de agosto de 2009

Ejecutando Scripts Groovy con Grails

Necesito (Quiero) poder hacer scripts Groovy que serán ejecutados desde un controlador en Grails para analizar la base de datos y crear gráficos estadísticos.

La idea es no tener que tocar el código para poder crear nuevos informes, simplemente añadiendo el archivo en su carpeta correspondiente la aplicación los mostrará y nos permitirá ejecutarlos.

La primera dificultad ha sido averiguar como ejecutar un script externo. Para hacerlo nos debemos servir de la clase GroovyShell como descubrí en este sitio.

El otro reto, era disponer de la conexión a la base de daos en el script, la solución la encontré aqui.

No tengo experiencia suficiente con Grails como para saber si hay una forma mejor de hacerlo, pero por ahora mi solución ha sido...

NOTA: Todavía no esta terminado, lo iré ampliando según lo vaya resolviendo.


import groovy.sql.Sql

class StatsController {
javax.sql.DataSource dataSource

def index = {
Binding binding = new Binding();
binding.setVariable("dataSource",dataSource)
GroovyShell shell = new GroovyShell(binding)
File file = new File("src/stats/test.groovy")
Object value = shell.evaluate(file)
...


El contenido del archivo test.groovy podría ser algo parecido a...


import groovy.sql.Sql

def sql = new Sql(dataSource)
def valor_campo = new String(sql.firstRow("select campo from tabla").campo)
println valor_campo


Continuara...