openxava / documentación / Generación de informes - Lección 1: Mi primer reporte

Video

En este video veremos cómo crear nuestro primer reporte, definir el controlador y la acción para generar el reporte en una aplicación OpenXava.

¿Problemas con la lección? Pregunta en el foro

Código

Puedes descargar el proyecto de esta lección. También puedes copiar el código que se usa en el video por aquí:

En el archivo controllers.xml:
<controller name="YourFirstEntity">
    <extends controller="Typical"/>
    <action name="printCustomReport" icon="printer" mode="list" 
        class="com.yourcompany.report.actions.PrintMyCustomReportAction">
    </action>
</controller>
En el archivo PrintMyCustomReportAction.java:
public class PrintMyCustomReportAction extends JasperReportBaseAction {

	@Override
	protected JRDataSource getDataSource() throws Exception {
		return new JREmptyDataSource();
	}

	@Override
	protected String getJRXML() throws Exception {
		return "MyCustomReport.jrxml";
	}

	@Override
	protected Map getParameters() throws Exception {
		return null;
	}

}


Transcripción

Hola, soy Mónica; en este curso vamos a ver cómo usar JasperSoft Studio para crear reportes pdf personalizados y generarlos en una aplicación OpenXava. En esta primera lección vamos a crear un reporte básico con JasperSoft Studio, y en OpenXava vamos a definir un controlador con una acción que al ejecutarlo, genere el reporte.
Primero vamos a ingresar al link que tenemos en la descripción del video para descargar JasperSoft Studio; vemos que al apretar el botón, nos pide crear una cuenta o loguearnos para descargar. Podemos crear una cuenta desde este botón, Join the community. Una vez que ya iniciemos la sesión, el botón ya dirá descargar, lo apretamos y seleccionamos la opción de acuerdo a nuestro sistema operativo. Ya descargado, lo ejecutamos para instalar JasperSoft Studio.
En JasperSoft Studio creamos un nuevo proyecto haciendo clic en create project; seleccionamos JasperReport Project y apretamos next. Le asignamos un nombre, por ejemplo MyReports. Cliqueamos en Finish. Para nuestro primer reporte vamos a mostrar únicamente un texto estático. Clic derecho en el proyecto, New, Jasper Report. Seleccionamos el reporte en blanco y apretamos Next. Ponemos my custom report como nombre, y apretamos Finish. A la derecha tenemos el panel de Basic Elements. Arrastramos Static text y lo ubicamos en la zona de Title del reporte. Haciéndole doble clic podemos editar el texto. Ponemos My custom report y guardamos.
Vamos a OpenXava Studio y creamos un nuevo proyecto desde OpenXava, New OpenXava Project. Le asignamos un nombre al proyecto, por ejemplo report. Cliqueamos finish. Esperamos un rato. OpenXava ya tiene las librerías necesarias para generar un reporte, así que no hace falta agregar ninguna. Listo. Por defecto, OpenXava genera la entidad YourFirstEntity, así que lo vamos a aprovechar. Iniciamos la aplicación. Copiamos el link y lo pegamos en el navegador. Iniciamos sesión con admin, admin. Vamos al modo lista del módulo YourFirstEntity. Nuestro objetivo es tener un botón en modo lista, que cuando lo apretamos nos muestre el reporte que creamos recién. Para esto necesitamos tener una acción que haga eso. Vamos al archivo controllers.xml ubicado en la carpeta source main resources xava. Aquí se declaran los controladores y sus acciones. Copiamos este código y lo pegamos debajo. En controller name ponemos YourFirstEntity, este debe tener el mismo nombre que el módulo donde va a ser usado. Dejamos que extienda del controlador Typical para mantener las acciones que ya existían. En action es donde tenemos que definir nuestra acción que en este caso es un botón para generar un pdf. En name asignamos un nombre que se va a mostrar en el botón. En icon ponemos printer. No vamos a usar atajos de teclado. Ponemos una nueva propiedad mode con valor list, que significa que se verá en modo lista. Class es la clase donde contiene la lógica de la acción.
Vamos a crear la acción. Hacemos clic derecho en source main java, New, package para crear un nuevo paquete. Lo llamaremos com.yourcompany.report.actions. Y creamos una nueva clase haciendo clic derecho en el paquete, New, Class. Lo vamos a llamar PrintMyCustomReportAction. Una vez creado, extendemos nuestra acción de la clase JasperReportBaseAction. Y guardamos para que se importe. Vemos que nos pide añadir métodos necesarios. Lo hacemos. Aquí nos añade 3 métodos. getDataSource, no lo usaremos en esta lección, pero es un método donde nunca podemos retornar nulo, ya que un reporte puede tener un data source vacío pero no nulo. getJRXML, aquí debemos definir el nombre de nuestro archivo jrxml que va a usar para generar el reporte. getParameters, aquí podemos enviarle parámetros al reporte para que los use. Habíamos dicho que no podemos retornar nulo en getDataSource, así que enviaremos un new JREmptyDataSource(). El nombre del reporte debe ser el mismo que vamos a usar, en nuestro caso, MyCustomReport.jrxml. Guardamos. Volvemos a controllers.xml y apuntamos a la clase de la acción. com.yourcompany.report.actions.PrintMyCustomReportAction. Guardamos. La acción está lista, lo único que nos falta es copiar el reporte en el proyecto de OpenXava. En Jasper studio copiamos nuestro reporte. Y en OpenXava creamos una nueva carpeta llamada reports en source main resources. Pegamos el reporte dentro de la carpeta y listo. Iniciamos nuevamente la aplicación.
Vamos al modo lista de YourFirstEntity y vemos que la acción se muestra aquí. Le damos clic y saldrá otra ventana con el reporte que creamos.
Fue bastante simple tener el botón para generar un reporte. Espero que el video te haya servido de guía. Si tienes alguna duda sobre esta lección, puedes preguntarnos por el foro, también puedes descargar el código de esta lección por el link del repositorio, ambos enlaces se encuentran en la descripción del video. Nos vemos en la próxima lección donde vamos a aprender cómo pasar parámetros del OpenXava al reporte y utilizarlos allí. Chao.