martes, 20 de septiembre de 2011

GRAILS - Cliente de servicios web con WS-Client

Hoy le toca al turno al plugin WSClient para grails. Utilizando este plugin podremos crear un cliente de un servicio web fácil fácil.

Un ejemplo para ver como funciona.

lunes, 19 de septiembre de 2011

GRAILS - Servicios web con CXF

A la hora de crear servicios web el plugin cxf de grails nos facilita mucho esta tarea, permitiéndonos crear un servicio web en cuestión de minutos. (He de puntualizar que tardas poco si son servicios web sencillos, como te plantees cosas más complejas como devolver o aceptar mapas por parámetros la cosa se complica...)

Veamos cómo poner un servicio web en funcionamiento usando este plugin.

miércoles, 29 de junio de 2011

GRAILS - Remote pagination plugin

Esta vez toca una pequeña explicación de un plugin útil y muy fácil de utilizar. Se trata de Remote Pagination, el cual ofrece los tags remotePaginate y remoteSortableColumn que permiten paginar y ordenar las columnas de forma remota.

martes, 28 de junio de 2011

GRAILS - Evitar envío duplicado del formulario

Muchas veces (por no decir siempre) nos encontramos con el problema de evitar que un usuario envíe dos o más veces el mismo formulario (ya sabemos todos que existen usuarios que parece que tienen un tick nervioso en el dedo y no parar de dar a los botones por si no les ha hecho caso...).

jueves, 23 de junio de 2011

NUTCH - Combinar índices

Dentro del script que he empleado para hacer el crawl de distintas páginas, decidí que los nuevos crawls se harían en directorios distintos y después de juntarían con uno general. Este es el código que utilizo para mezclar los crawldb.
Path crawlDb = new Path(dir + "/crawldb_"+id);
Path crawlDbDestino = new Path(dir+"/crawldb");
Path crawlDbNuevo = new Path(dir+"/crawldb2");
//Aquí hay más código, pero no relacionado con este tema

Path[] crawlDbs;
if (!fs.exists(crawlDbDestino))
{
 crawlDbs = new Path[1];
 crawlDbs[0] = crawlDb;
 crawldbMerger.merge(crawlDbDestino, crawlDbs, false, false);
 fs.delete(crawlDb,true);
}
else
{
 crawlDbs = new Path[2];
 crawlDbs[0] = crawlDb;
 crawlDbs[1] = crawlDbDestino;
 crawldbMerger.merge(crawlDbNuevo,crawlDbs,false,false);
 fs.delete(crawlDbDestino, true);
 fs.rename(crawlDbNuevo, crawlDbDestino);
 fs.delete(crawlDb,true);
}

GROOVY - Elvis Operator

Elvis operator (?:) es una versión corta del operador ternario de Java. Literalmente es la abreviación de "if-then-else". Este operador es muy útil para, por ejemplo, definir valores por defecto si no se han indicado antes, lo que significa que tendrán valor null o false.

Veamos un par de ejemplos.
def nombre = nombre?:"desconocido" 
def otro = nombre=="desconocido"?"a":"b"

En el primer ejemplo, si el nombre tiene algún valor, se asigna ese valor, y en caso contrario se le asigna el string "desconocido". La primera parte del operador se conoce como expresión. Si esa expresión se evalúa a false o null, entonces el valor después de : es devuelto, si no el posterior a ? es el que será devuelto. En el segundo caso, si el nombre es "desconocido", la variable otro tendrá valor "a" y si no "b".

Puede que al principio cueste un poco acostumbrarse a este operador, pero una vez que lo hagáis, os daréis cuenta de que lo podéis usar en muchos sitios para abreviar código.

Enjoy!

GROOVY - Expresiones regulares

Groovy, como Java, permite el uso de expresiones regulares y lo hace de una manera sencilla. Además, añade tres operadores que facilitan aún más la labor.

Twitter Delicious Facebook Digg Stumbleupon Favorites More