Get index of an ArrayList to generate report in ireport

0

How do I get to the index of the list to pass pro ireport? Already tried to give a "get" of the error. This is my method that generates the report:

 public void gerarRelatorio(ArrayList list) {
    for (int i = 0; i < list.size(); i++) {
        JasperReport report = null;

        try {
            InputStream inputStreamReal = getClass().getResourceAsStream("/br/com/testexml/relatorio/Teste.jrxml");
            report = JasperCompileManager.compileReport(inputStreamReal);

        } catch (JRException ex) {
            Logger.getLogger(TesteView.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(list));
            JasperExportManager.exportReportToPdfFile(print,
                    "C:\relatorios/RelatorioClientes" + i + ".pdf");

        } catch (JRException ex) {
            Logger.getLogger(TesteView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Button event that selects xml:

JFileChooser chooser = new JFileChooser();

    // Possibilita a seleção de vários arquivos
    chooser.setMultiSelectionEnabled(true);

    // Apresenta a caixa de diálogo
    chooser.showOpenDialog(null);

    // Retorna os arquivos selecionados. Este método retorna vazio se
    // o modo de múltipla seleção de arquivos não estiver ativada.
    File[] files = chooser.getSelectedFiles();
    for (File argumento : files) {
        //System.err.println("Argumentos: " + argumento.getPath());
        caminho = argumento.getPath();

        LeitorXMLDOMMelhorado parser = new LeitorXMLDOMMelhorado();

        // lista = new ArrayList();
        try {

            /* List<Cliente> */
            contatos = (List<Cliente>) parser.realizaLeituraXML(caminho);

            for (Cliente contato : contatos) {
               // System.out.println(contato);
                lista.add(contato);
                gerarRelatorio(lista);
            }
            System.out.println("LISTA:"+lista.size());

        } catch (ParserConfigurationException e) {
            System.out.println("O parser não foi configurado corretamente.");
            e.printStackTrace();
        } catch (SAXException e) {
            System.out.println("Problema ao fazer o parse do arquivo.");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("O arquivo não pode ser lido.");
            e.printStackTrace();
        }

    }

Class that reads xml:

public class LeitorXMLDOMMelhorado {


public List<Cliente> realizaLeituraXML(String arquivoXML) throws ParserConfigurationException, SAXException, IOException{
    //fazer o parse do arquivo e criar o documento XML
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(arquivoXML);

    //Passo 1: obter o elemento raiz
    Element raiz = doc.getDocumentElement();
    System.out.println("O elemento raiz é: " + raiz.getNodeName());

    //Passo 2: localizar os elementos filhos da agenda
    NodeList listaContatos = raiz.getElementsByTagName("contato");

    List<Cliente> lista = new ArrayList<Cliente>(listaContatos.getLength());

    //Passo 3: obter os elementos de cada elemento contato
    for (int i=0; i<listaContatos.getLength(); i++){

        //como cada elemento do NodeList é um nó, precisamos fazer o cast
        Element elementoContato = (Element) listaContatos.item(i);

        //cria um objeto Contato com as informações do elemento contato
        Cliente contato = criaContato(elementoContato);
        lista.add(contato);
    }

    return lista;
}


public String obterValorElemento(Element elemento, String nomeElemento){
    //obtém a lista de elementos
    NodeList listaElemento = elemento.getElementsByTagName(nomeElemento);
    if (listaElemento == null){
        return null;
    }
    //obtém o elemento
    Element noElemento = (Element) listaElemento.item(0);
    if (noElemento == null){
        return null;
    }
    //obtém o nó com a informação
    Node no = noElemento.getFirstChild();
    return no.getNodeValue();
}


public Cliente criaContato(Element elemento){
    Cliente contato = new Cliente();
    contato.setCod(Integer.parseInt(elemento.getAttributeNode("id").getNodeValue()));
    contato.setNome(obterValorElemento(elemento,"nome"));
    contato.setProduto(obterValorElemento(elemento,"produto"));
    contato.setCpf(obterValorElemento(elemento,"cpf"));
    contato.setValorCompra(Float.parseFloat(obterValorElemento(elemento,"valor")));

    return contato;
}

}

    
asked by anonymous 13.04.2015 / 17:07

0 answers