ArrayLista<MinhaClasse> para JRResultSetDataSource

4 respostas
D

Ola galera…

Tenho um ArrayList e gostaria de mostrar o mesmo em um relatorio Jasper, qual a melhor forma de fazer?
Creio que tenho que passar meu Array para um DataSource, mas não sei como fazer-lo.

Desde já agradeço a atenção a todos. :smiley:

4 Respostas

cristianomariano
JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(colecaoProcessoBean);
D

Critiano fiz como Informado.

cristianomariano:
JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(colecaoProcessoBean);

Deu o Seguinte Erro na Conversão:

symbol  : constructor JRResultSetDataSource(java.util.List<relatorios.comercial.Ficha>)
location: class net.sf.jasperreports.engine.JRResultSetDataSource
                JRResultSetDataSource jrRS = new JRResultSetDataSource( lista );
Note: E:\ProjetosJava\Netbeans\BudnyWeb\src\relatorios\comercial\FichaTecnicaMultNivel.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

segue minha classe:

/*
 * FichaTecnicaMultNivel.java
 *
 * Created on 18 de Setembro de 2007, 16:26
 */

package relatorios.comercial;

import conexao.Conexao;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;

/**
 *
 * @author user
 * @version
 */
public class FichaTecnicaMultNivel extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        List<Ficha> lista = new ArrayList<Ficha>();
        List<Boolean> fichaAberta = new ArrayList<Boolean>();
        
        Connection conn = Conexao.getInstance().getConnection();
        String relatorioJASPER = null;
        relatorioJASPER = "/WEB-INF/classes/relatorios/comercial/FichaTecnicaMultNivel.jasper";
        
        ServletOutputStream servletOutputStream = response.getOutputStream();
        InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream(relatorioJASPER);
        StringBuffer sql = new StringBuffer();
        try {
            
            HashMap parameters = new HashMap();
            parameters.put("empresa", "Nome da Empresa");
            parameters.put("cnpj", "CNPJ Insc. Est.: ");
            parameters.put("usuario", "Usuario: " + request.getParameter( "usuario" ) );
            
            sql.append("select codpro, descripro, abrevuni, qtdadefct ");
            sql.append("from fichatec ");
            sql.append("left join produto on empresapro=empfct and codpro=componfct ");
            sql.append("left join unidade on empuni=empfct and coduni=unidpro ");
            sql.append("where empfct='001' ");
            sql.append("and codprofct='200010' ");
            sql.append("order by descripro;");
            
            Statement statement = conn.createStatement();
            ResultSet result = statement.executeQuery( sql.toString() );
            Integer i = 1;
            while ( result.next() ) {
                Ficha ficha = new Ficha();
                ficha.setMascara( i.toString() );
                i++;
                ficha.setCodpro( result.getString( 1 ) );
                ficha.setDescripro( result.getString( 2 ) );
                ficha.setUnidade( result.getString( 3 ) );
                ficha.setQtdade( result.getDouble( 4 ) );
                lista.add(ficha);
                fichaAberta.add(false);
            }
            int j = fichaAberta.indexOf(false);
            while ( j != -1){
                Ficha resultado = (Ficha) lista.get(j);
                fichaAberta.set(j, true);
                sql = new StringBuffer();
                sql.append("select codpro, descripro, abrevuni, ");
                sql.append(resultado.getQtdade()+"*qtdadefct as qtdadefct ");
                sql.append("from fichatec ");
                sql.append("left join produto on empresapro=empfct and codpro=componfct ");
                sql.append("left join unidade on empuni=empfct and coduni=unidpro ");
                sql.append("where empfct='001' ");
                sql.append("and codprofct='" + resultado.getCodpro() + "' ");
                sql.append("order by descripro;");
                
                statement = conn.createStatement();
                System.out.println(sql.toString());
                result = statement.executeQuery( sql.toString() );
                i = 1;
                while ( result.next() ) {
                    Ficha ficha = new Ficha();
                    ficha.setMascara( resultado.getMascara() + "." + i.toString() );
                    i++;
                    ficha.setCodpro( result.getString( 1 ) );
                    ficha.setDescripro( result.getString( 2 ) );
                    ficha.setUnidade( result.getString( 3 ) );
                    ficha.setQtdade( result.getDouble( 4 ) );
                    lista.add(ficha);
                    fichaAberta.add(false);
                }
                j = fichaAberta.indexOf(false);
            }
            if ( lista.size() &gt 0 ) {
                JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(lista);
                //JRResultSetDataSource jrRS = new JRResultSetDataSource( lista );
                JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameters, jrRS);
                response.setContentType("application/pdf");
                servletOutputStream.flush();
                servletOutputStream.close();             
            } else {
                response.setContentType("text/plain");
                response.getOutputStream().print( "Não  dados para exibir esse Boletim." + sql.toString() );
                return;
            }
            
            statement.close();
            result.close();
            
        } catch (Exception e) {
            // display stack trace in the browser
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            e.printStackTrace(printWriter);
            response.setContentType("text/plain");
            response.getOutputStream().print( stringWriter.toString() + " SQL: " + sql.toString() );
        }
        out.close();
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

class Ficha {
    private String mascara;
    private String codpro;
    private String descripro;
    private String unidade;
    private double qtdade;
    
    public Ficha(){}
    
    public Ficha(String mascara, String codpro, String descripro, double qtdade){
        this.mascara = mascara;
        this.codpro = codpro;
        this.descripro = descripro;
        this.qtdade = qtdade;
    }
    
    public String getMascara() {
        return mascara;
    }
    
    public void setMascara(String mascara) {
        this.mascara = mascara;
    }
    
    public String getCodpro() {
        return codpro;
    }
    
    public void setCodpro(String codpro) {
        this.codpro = codpro;
    }
    
    public String getDescripro() {
        return descripro;
    }
    
    public void setDescripro(String descripro) {
        this.descripro = descripro;
    }
    
    public double getQtdade() {
        return qtdade;
    }
    
    public void setQtdade(double qtdade) {
        this.qtdade = qtdade;
    }
    
    public void setUnidade(String unidade) {
        this.unidade = unidade;
    }
    
    
}
D

Problema resolvido.

Fiz da seguinte forma:

JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);

D

Problema resolvido.

Fiz da seguinte forma:

JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);

Criado 19 de setembro de 2007
Ultima resposta 19 de set. de 2007
Respostas 4
Participantes 2