Boa tarde, companheiros de trabalho.
Estou com o seguinte problema. eu estou desenvolvimento que precisa gerar um relatorio a partir de uma collection mais especificamente uma List. é um relatorio simples se tratando de consulta mas isso não vem ao caso.
eu estou gerando uma classe que cria a interface JRDatasource.
public class LotacaoJRDataSource implements JRDataSource{
private Iterator<Lotacao> iterator;
private Lotacao cursor;
public LotacaoJRDataSource(List<Lotacao> list) {
iterator = list.iterator();
}
@Override
public Object getFieldValue(JRField nome) throws JRException {
Lotacao lotacao = cursor;
if(nome.getName().equals("Código")){
return lotacao.getCodigo();
}
if(nome.getName().equals("Nome")) {
return lotacao.getNome();
}
if(nome.getName().equals("Gestor")){
List<Gestor> listGestor = lotacao.getGestor();
String gestores ="";
for(Gestor gestor: listGestor){
gestores = gestores + gestor.getNome() + "\n";
}
return gestores;
}
return null;
}
@Override
public boolean next() throws JRException {
boolean retorno = iterator.hasNext();
if(retorno){
cursor = iterator.next();
}
return retorno;
}
}
E uma classe que implementa uma factory para ser acessada junto ao ireport.
public class LotacaoJRDataSourceFactory {
private static JRDataSource data;
private static List<Lotacao> listLotacao;
public static JRDataSource createDatasource() {
if (data == null) {
data = new LotacaoJRDataSource(listLotacao);
}
return data;
}
public static List<Lotacao> getListLotacao() {
return listLotacao;
}
public static void setListLotacao(List<Lotacao> listLotacao) {
LotacaoJRDataSourceFactory.listLotacao = listLotacao;
}
}
Acredito que até aqui tudo bem. o problema me ocorre quando eu tento setar a classe factory no classpath do ireport. eu estou jogando diretamente a pasta onde está o arquivo e o metodo que é usado no ireport. acontece que o ireport lança um NoClassDefFoundError quando eu tento testar minha classe. e assim ela não encontra as variaveis que deveria encontrar para compilar meu relatorio. o que torna impossivel realizar esse pequeno relatorio no JasperReport. o que poderia fazer para acessar a minha factory. ja tentei de todas as formas que pude e não obtive exito. caso exista uma forma melhor de trabalhar com o JReport, pode sugerir tambem.
Obrigado desde já.