17 de septiembre de 2009

Nuevo Servicio de Java para Reporte

Aqui mejore un poco el servicio de java para reporte
espero q les sirva!!

import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
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 net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

import java.util.*;
import java.io.*;
import java.net.URL;
import org.hibernate.Session;
import com.*;
import com.wavemaker.runtime.RuntimeAccess;

public class ReportGenerator {

public void getReport(String urlReporte,int param1,String param2) throws Exception {
try {
//para traer la conexion del servicio de base de datos
MiServicioBD service = (MiServicioBD) RuntimeAccess.getInstance().getService(MiServicioBD.class);
service.begin();
Session session = service.getDataServiceManager().getSession();

Map parameters = new HashMap();
parameters.put("param1",new Integer(param1));
parameters.put("param2",param2);

//buscando el jasper
URL fileUrl = this.getClass().getResource(urlReporte+".jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(fileUrl.openStream());
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, session.connection());

//copiando el reporte a la carpeta pdf que esta adentro de webapproot
String camino[]=(getClass().getResource("/").toString()).split("nombre_de_tu_proyecto");
System.out.println("camino"+camino[0]);
JasperExportManager.exportReportToPdfFile(jasperPrint,camino[0].replaceAll("file:/","")+"nombre_de_tu_proyecto/webapproot/pdf/"+urlReporte+".pdf");

} catch (Exception e) {
e.printStackTrace();
}

}//fin metodo getReport

}//fin clase


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
luego desde la vista solo tienes que abrir despues que se ejecute el serviceVariable

serviceVariable3Success: function(inSender, inData) {
window.open("pdf/elecciones1.pdf");
},

3 comentarios:

Doris Rush-Lopez dijo...

¡Hola!

¡Gracias por tanto ayuda! Leí mucho, pero como tengo poca experiencia en wavemaker y nada en java y jasper, no entiendo como usar esta ayuda. Puede ayudarme? Lo que hay escrito aquí es lo que hay que añadir a algo o es para copiar en algún lado?

¡Gracias!

Doris Rush-Lopez
New Jersey, USA
drl@gotwick.com

TRD dijo...

una pregunta

estoy probando este codigo java
funcion excelente

pero con el comando window.open
el abre el archivo antiguo

que puedo hacer para espere hasta que se genere el nuevo archivo y luego ejecute abrir el mismo

Unknown dijo...

puedes agregar la fecha en el nombre del archivo y asi abrir las mas actual.

Mis cosas

Powered By Blogger