Galera procurei mas ta osso!!!
Tenho 3 classes Versao, indice e opcao;
Versao que contem list de indices e indices contem lista de opcao
ae fiz um data source para cada uma.
public class DataSourceVersao implements JRDataSource {
private Versao versao = null;
boolean irParaProximo = false;
private Versao valor = null;
public DataSourceVersao(Versao versao) {
this.versao = versao;
}
public Object getFieldValue(JRField campo) throws JRException {
if ("pesquisa".equals(campo.getName()))
return valor.getPesquisa().getNome();
if ("versao".equals(campo.getName()))
return (valor.getNome());
if ("indices".equals(campo.getName()))
return new DataSourceIndice(valor.getIndices());
return null;
}
public boolean next() throws JRException {
if (versao != null) {
valor = new Versao();
valor.setPesquisa(versao.getPesquisa());
valor.setNome(versao.getNome());
valor.setIndices(new ArrayList<Indice>());
valor.getIndices().addAll(versao.getIndices());
versao = null;
return true;
} else
return false;
}
}
depois
package net.compels.apl.datasource;
public class DataSourceIndice implements JRDataSource {
private Indice indice = null;
Iterator<Indice> itrIndice;
boolean irParaProximo = false;
public DataSourceIndice(List<Indice> indices) {
itrIndice = indices.iterator();
}
public Object getFieldValue(JRField campo) throws JRException {
if ("nome".equals(campo.getName()))
return indice.getNome();
if ("opcoes".equals(campo.getName()))
return new DataSourceOpcao(indice.getOpcoes());
return null;
}
public boolean next() throws JRException {
indice = itrIndice.hasNext() ? itrIndice.next() : null;
irParaProximo = (indice != null);
return irParaProximo;
}
}
depois
public class DataSourceOpcao implements JRDataSource {
private Opcao opcao = null;
Iterator<Opcao> itrOpcao;
boolean irParaProximo = false;
public DataSourceOpcao(List<Opcao> opcoes) {
itrOpcao = opcoes.iterator();
}
public Object getFieldValue(JRField campo) throws JRException {
if ("descricao".equals(campo.getName()))
return opcao.getDescricao();
return null;
}
public boolean next() throws JRException {
opcao = itrOpcao.hasNext() ? itrOpcao.next() : null;
irParaProximo = (opcao != null);
return irParaProximo;
}
}
até os indices foi de boa ele entra no construtor do datasource das opcoes, mas nao entra nem no metodo next e getfieldValue. Alguem ja conseguiu fazer, Segui o tutorial do futurani. mas nao sei o que acontece!!!