My Thread only runs 2 times

Asked

Viewed 47 times

1

I have a method that takes several files from a directory lists them in a table and generates a report for each file. I put a thread in this method and now it only picks up 2 files and stops. Where can I be missing:

Method:

 private void getFiles() {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                fileChooser.setTitle("Selecione os Demonstrativos");
                List<File> files = fileChooser.showOpenMultipleDialog(new Stage());
                //File[] files = chooser.getSelectedFiles();
                Task tarefaCargaPg = new Task() {
                    @Override
                    protected Object call() throws Exception {
                        if (files != null) {
                            for (File argumento : files) {
                                System.err.println("Argumentos: " + argumento.getPath());
                                caminho = argumento.getPath();
                                LeitorXmlCabecalho leitorCabecalho = new LeitorXmlCabecalho();
                                LeitorXmlGlosaLote leitorGlosa = new LeitorXmlGlosaLote();
                                LeitorXmlLote leitorLote = new LeitorXmlLote();
                                LeitorXmlPagamento leitorPagamento = new LeitorXmlPagamento();
                                LeitorXmlPagamentoLista leitorListaPagamento = new LeitorXmlPagamentoLista();
                                try {
                                    listaContatosPL = (ArrayList<UnimedPagamentoLista>) leitorListaPagamento.realizaLeituraXML(caminho);
                                    listaContatoslt = leitorLote.realizaLeituraXML(caminho);
                                    listaGlosa = leitorGlosa.realizaLeituraXML(caminho);
                                    pagamento = leitorPagamento.realizaLeituraXML(caminho);
                                    cabecalho = leitorCabecalho.realizaLeituraXML(caminho);
                                    listaCabecalho.add(cabecalho);
                                    listaPagamento.add(pagamento);
                                    listaAuxiliar.add(listaContatoslt);
                                    String dd = argumento.getName();
                                    ListarArquivo arq = new ListarArquivo();
                                    arq.setArquivo(dd);
                                    listaA.add(arq);
                                    atualizar(listaA);

                                } 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.");
                                    JOptionPane.showMessageDialog(null, "Formato do Arquivo incorreto!: \n" + e, "ERRO!", JOptionPane.ERROR_MESSAGE);
                                    e.printStackTrace();
                                } catch (IOException e) {
                                    System.out.println("O arquivo não pode ser lido.");
                                    JOptionPane.showMessageDialog(null, "Arquivo não pode ser lido!: \n" + e, "ERRO!", JOptionPane.ERROR_MESSAGE);
                                    e.printStackTrace();
                                }

                                for (List<UnimedLote> lst : listaAuxiliar) {
                                    String nomePrestador = listaCabecalho.get(nRel).getNomePrestador();
                                    String[] as = nomePrestador.split("/");
                                    nomePrestador = as[0];
                                    RelatorioExcel r = new RelatorioExcel();
                                    //String dataSistema = dataSistema();
                                    nomeArquivo = nomePrestador + "_" + dataSistema + "_" + nRel;
                                    codArquivoPrestador = listaCabecalho.get(nRel).getCodigoPrestador();
                                    caminhoExcel = r.geraExcell(listaPagamento.get(nRel), listaContatosPL, listaCabecalho.get(nRel),
                                            nomeArquivo, lst, listaGlosa);
                                    codPrestador = Long.parseLong(codArquivoPrestador);
                                    boolean arquivoSalvo = salvarArquivos(caminhoExcel, ext, nomeArquivo, codPrestador);
                                    if (arquivoSalvo) {
                                        System.out.println("SUCESSO");
                                        ArquivoDAO arquivoDao = new ArquivoDAO();
                                        Thread.sleep(1000);
                                        //arquivoDao.enviarEmail(codPrestador, nomeArquivo);
                                    } else if (!arquivoSalvo) {
                                        System.out.println("Erro");
                                    }
                                    nRel++;
                                }
                            }
                        } else {
                            System.out.println("Cancelado");
                        }
                        return null;
                    }
                };
                Thread t = new Thread(tarefaCargaPg);
                t.setDaemon(true);
                t.start();

            }

        });

    }

I am using Javafx.

1 answer

0


Problem solved, the error was happening because of this loop:

  for (List<UnimedLote> lst : listaAuxiliar) {

I took it off and it worked.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.