Mostrando entradas con la etiqueta download response. Mostrar todas las entradas
Mostrando entradas con la etiqueta download response. Mostrar todas las entradas

20 de noviembre de 2009

JasperReports con DownloadResponse

Version mejorada de Reportes en Jasper devolviendo con DownloadResponse para llamarlo desde una url


import com.*;
import org.hibernate.Session;
import com.wavemaker.runtime.RuntimeAccess;
import com.wavemaker.runtime.server.DownloadResponse;
import java.net.URL;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;

public class GeneradorReporte extends com.wavemaker.runtime.javaservice.JavaServiceSuperClass {
public DownloadResponse getReport() throws Exception {
DownloadResponse ret=new DownloadResponse();
ConfigurableMimeFileTypeMap mimeFileTypeMap = new ConfigurableMimeFileTypeMap();
try {
//para recoger la conexion de la base de datos
Dbescolar service = (Dbescolar) RuntimeAccess.getInstance().getService(Dbescolar.class);
service.begin();
Session session = service.getDataServiceManager().getSession();
//para enviar parametros al reporte
/*Map parameters = new HashMap();
parameters.put("id_facultad",new Integer(id_facultad));
parameters.put("facultad",facultad);*/
//mi direccion del archivo de jasper
URL fileUrl = this.getClass().getResource("mirepo.jasper");
//para cargar el jasper
JasperReport report2 = (JasperReport)JRLoader.loadObject(fileUrl);

//para cargar: la conexion de la base de datos al reporte, parametros y el archivo jasper
JasperPrint jasperPrint = JasperFillManager.fillReport(report2,null,session.connection());
//exportar el proyecto a PDF
ByteArrayOutputStream out = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
//para cargar el PDF como un respuesta de descarga
ret.setContentType(mimeFileTypeMap.getContentType("mirepo.pdf"));
ret.setContents(new ByteArrayInputStream(out.toByteArray()));
ret.setFileName("mirepo.pdf");
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}

}


y lo puede llamar con el link
"services/GeneradorReporte.download?method=getReport"

y en tu navegador seria
http://localhost:8094/miproyecto/services/GeneradorReporte.download?method=getReport


Espero que les sirva




Mis cosas

Powered By Blogger