sábado, 15 de marzo de 2014

Groovy ... en ejemplos

¿Groovy es Java?
 Si,  así es.

Todo lo que programas en Java se puede hacer en este lenguaje. A mi parecer la desventaja que tiene es que debes ser muy cuidadoso al escribir código. Los errores de tiempo de ejecución son muy comunes en los lenguajes dinámicos, tal vez en la compilación todo parece funcionar correctamente, pero no siempre es así.

¿Cómo creo una clase en Groovy?

class Simple{
  String nombre
}

En Java escribes más código:

public class Simple{
   private String nombre;

   public Simple(){}

  public Simple(String n){ nombre=n; }

  public void setNombre(String n){ nombre=n; }

  public String getNombre(){ return nombre; }
  
}

Comprimir un archivo con la librería Zip4j 

Groovy posee un gestor de dependencias llamado Grape, parecido a Maven, que permite importar librerías sin la necesidad de descargarlas manualmente.


En este ejemplo vamos a crear tres clases:
  • Persona
  • Autor, que heredará atributos de la clase Persona
  • Blog 
Además vamos a importar la librería Zip4j para comprimir archivos en formato *.zip

ejemploGrape.groovy

//usamos la anotación @Grapes y @Grab
@Grapes(
@Grab(
group='net.lingala.zip4j',
module='zip4j',
version='1.3.2'
)
)

//ahora importamos las clases necesarias de la librería zip4j
import net.lingala.zip4j.core.*;
import net.lingala.zip4j.model.*;
import net.lingala.zip4j.util.*;


//el método principal del programa
static main(args) {
   def autor=new Autor(direccion:"Las Lomas no.  232",telefono:"555-211-89",correo_electronico:"horacio@latinmail.com")

   autor.with{
      nombre="Horacio"
      apellidoPaterno="Torres"
      apellidoMaterno="Yung"
     edad=45
}

//instanciamos la clase Blog
   def miBlog =new Blog(titulo:"El viaje de John Smith")
    miBlog.with{autor=autor}

    def salida = new StringWriter()
    def xml = new groovy.xml.MarkupBuilder(salida)

    xml.blogs{
      blog(escritor:autor.nombre,miBlog.titulo)
}

println salida

//creamos el archivo: blog.xml
def archivo=new File("blog.xml")
archivo.write((String)salida)


//si el archivo se creo correctamente se procede a comprimirlo
if(archivo.exists()){
   try {
    ZipFile zipFile = new ZipFile("/home/codemonkey/Documentos/fichero.zip");
    File entradaZip = new File((String)archivo);
   
    ZipParameters parametros = new ZipParameters();
    parametros.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
    parametros.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_ULTRA);
   
     zipFile.addFile(entradaZip, parametros);
 
   println "Listo ... archivo zip creado"
} catch (Exception e) {
       print "parece que hubo un error"+e.getCause()
}
}//fin if
}


class Blog{
    Autor autor
    String titulo
}

class Autor extends Persona{
     String direccion
     String telefono
     String correo_electronico
}

class Persona{
    String nombre
    String apellidoPaterno
    String apellidoMaterno
    int edad
}

Código:
http://www.pasteall.org/50258/groovy

No hay comentarios:

Publicar un comentario