It is possible to join 3 ArrayList into a collection and then send it as datasource to a report. Or do you have another way to do it?
I have 3 ArrayList of 3 objects, I wanted the information from these lists all together in one report.
Method that generates report:
public void gerarRelatorio(List list, int numeroRelatorio) {
JasperReport report = null;
try {
InputStream inputStreamReal = getClass().getResourceAsStream("/br/com/xml/relatorio/RelatorioXml.jrxml");
report = JasperCompileManager.compileReport(inputStreamReal);
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE, null, ex);
}
try {
JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(list));
JasperExportManager.exportReportToPdfFile(print,
"C:\relatorios1/RelatorioClientes" + "0000" + numeroRelatorio + ".pdf");
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE, null, ex);
}
}
Code where you pass the values of the 3 lists to one and sends it to the report:
JFileChooser chooser = new JFileChooser();
// Possibilita a seleção de vários arquivos
chooser.setMultiSelectionEnabled(true);
// Apresenta a caixa de diálogo
chooser.showOpenDialog(null);
//ListaAuxiliar <----------------
List<List> listaAuxiliar = new ArrayList<List>();
// 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();
LeitorXml parser = new LeitorXml();
LeitorXml1 parser1 = new LeitorXml1();
LeitorXml2 parser2 = new LeitorXml2();
try {
/* List<Cliente> */
listaContatos = (ArrayList<UnimedGuia>) parser.realizaLeituraXML(caminho);
listaContatosCabecalho = (ArrayList<UnimedGuiaCabecalho>) parser1.realizaLeituraXML(caminho);
listaContatosLote = (ArrayList<UnimedGuiaLote>) parser2.realizaLeituraXML(caminho);
System.out.println("Valores: " + listaContatos);
System.out.println("Valores1: " + listaContatosCabecalho);
System.out.println("Valores2: " + listaContatosLote);
//Adiciona todas as listas <--------------------
lista.add(listaContatos);
lista.add(listaContatosCabecalho);
lista.add(listaContatosLote);
listaAuxiliar.add(lista);
//System.err.println("Lista Auxiliar: "+ listaAuxiliar1);
System.out.println("Teste Ao Juntar Listas: "+lista);
} 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();
}
}
//Enviar o relatório
int nRel = 0;
for (List lst : listaAuxiliar) {
System.out.println("Numero do rel: " + nRel);
System.out.println("LST: "+lst);
gerarRelatorio(lst, nRel);
nRel++;
}
iswhatappearsinOutput,whenIgiveSystem.out.println("LST: "+lst);
and then when it enters the method to generate the report it gives it that:
: