Ejemplo de JasperReports con Vaadin

Saludos, este mi pobre blog está muy abandonado ;).
Pero acabo de escribir un ejemplo de un reporte de JasperReports con Vaadin, lo publiqué en el wiki de Vaadin:
Ejemplo en el wiki de Vaadin
Y el código está en sourceforge.net como siempre:
Código en sourceforge

Anuncios

Novedades en el tutorial

Después de una larga vacación, estoy retomando el tutorial (ni tan larga, hace unos meses hice una corrección al Ejemplo1).

Inicialmente he traducido el ejemplo3 al inglés, y pues veremos de hacerlo pronto con el ejemplo4, para luego poner algún ejemplo mas. Ah si, también he subido todo el código al repositorio en sourceforge (a pesar que los .zip de cada ejemplo, vienen con código fuente incluido):

Saludos.

P.D. Acabo de añadir a las descargas un solo comprimido con todos los ejemplos: Ejemplos del tutorial

Un poco de hacking, seleccionar contactos en facebook

Creo que todos los que hemos creado un evento en facebook o administramos un grupo, alguna vez necesitamos seleccionar a todos los contactos, pero nos da flojera hacer click en todos los contactos, para esto algunas personas desarrollaron un script javascript que funcionó por un tiempo.

Este script, buscaba un id ‘friends’, pero como los cuates de Facebook no son tontos, hicieron que el id del elemento a buscar se genere aleatoriamente, ahora en vez de usar el id estático: ‘friends’, se genera una cadena extraña.

Para pillar la cadena, debemos usar un addon de firefox llamado ‘firebug’ o en el navegador Safari, una vez habilitadas las herramientas de desarrollo, solo hay que iniciar el Inspector Web, creo que en IE también hay una extensión similar

Tanto en Firefox, como en Safari, se debe hacer click en el ícono de la lupa para inspeccionar elementos, y buscar el panel principal de la lista de contactos a añadir, para luego encontrar su id en el código fuente.

Captura de pantalla fb

Una vez que tenemos el id, pues solo necesitamos ejecutar el script que ya todos conocen (reemplazando el id donde se debe), aunque le hice unas pequeñas modificaciones.


javascript:elms=document.getElementById('AQUI_VA_EL_ID').getElementsByTag
Name('input');for(var fid in elms){if(typeof elms[fid] === 'object')
{elms[fid].click()}}

Para los que sabemos un poquitín de javascript, vemos que la cosa es fácil, el script busca el ‘div’ que contiene la lista de contactos (usando el id del ‘div’), dentro busca los elementos de tipo ‘input’ (que serían los checkbox), y les hace click.

No es tan simple para los que no son devs, pero yo creo que ayuda.

Ejemplo 4 del tutorial de Jasper Reports API, liberado!

Después de muucho tiempo… (creo que Britney Spears saca un disco mas rápido de lo que yo escribo un ejemplo para el tutorial jeje), pero aquí está, el cuarto ejemplo del tutorial.

En este ejemplo, implementé un reporte agrupado, aunque lo más novedoso e interesante para mi gusto, es que no usé simplemente SQL para recuperar los datos del reporte, sino que usé JPA, y no en una aplicación web, sino en una aplicación de escritorio, gracias a Hibernate (y como siempre usando Mysql).

Espero disfruten el cuarto ejemplo.
Ejemplo4: Reporte agrupado usando JPA

Second chapter of the JasperReports tutorial released!

Hi, today I had released the second chapter of the Jasper Reports API tutorial (I had translated the second sample to English). This because the tutorial had reach the 100 sample downloads some days ago.

First sample using the JasperReports API

I hope this can be understood easily, and I am waiting for your comments.

Thanks.

Tercer capítulo del tutorial de JasperReports

Hola a todos, primero pedir disculpas si es que alguien sigue el tutorial de JasperReports, se que me demoré mucho en publicar este siguiente ejemplo, pero ya está aquí, es un ejemplo mas completo, usando una base de datos y utilizando el JRViewer.

Espero les sea de utilidad.

Ejemplo3: Reporte con datos

Espero sus comentarios.

Compilando con Ant en Leopard.

En el proyecto en el que trabajo, usamos Ant desde IntelliJ IDEA para compilar y desplegar el mismo.

Necesito ejecutar unos tests con TestNG desde Ant, pero no desde IDEA, sino desde consola, y al querer ejecutar los tests salió una excepción:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file

Esta es debido a que se está usando un JDK para ejecutar la aplicación que es una versión anterior al JDK con que se compiló la misma.

Verificando en algunos foros, me doy cuenta que Ant usa el JDK que esta referenciado por la variable de entorno JAVA_HOME, y como en OsX, se puede definir el JDK a usar por defecto de otra manera, entonces yo no tenía definida la variable JAVA_HOME.

Para definir que quiero usar el JDK 1.6, tengo que editar el archivo .profile del folder Home de mi cuenta de usuario, claro que primero tengo que habilitar la característica para ver todos los archivos en Finder (o usar mUCommander si prefieren).

Para habilitar el ver todos los archivos en el Finder:
1. En la consola, ejecutar: defaults write com.apple.Finder AppleShowAllFiles YES
2. Reiniciar el Finder (alt + click derecho en el ícono del Finder y “Forzar reinicio”).

Para volver a la normalidad, los mismos pasos, pero se cambia el “YES” por “NO”

Ahora hay que editar el archivo “.profile” que se encuentra en la carpeta “home” de la cuenta de usuario (dicha carpeta tiene el mismo nombre del a cuenta de usuario) y añadir esta línea:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

Además y puse en este archivo la ruta a ANT:

export ANT_HOME=/Volumes/Work/externalProjects/apache-ant-1.7.1
export PATH=$ANT_HOME/bin:$PATH

Para verificar que se usa el JDK correcto, traté de compilar el proyecto, pero me salió una excepción de memoria insuficiente:

java.lang.OutOfMemoryError: Java heap space

Entonces, tenemos que aumentar el tamaño de la memoria que puede usar Ant para compilar el proyecto, ésto se puede hacer de varias formas, pero elegí el usar la variable de entorno ANT_OPS, es decir añadí esto al archivo “.profile”:

export ANT_OPTS=-Xmx256m

Y listo, con eso ya solucioné mis pequeños inconvenientes al compilar con Ant en Leopard.