I have a method that takes several files from a directory the lists in a table and generates a report for each file. I put a thread in this method and now it just picks up 2 files and stops. Where I might be going wrong:
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'm using JavaFX.