ArrayLista<MinhaClasse> para JRResultSetDataSource

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:

JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(colecaoProcessoBean);

Critiano fiz como Informado.

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:

[code]/*

  • 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(&quot;empresa&quot;, &quot;Nome da Empresa&quot;);
       parameters.put(&quot;cnpj&quot;, &quot;CNPJ Insc. Est.: &quot;);
       parameters.put(&quot;usuario&quot;, &quot;Usuario: &quot; + request.getParameter( &quot;usuario&quot; ) );
       
       sql.append(&quot;select codpro, descripro, abrevuni, qtdadefct &quot;);
       sql.append(&quot;from fichatec &quot;);
       sql.append(&quot;left join produto on empresapro=empfct and codpro=componfct &quot;);
       sql.append(&quot;left join unidade on empuni=empfct and coduni=unidpro &quot;);
       sql.append(&quot;where empfct='001' &quot;);
       sql.append(&quot;and codprofct='200010' &quot;);
       sql.append(&quot;order by descripro;&quot;);
       
       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(&quot;select codpro, descripro, abrevuni, &quot;);
           sql.append(resultado.getQtdade()+&quot;*qtdadefct as qtdadefct &quot;);
           sql.append(&quot;from fichatec &quot;);
           sql.append(&quot;left join produto on empresapro=empfct and codpro=componfct &quot;);
           sql.append(&quot;left join unidade on empuni=empfct and coduni=unidpro &quot;);
           sql.append(&quot;where empfct='001' &quot;);
           sql.append(&quot;and codprofct='&quot; + resultado.getCodpro() + &quot;' &quot;);
           sql.append(&quot;order by descripro;&quot;);
           
           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() + &quot;.&quot; + 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(&quot;application/pdf&quot;);
           servletOutputStream.flush();
           servletOutputStream.close();             
       } else {
           response.setContentType(&quot;text/plain&quot;);
           response.getOutputStream().print( &quot;Não há dados para exibir esse Boletim.&quot; + 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;
}

}
[/code]

Problema resolvido.

Fiz da seguinte forma:

JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);

Problema resolvido.

Fiz da seguinte forma:

JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);