Informe Jasper Report desde Java Bean

De ChuWiki


Una colección de Java Beans es una posible fuente de datos para Jasper Reports. Para usa una colección de Java Beans en Jasper Studio:

  1. Crear nuestro Bean y un FactoryBean que genere la colección de Bean que queremos en el informe.
  2. Generar un fichero jar con estas clases compiladas.
  3. Añadir el fichero jar' a Jasper Studio
  4. Crear un Data Adapter para la fuente "Collection of Java Beans".

Veamos todo esto con más detalle.

Java Bean y BeanFactory para nuestro informe Jasper Report[editar]

Con nuestro IDE favorito, creamos un Java Bean y una Factory Bean. Los siguientes pueden ser un ejemplo

public class Bean {
    private String name;
    private Date birthday;
    private String email;

    public Bean(){
        // No hace Nada
    }

    public Bean(String name, Date birthday, String email) {
        this.name = name;
        this.birthday = birthday;
        this.email = email;
    }
   
    /* Setters y Getters */
}
public class FactoryBean {
    private static String [] names = new String [] {"Pedro", "Antonio", "Isabel", "Lidia"};
    
    private static Date [] birthdays = new Date [] {new Date(2002,11,3),
            new Date(1997,4,22),
            new Date(1665,4,11),
            new Date(2001,2,23)};
    
    private static String [] mails = new String [] {"Pedro@gmail.com", "Antonio@gmail.com", 
            "Isabel@gmail.com", "Lidia@gmail.com"};
    
    public static Collection<Bean> create(){
        List<Bean> beans = new ArrayList<>();
        for (int i=0;i<names.length;i++) {
            beans.add(new Bean(names[i], birthdays[i], mails[i]));
        }
        return beans;
    }
}

Sobre el Bean nada que comentar. Sobre FactoryBean, sólo un detalle. Jasper Report nos pide que tenga un método público estático que nos devuelva una Collection de Bean o bien un array [] de Beans. Es nuestro método create().

Debemos generar un jar con estas dos clases.

Añadir nuestro Bean a Jasper Studio[editar]

El siguiente paso es añadir este jar a Jasper Studio. Podemos copiar o no el jar en la carpeta de nuestro proyecto Jasper. Bastará abrir el explorador de archivos de tu sistema operativo, buscar el jar, copiarlo (Ctrl-C o lo que corresponda) y luego en Jasper Studio, dentro de tu proyecto, seleccionar la carpeta que quieras si las tienes creadas y pegarlo (Ctrl-V o lo que corresponda). Si no has creado carpetas, puedes hacerlo directamente sobre tu proyecto.

Ahora toca indicarle a Jasper Studio que lo tenga en cuenta. Botón derecho del ratón sobre tu proyecto

"Build Path" -> "Configure Build Path ..."

Saldrá la siguiente ventana

Añadir beans a Jasper Studio
Añadir beans a Jasper Studio

Selecciona la pestaña Libraries y dentro de ella selecciona Classpaht. Se te habilitarán los botones para añadir jar. Si lo has copiado en tu proyecto Jasper Studio, puedes pulsar Add JARs... Si no lo has copiado, pulsa Add Externals JARs... La única diferencia entre ambas opciones es por donde te va a permitir navegar en el disco de tu ordenador.

En la imagen ya he añadido el jar con mi Bean y FactoryBean. Es jasperreports-examples-1.0-SNAPSHOT.jar.

Finalmente pulsa Apply and Close. Se cierra la ventana y en el árbol de nuestro proyecto Jasper Studio veremos una nueva carpeta References Libraries y dentro de ella nuestro jar

Crear el Data Adapter en Jasper Studio[editar]

Como hemos mencionado en crear un Data Adapter en Jasper Report, creamos un Data Adapter eligiendo como fuente de datos Collection of JavaBeans. Aparecerá la siguiente ventana

Configuración de Data Adapter Collection of Beans en Jasper Studio
Configuración de Data Adapter Collection of Beans en Jasper Studio
  • En Name hemos puesto un nombre
  • En Factory Class ... hemos puesto nuestra clase FactoryBean.
  • En The static method ... hemos puesto, sin paréntesis, el nombre del método public static de FactoryBean que devuelve la colección de Bean

Pulsar Finish y vamos al siguiente paso

Crear el informe con Jasper Studio[editar]

Tienes detalles en cómo diseñar un informe con Jasper Studio. Aquí mencionaremos por encima todos los pasos necesarios y detallaremos lo que afecta a un informe con java beans.

Vamos dando los siguientes pasos

  1. Crear el informe, click derecho en nuestro proyecto Jasper Studio y "New" -> "Jasper Report".
  2. En la ventana que aparece, seleccionamos la plantilla en blanco y "Next >".
  3. En la siguiente ventana ponemos un nombre a nuestra plantilla de informe y opcionalmente, seleccionamos en qué carpeta de nuestro proyecto queremos colocarlo. Pulsamos "Next >".
  4. En la siguiente ventana seleccionamos nuestro Data Source de Bean recién creado y pulsamos Next >".
  5. Nos mostrará una ventana indicando que está todo hecho. "Finish"

Ya deberíamos tener el informe listo par diseñar.

Tenemos ahora dos opciones. Podemos no querer usar un componente Table o podemos querer usarlo. Veamos ambas opciones.

Informe Jasper Beans sin Table[editar]

Tenemos que seleccionar qué campos del Bean queremos usar en el informe. Para ello, en la pestaña "Outline" de Jasper Studio, click derecho sobre el nodo principal del árbol, que es el nombre de nuestro informe y seleccionamos "Dataset and Query...". Nos aparecerá la siguiente ventana

Selección de campos de un Bean en Jasper Studio
Selección de campos de un Bean en Jasper Studio

En esa ventana hemos dado los siguientes pasos

  1. Seleccionar la pestaña Java Bean
  2. En Class Name poner el nombre de nuestra clase. Puedes buscarla con el botón con tres puntitos que hay en el lado derecho.
  3. Una vez hecho esto, te aparecerán en la caja de en medio los nombre de todos los campos de tu Bean. Selecciona los que te interesen para el informe y pulsa el botón "Add Selected field(s)"
  4. En la parte de abajo verás los campos con sus tipos.
  5. Pulsa "Ok" para cerrar la ventana.

Listo, tienes los campos disponibles en el nodo "Fields" de la pestaña "Outline" de Jasper Studio. Arrastrando estos "Fields" sobre la banda "Detail 1" del informe, podras ir diseñando el informe.

Informe Jasper Bean con Table[editar]

Un componente Table de Jasper Studio no puede usar directamente el Main Data Set del informe, así que no podríamos usar lo que acabamos de crear en el punto anterior. Vamos a crear un Data Set específico para el componente Table

  • En "Outline", botón derecho sobre el nodo raíz, que es el nombre de nuestro informe, y "Create Dataset".
  • En la ventana que aparece, le ponemos un nombre al Dataset y seleccionamos "Create new Dataset from ....".
  • En la siguiente ventana, seleccionamos el Data Adapter del Bean que creamos en los primeros pasos y cerramos la ventana.

Deberíamos ver en la pestaña "Outline" un nodo con el nombre del Dataset que acabamos de crear. Si lo expandimos, veremos que su campo Fields está vacío (no tiene hijos). Tenemos que seleccionar qué campos queremos.

  • En "Outline", click derecho sobre el nombre de nuestro Dataset y seleccionar "Dataset and Query...".
  • La ventana que aparece es igual a la que vimos en el punto anterior.
    • Seleccionar pestaña "Java Bean"
    • Poner nuestro Bean
    • Seleccionar los campos de interés y pulsar "Add Selected Fields"
    • Ok para cerrar la ventana.

Y ahora solo nos queda arrastrar el componente Table sobre la banda Detail 1

  • Aparece un formulario para elegir Dataset. Marcamos la opción "Create a Table using an existing Dataset" y elegimos el que acabamos de crear. Pulsamos "Next".
  • La siguiente ventana es importante
Elección de Dataset para Table
Elección de Dataset para Table
  • Selecciona "Use a JRDatasource expression" y escribe $P{REPORT_DATA_SOURCE}. Esto hace que el Dataset de la tabla tenga los mismos datos que el Dataset principal del informe, que está a su vez ligado a nuestro FactoryBean.
  • En la siguiente ventana verás la lista de campos disponibles. Desplaza a la derecha los que quieras que formen parte de tu tabla y pulsa "Next>".
  • En la siugiente ventana verás el diseño de tu tabla. Ponla a tu gusto y cierra la ventana.

Si previsualizas el informe podrás ver algo parecido a esto, según el diseño que hayas hecho

Previsualización del informe Jasper con Java Bean
Previsualización del informe Jasper con Java Bean

El siguiente paso es alimentar y generar el informe Jasper con Beans desde Java