Madrid GUG - Grails Plugins: Exporter
Upcoming SlideShare
Loading in...5
×
 

Madrid GUG - Grails Plugins: Exporter

on

  • 820 views

Presentation about the Grails Exporter plugin at Madrid Groovy Users Group. Jun 26, 2012

Presentation about the Grails Exporter plugin at Madrid Groovy Users Group. Jun 26, 2012

Statistics

Views

Total Views
820
Views on SlideShare
820
Embed Views
0

Actions

Likes
1
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Madrid GUG - Grails Plugins: Exporter Madrid GUG - Grails Plugins: Exporter Presentation Transcript

  • Plugins de Grails: ExporterIván López Martín
  • ¿Quién soy? Iván López Martín @ilopmar Usando Grails/Groovy desde hace más de 2 años Creador de www.bokzuy.com Geek, Padre, Desarrollador, Linuxero, Pro-Software libre Trabajo en Kaleidos http://lopezivan.blogspot.com
  • Plugin Exporter http://grails.org/plugin/export Permite exportar datos desde una aplicación grails a los formatos: CSV, Excel, ODS, RTF, PDF y XML Sencillo de utilizar y muy flexible Distintas opciones en función del formato de salida elegido Proporciona un servicio exportService que se encarga de la generación del archivo final
  • Parámetros El servicio de exportación recibe: • Output stream • Lista de objetos a exportar • Campos • Etiquetas • Formatters • Parámetros
  • Ejemplo class User {     String name     Date birthDate     Company company }
  • Ejemplo class User {     String name     Date birthDate     Company company } List fields = ["name", "company.name", "birthDate"]
  • Ejemplo class User {     String name     Date birthDate     Company company } List fields = ["name", "company.name", "birthDate"] Map labels = ["name":"Nombre de usuario",  "company.name":"Compañía", "birthDate":"Fecha de  nacimiento"]
  • Ejemplo class User {     String name     Date birthDate     Company company } List fields = ["name", "company.name", "birthDate"] Map labels = ["name":"Nombre de usuario",  "company.name":"Compañía", "birthDate":"Fecha de  nacimiento"] Map formatters = [birthDate:dateToString] def dateToString = { domain, value ­>     return Utils.stringDate(value) }
  • Ejemplo class User {     String name     Date birthDate     Company company } List fields = ["name", "company.name", "birthDate"] Map labels = ["name":"Nombre de usuario",  "company.name":"Compañía", "birthDate":"Fecha de  nacimiento"] Map formatters = [birthDate:stringDate] Map parameters = ["encoding":"UTF­8"] httpResponse.contentType =  "application/vnd.oasis.opendocument.spreadsheet" httpResponse.setHeader("Content­disposition", "attachment;  filename=usuarios.ods")
  • Ejemplo class User {     String name     Date birthDate     Company company } List fields = ["name", "company.name", "birthDate"] Map labels = ["name":"Nombre de usuario",  "company.name":"Compañía", "birthDate":"Fecha de  nacimiento"] Map formatters = [birthDate:stringDate] Map parameters = ["encoding":"UTF­8"] httpResponse.contentType =  "application/vnd.oasis.opendocument.spreadsheet" httpResponse.setHeader("Content­disposition", "attachment;  filename=usuarios.ods") def objects = User.list() exportService.export(ods, httpResponse.outputStream,  objects, fields, labels, formatters, parameters)
  • Pero no termina ahí Se puede utilizar para exportar datos generados y calculados que no están persistidos con una clase de dominio La lista “objects” tendrá mapas con las propiedades que se desean exportar De esta forma conseguimos generar informes adhoc para el usuario
  • Ejemplodef rnd = new Random()def list = []10.times {    def map = [:]    map.p1 = UUID.randomUUID().toString().replaceAll(­, )    map.p2 = rnd.nextInt(10)    map.p3 = new Date() + rnd.nextInt(50) + 10        list << map}
  • Ejemplodef rnd = new Random()def list = []10.times {    def map = [:]    map.p1 = UUID.randomUUID().toString().replaceAll(­, )    map.p2 = rnd.nextInt(10)    map.p3 = new Date() + rnd.nextInt(50) + 10        list << map}println list­­­­[[p1:3475045bb4794778a441238f8b1b700c, p2:3, p3:Tue Jul 31 16:03:07 CEST 2012], [p1:cc2af0e290774667bd7b71e3ac8d8c6f, p2:4, p3:Sun Aug 19 16:03:07 CEST 2012], [p1:91e81467dd9146e5ac32e19e739d8515, p2:1, p3:Mon Jul 16 16:03:07 CEST 2012], ...]
  • EjemploList fields = ["p2", "p1"]Map labels = [p2:"Prop. 2"C, p1:"Prop. 1"]Map parameters = ["encoding":"UTF­8"]httpResponse.contentType = "application/vnd.ms­excel"httpResponse.setHeader("Content­disposition", "attachment; filename=listado.xls")exportService.export(excel, httpResponse.outputStream, list, fields, labels, [:], parameters)
  • ¿Preguntas? ¿?