Nube de tags en java: OpenCloud
Cuando una página web tiene un volumen elevado de contenido como Master D, es recomendable incluir herramientas de búsqueda (un buscador, nube de tags…) para permitir realizar al usuario una búsqueda ágil e inteligente en nuestra web, consiguiendo enfocarle de manera más acertada a la landing page que más nos convenga.
En este post nos centraremos en la tarea de generar una nube de tags en java. Aunque hoy en día hay bastantes componentes que generan nubes de tags, en Master D decidimos utilizar la librería java OpenCloud ya que en principio nos pareció muy manejable.
OpenCloud es una librería de Java que permite generar una nube de tags y permite gestionar sus propiedades, como el tamaño de la fuente o el total de resultados mostrados, entre muchas otras características. OpenCloud es openSource, y se puede obtener desde http://opencloud.sourceforge.net/.
Esta librería tiene un funcionamiento simple. Principalmente se basa en un crear un objeto Cloud definido en la librería, e insertar en él objetos Tag que contienen el nombre de la tag, el link, y un peso. El proceso de gestión del tamaño final de la letra de las tags y el orden en el que se mostrarán en la nube, se hará automáticamente gracias a las funciones de la librería OpenCloud.
Aquí podemos ver un esquema del proceso de generación de una nube de tags.
Cloud nube = new Cloud(); nube.addTag(new Tag(<nombre_tag>, <url>, <peso>));
De esta manera conseguiremos insertar información en un objeto Cloud. Adicionalmente, también podemos forzar otros parámetros de la nube, como el máximo tamaño del peso, el número máximo permitido de tags que mostraremos, etc…
Por poner un ejemplo, podríamos controlar que el número máximo de tags mostradas en la nube no supere cierto número de la siguiente manera:
nube.setMaxTagsToDisplay(<parametro>);
Hay más opciones de personalización que están explicadas con detalle en la documentación de la librería.
A continuación vamos a ver el proceso de generación de una nube de tags y su resultado.
· 1) Creación de un procedimiento que obtiene una nube de tags con valores constantes
public Cloud nubeTags() {
/* Creación del objeto nube */
Cloud nube = new Cloud();
/* Inserción de las tags en la nube */
nube.addTag(new Tag("Terreno en Zaragoza", "http://www.direccion1.es", 35));
nube.addTag(new Tag("Casa en Tudela", "http://www.direccion2.com", 24));
nube.addTag(new Tag("Chalet en Zamora", "http://www.direccion3.pt", 12));
nube.addTag(new Tag("Parcela en Huesca", "http://www.direccion4.de", 12));
nube.addTag(new Tag("Apartamento en Teruel", "http://www.direccion5.uk", 5));
nube.addTag(new Tag("Loft", "http://www.direccion6.gr", 15));
/* Establecimiento de propiedades de la nube */
nube.setMaxTagsToDisplay(15);
nube.setMaxWeight(30);
nube.setMinWeight(8);
/* Objeto creado */
return nube;
}
· 2) Inserción en un JSP con Struts 2
<div style="margin: auto; width: 25%;">
<s:iterator value="nube.tags()" status="status" >
<a href="<s:property value="link"/>" style="font-size: <s:property value="weight"/>px;"><s:property value="name" /></a>
</s:iterator>
</div>
· 3) Resultado
Como véis, es una librería sencilla, pero que nos deja bastante libertad en cuanto a personalización, ya que podemos modificar si queremos el contenido html.
Podéis ver un resultado más trabajado de esta librería en la nube de tags de la página web de Master D.

November 6th, 2009 at 12:09 pm
Muchísimas gracias por el artículo. Acababa de encontrar la librería y ha sido una introducción perfecta
February 3rd, 2010 at 7:45 pm
Hola que tal excelente ejemplo sin embargo la nube que tiene ahorita esta echa con esa libreria? podrian poner como hacerlo? seria interezante..
May 17th, 2010 at 10:07 am
esta muy bueno la explicacion ..solo que tengo una duda ..esto lo puedo programar en un JFrame como ventana principal. Es decir lo puedo programar de forma normal sin necesidad de ingresar url. Lo que quiero es darlo como presentacion en un trabajo escolar como si fuera un portada principal que al darle clic me mostrara un subventans…espero alguna respuesta yo creo que si se puede ..no hay imposibles