Pessoal, eu tenho as seguintes classes:
public class Cidade {
private String cidade;
// get e set
}
public class Estado {
private String estado;
private Collection<Cidade> cidades;
public Estado (String estado, Collection<Cidade> cidades) {
this.estado = estado;
this.cidades = cidades;
}
// get e set
}
public class Pais {
private String pais;
private Collection<Estado> estados;
public Pais(String pais, Collection<Estado> estados) {
tthis.pais = pais;
this.estados = estados;
}
// get e set
}
Estou tentando gerar um relatório de países que tem um sub-relatório de estados e este por sua vez possui um sub-relatório de cidades. Para popular os dados no relatório estou usando JRBeanCollectionDataSource. O problema é que não estou conseguindo passar as listas como parâmetro para os sub-relatórios. Quando crio um field para o atributo estados da classe Pais dá uma ClassCastException, mesmo eu mapeando esse field como java.lang.Object. Alguém poderia me dar uma dica de como passar as listas para o sub-relatório de estados e depois de como recuperar a lista de cidade e passar para o outro sub-relatório?
O meu código para criar e exibir o relatório é o seguinte:
package paises;
import java.util.ArrayList;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
public class Run {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
ArrayList<Pais> paises = new ArrayList<Pais>();
ArrayList<Estado> estados = new ArrayList<Estado>();
ArrayList<Cidade> cidades = new ArrayList<Cidade>();
cidades.add(new Cidade("Florianópolis"));
cidades.add(new Cidade("São José"));
estados.add(new Estado("Santa Catarina", cidades));
cidades = new ArrayList<Cidade>();
cidades.add(new Cidade("Curitiba"));
cidades.add(new Cidade("Londrina"));
estados.add(new Estado("Paraná", cidades));
cidades = new ArrayList<Cidade>();
cidades.add(new Cidade("São Paulo"));
cidades.add(new Cidade("Campinas"));
estados.add(new Estado("São Paulo", cidades));
paises.add(new Pais("Brasil", estados));
estados = new ArrayList<Estado>();
cidades = new ArrayList<Cidade>();
cidades.add(new Cidade("New York"));
estados.add(new Estado("N. Y.", cidades));
cidades = new ArrayList<Cidade>();
cidades.add(new Cidade("San Diego"));
estados.add(new Estado("California", cidades));
paises.add(new Pais("Estados Unidos", estados));
String arquivoRelatorio = "/home/thiago/testeireport/TesteSub_Principal";
JasperPrint relatorio = JasperFillManager.fillReport(arquivoRelatorio + ".jasper", new HashMap(), new JRBeanCollectionDataSource(paises));
JasperViewer.viewReport(relatorio, false);
}
}
Muito obrigado pela atenção

