Re: Reportes con jasperReport

250 views
Skip to first unread message

Francisco Javier

unread,
Jul 31, 2013, 10:57:18 AM7/31/13
to wavemake...@googlegroups.com
Bueno, el verano me confunde y creo que borre los correos del hilo
Aqui va la continuacion
He creado esto a partir de crear un servicio java

package com.informe;

import com.wavemaker.runtime.
javaservice.JavaServiceSuperClass;
import com.wavemaker.runtime.service.annotations.ExposeToClient;
import org.hibernate.Session;
import com.wavemaker.runtime.RuntimeAccess;
import com.wavemaker.runtime.server.DownloadResponse;
import java.net.URL;
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.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;
import java.util.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.lang.String;
import java.io.File;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;


@ExposeToClient
public class Legal extends JavaServiceSuperClass {

    public Legal() {
       super(INFO);
    }

    public String sampleJavaOperation() {
       String result  = null;
       try {
          
           URL fileUrl = this.getClass().getResource("/home/admin/WaveMaker 6.5.3.Release/projects/Legal/webapproot/resources/jasper/report2.jrxml"); 
        JasperDesign jasperDesign =JRXmlLoader.load(fileUrl.openStream());
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null, null);
   
        JasperViewer.viewReport(jasperPrint);
          

          log(INFO, "Starting sample operation");
          result = "Servicio ejecutado";   //esto es solo para comprobar que se ejecuto
  
    log(INFO, "Returning " + result);
       } catch(Exception e) {
          log(ERROR, "The sample java service operation has failed", e);
       }
      return result;
         }

y me da este error

6. ERROR in /services/informes/src/com/informe/Legal.java (at line 49) JasperPrint jasperPrint = JasperFillManager.fillReport("/home/admin/WaveMaker 6.5.3.Release/projects/Legal/webapproot/resources/jasper/report2.jrxml",null, null);
^^^^^^^^^^
 The method fillReport(String, Map, Connection) is ambiguous for the type JasperFillManager

URL  lo pongo con el path absoluto y no se si lo encuentra o no

¿Relativo a que directorio es esa direccion?

y lo demas ni idea




2013/7/31 francisco f <zara...@gmail.com>
He creado esto a partir de crear un servicio java

package com.informe;

import com.wavemaker.runtime.javaservice.JavaServiceSuperClass;
import com.wavemaker.runtime.service.annotations.ExposeToClient;


import org.hibernate.Session;
import com.wavemaker.runtime.RuntimeAccess;
import com.wavemaker.runtime.server.DownloadResponse;
import java.net.URL;
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.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;
import java.util.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.lang.String;
import java.io.File;

import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;


@ExposeToClient
public class Legal extends JavaServiceSuperClass {

    public LegalizacionesAT() {
       super(INFO);
    }

    public String sampleJavaOperation() {
       String result  = null;
       try {
          
           URL fileUrl = this.getClass().getResource("/home/admin/WaveMaker 6.5.3.Release/projects/Legal/webapproot/resources/jasper/report2.jrxml"); 
        JasperDesign jasperDesign =JRXmlLoader.load(fileUrl.openStream());
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null, null);
   
        JasperViewer.viewReport(jasperPrint);
          
          log(INFO, "Starting sample operation");
          result = "Hello World";
  
    log(INFO, "Returning " + result);
       } catch(Exception e) {
          log(ERROR, "The sample java service operation has failed", e);
       }
      return result;
         }

y me da este error

6. ERROR in /services/informes/src/com/informe/LegalizacionesAT.java (at line 49) JasperPrint jasperPrint = JasperFillManager.fillReport("/home/admin/WaveMaker 6.5.3.Release/projects/LegalizacionesAT/webapproot/resources/jasper/report2.jrxml",null, null);
^^^^^^^^^^
 The method fillReport(String, Map, Connection) is ambiguous for the type JasperFillManager

URL  lo pongo con el path absoluto y no se si lo encuentra o no

¿Relativo a que directorio es esa direccion?

y lo demas ni idea


saludos

--
Has recibido este mensaje porque estás suscrito al grupo "WaveMaker Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a wavemaker-hisp...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a wavemake...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/wavemaker-hispano.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Giuseppe

unread,
Jul 31, 2013, 11:08:04 AM7/31/13
to wavemake...@googlegroups.com
Ahora no puedo probarlo, pero el path basta que pongas a partir del resources.

Has chequeado los posts de Manuel como te han comentado en los foros?

Enviado desde mi iPad

/Giuseppe

francisco f

unread,
Aug 1, 2013, 3:17:21 AM8/1/13
to wavemake...@googlegroups.com
He mirado todos los correos, videos y demas (lo que ya no se si entendi algo)

He bajado los ejemplos y la verdad, no me ha funcionado ninguno.

Ahora consegui que compilase pero mada mas.

En el wm.log solo me da este error
INFO: validateJarFile(/home/admin/WaveMaker 6.5.3.Release/projects/Legal1/webapproot/WEB-INF/lib/servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

Asi es como lo tengo ahora

import com.tramitesdb.TramitesDB;

@ExposeToClient
public class LegalizacionesAT extends JavaServiceSuperClass {


    public LegalizacionesAT() {
       super(INFO);
    }

    public String sampleJavaOperation() {
       String result  = null;

       try {
          
TramitesDB service=(TramitesDB)RuntimeAccess.getInstance().getService(TramitesDB.class);
service.begin();
Session session = service.getDataServiceManager().getSession();
Map parameters = new HashMap();

        URL fileUrl = this.getClass().getResource("resources/jasper/report2.jrxml");

        JasperDesign jasperDesign =JRXmlLoader.load(fileUrl.openStream());
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(),session.connection());

   
        JasperViewer.viewReport(jasperPrint);
          
          log(INFO, "Starting sample operation");
          result = "Servicio ejecutado y fichero supuesto creado";

  
    log(INFO, "Returning " + result);
       } catch(Exception e) {
          log(ERROR, "El servicio de informes ha fallado, chachannnnnnnn", e);
       }
      return result;
    
    }

No tiene ningun parametro a pasar al informe

francisco f

unread,
Aug 1, 2013, 6:51:38 AM8/1/13
to wavemake...@googlegroups.com
Aspecto final funcionando
Lo de la mayúscula en la BD al principio me mató.


@ExposeToClient
public class Legal extends JavaServiceSuperClass {

    public Legal() {
       super(INFO);
    }

    public String sampleJavaOperation() {
       String result  = null;

       try {
          
TramitesDB service=(TramitesDB)RuntimeAccess.getInstance().getService(TramitesDB.class); // acordarse de que la primera debe ser mayúscula

service.begin();
Session session = service.getDataServiceManager().getSession();
Map parameters = new HashMap();

     URL fileUrl = this.getClass().getResource("report2.jasper");  // esto ha tenido guasa, el directorio base es Legal/webapproot/WEB-INF/classes/com/informes
    
   JasperReport jasperReport = (JasperReport)JRLoader.loadObject(fileUrl);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,session.connection()); // esto es un informe sin parámetros

     JasperViewer.viewReport(jasperPrint);
          
          log(INFO, "Starting sample operation");
          result = "Servicio ejecutado y fichero supuesto creado";
  
    log(INFO, "Returning " + result);
       } catch(Exception e) {
          log(ERROR, "El servicio de informes ha fallado, chachannnnnnnn", e);
         result = "El servicio de informes ha fallado, chachannnnnnnn";
       }
      return result;
    
    }

Con esto funciona medio bien, digo medio porque el java este es inestable  que da gusto, no se si depende del equipo, la versión o que.
Así se quedará de momento, que aún queda por ver como pasar parámetros y generar subinformes del subinforme , etc etc.

Por cierto ¿que diferencia hay entre pasar el fichero jrxml y compilarlo o pasarle ya el fichero compilado?

Del fileUrl como se extrae la ruta completa, y pasarla a una variable para verla en un campo texto.

Reply all
Reply to author
Forward
0 new messages