logo

Scriptlets de Jasper Reports

En este post voy a mostrar como realizar un Scriptlet y usarlo en iReports.

A continuación, veremos lo fácil que es filtrar y transformar esos datos si conoces el lenguaje, si usas ellenguaje xPath para filtrar o transformar esos datos es necesario usar Scriptlets.

Un Scriptlet para Jasper Reports es una clase Java que hereda de JRDefaultScriptlet, los métodos que creemos en esta clase estarán disponibles para usarlos en nuestro informe.

Primer paso

Empezaremos explicando, que hay que hacer para crear este Scriptlet de ejemplo vamos a crear un fichero llamado CalendarioScriptlet.java en un directorio llamado calendario, con dos métodos, uno que dice el día de la semana en el que cae el día uno de un mes y el otro método dice el número de días que tiene un mes.

Este es el código:

package calendario;
import net.sf.jasperreports.engine.JRAbstractScriptlet;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import java.util.*;
public class CalendarioScriptlet extends JRDefaultScriptlet {
public Integer primerDiaMes(String mes, String anno) throws JRScriptletException{
Calendar cal = new GregorianCalendar();
cal.set(Integer.parseInt(anno), Integer.parseInt(mes)-1, 1);
int num = cal.get(Calendar.DAY_OF_WEEK );
return num;
}
public Integer numeroDiaMes(String mes, String anno) throws JRScriptletException{
Calendar cal = new GregorianCalendar();
cal.set(Integer.parseInt(anno), Integer.parseInt(mes)-1, 1);
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DATE, -1);
int num = cal.get(Calendar.DAY_OF_MONTH );
return num;
}
}

Segundo paso

En segundo lugar, esta es la clase que hemos creado para usar en nuestro informe, para poder usarlo tenemos que compilar el java. Para poder compilar el scriptlet tienes que tener las librerías de jasperreports, puedes descargarlo desde aquí, busca el .jar.

Tercer paso

Si nos situamos en el directorio padre del directorio calendario en el que esta CalendarioScriptlet.java, y tienes la librería de jasper en /home/usuario/report/jasperreports-3.7.2.jar puedes compilar así:

javac -classpath /home/usuario/report/jasperreports-3.7.2.jar calendario/CalendarioScriptlet.java

y puedes crear la librería .jar de tu Scriptlet así:

jar cf calendarioScriptlet.jar calendario/CalendarioScriptlet.class

Con esto tenemos calendarioScriptlet.jar.

Cuarto paso:

A continuación, vamos a ver lo que tenemos que hacer en iReport para poder usar el Scriptlet. Primero vamos a las propiedades del informe.

Scriptlets de Jasper Reports

 

 

 

Aquí tenemos que asegurarnos que el lenguaje es Java y poner la clase del Scriptlet.

Scriptlets de Jasper Reports

 

 

 

Y en el campo import poner también el nombre de la clase.

Scriptlets de Jasper Reports

 

 

 

Quinto paso:

Ahora vamos a Herramientas>Opciones para añadir al classpath nuestra librería, para poder ejecutarlo en iReport. Podemos añadir al classpath directamente calendarioScriptlet.jar o el directorio que lo contiene, si queremos ejecutar el informe desde otro programa tendremos que copiar la librería al PATH del sistema o copiarla junto con el resto de las librerías.

 

 

De esta manera, con esto ya podemos usar las clases de nuestro Scriptlet en el informe, podemos usarlo por ejemplo en un field, teniendo en cuenta que el tipo de dato que devuelve sea el mismo que el tipo de dato del field o haciendo algún tipo de casting. O incluso, podemos usarlo para filtrar los datos, clickando el botón “Filter expression…” en la ventana de la consulta del informe.

Para llamar a un método de nuestra clase tenemos que llamarla sobre el parámetro $P{REPORT_SCRIPTLET}, por ejemplo para conocer el número de días de el mes de febrero del año 2010 lo podemos hacer así:
$P{REPORT_SCRIPTLET}.numeroDiaMes("2","2010")

Resumen:

Para concluir, con esto hemos visto como crear y usar un Scriptlets en iReports, este Scriptlet en concreto lo he creado para realizar un informe tipo calendario así que pronto subiré otro post con la explicación del informe y el ejemplo de como usar este Scriptlet.

Fuente: http://angelmoya.es/openerp/scriptlets-de-jasper-reports/

Además, también le adjuntamos el enlace a nuestra web, donde podrá encontrar más información de su interés, haciendo clic aquí.

Scriptlets de Jasper Reports