Prezados colegas, boa noite,
Estou com o problema ainda nao solucionado NullPointerException, ocasionado
pela execução de um relatório que utiliza IReport, invocado pelo Java.
Abaixo descrevo os passos seguidos para a construção do referido relatório no
IReport, pois acho que o erro esta na construção deste.
1- Serão listados quatro campos conforme lay-out abaixo
Código Nome da Agencia Lacre Pacotes
xxxx aa---------------------------aa xxxxxxx xxx
xxxx aa---------------------------aa xxxxxxx xxx
2- Procedimentos feito no IReport.
2.1- Foram criados os quatro campos (FIELDS), todos String.
cage, nome, lacr e paco (TUDO MINUSCULO)
2.2- Foram criados no Detail, os quatro campos correspondentes:
$F{cage}
$F{nome}
$F{lacr}
$F{paco}
2.3- Criação do DataSource (ATENCAO, aqui estao as minhas duvidas)!!!!
2.3.1- Tentei criar os tipos abaixo e nenhum deles funcionou no Java.
CustomJRDataSource
Empty data source
JavaBeans set DataSource
** Gostaria que me apontassem qual o tipo a ser definido, conforme a
mnha aplicação abaixo descrita. Podem citar todos os passos neces-
arios para a criação, inclusive com o TEST.
2.4- Compilação do relatório (arquivo .jasper foi gerado).
3- Procedimentos feitos no aplicativo Java.
Os diretórios foram colocados corretamente, e a execução gerou a excessao
NullPointerException. O arquivo .Jasper foi localizado, pelo contrario a mensagem seria FileNotFound.
Abaixo estão os fontes para quem puder analisar e fazer funcionar,
Grato a todos que colobararem.
public class Agencia implements Comparable {
private String cage;
private String nome;
private String paco;
private String lacr;
private int numero;
private static boolean ordena;
public Agencia() {
//
}
public Agencia(String cage, String nome, String lacr, String paco) {
this.cage = cage;
this.nome = nome;
this.lacr = lacr;
this.paco = paco;
}
@Override
public int compareTo(Agencia outra) {
if (ordena == true) { return (getNome().compareTo(outra.getNome())); }
else return 0;
//else return (getCage.compareTo(outra.getCage()));
}
public String getCage() { return cage; }
public void setCage(String cage) { this.cage = cage; }
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
?.
}
= = = = = = = = = = = = = = = =
import net.sf.jasperreports.engine.JRField;
public interface JRDataSource {
public Object getFieldValue(JRField jrFields);
public boolean next();
}
= = = = = = = = = = = = = = =
import java.util.Iterator;
import java.util.Vector;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
public class AgenciaJRDataSource implements JRDataSource {
private Iterator iterator;
private Agencia cursor;
public AgenciaJRDataSource(Vector agencia) {
super();
iterator = agencia.iterator();
}
public boolean next() throws JRException {
boolean retorno = iterator.hasNext();
if (retorno) { cursor = iterator.next(); }
return retorno;
}
public Object getFieldValue(JRField nome) throws JRException {
Agencia agencia = cursor;
if (nome.getName().equals(“cage”)) { return agencia.getCage(); }
if (nome.getName().equals(“nome”)) { return agencia.getNome(); }
if (nome.getName().equals(“lacr”)) { return agencia.getLacr(); }
if (nome.getName().equals(“paco”)) { return agencia.getPaco(); }
return null;
}
}
= = = = = = = = = = = = = =
import java.util.Vector;
import net.sf.jasperreports.engine.JRDataSource;
public class AgenciaJRDadosFabrica {
private static JRDataSource dados;
public static JRDataSource criacaoDosDados() {
if (dados == null) {
String cage = “1908”;
String nome = “CSO BH”;
String lacr = “7234578”;
String paco = “1”;
Agencia ag = new Agencia(cage, nome, lacr, paco);
Vector vitor = new Vector();
vitor.add(ag);
cage = “0012”;
nome = “SETE LAGOAS”;
lacr = “1234678”;
paco = “10”;
ag = new Agencia(cage, nome, lacr, paco);
vitor.add(ag);
cage = “0020”;
nome = “MATOZINHOS”;
lacr = “4444444”;
paco = “7”;
ag = new Agencia(cage, nome, lacr, paco);
vitor.add(ag);
cage = “0022”;
nome = “PRUDENTE DE MORAIS”;
lacr = “3245671”;
paco = “4”;
ag = new Agencia(cage, nome, lacr, paco);
vitor.add(ag);
//= = = = = =
dados = new AgenciaJRDataSource(vitor);
System.out.println(“Passou dentro do criacaoDosDados”);
} else System.out.println(“Passou FORA do criacaoDosDados”);
return dados;
}
}
= = = = = = = = = = = = = = = =
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;
public class GerarRelatorio {
public static void gerarRelatorio(JRDataSource source) throws JRException {
Map map = new HashMap();
String jaspa = “…/dist/Folha_A4.jasper”;
String visao = “…/dist/Folha_A4.jrprint”;
jaspa = “…/teste/dist/Folha_A4.jasper”;
JasperFillManager.fillReport(jaspa, map, source);
JasperViewer.viewReport(visao, false);
}
public static void main (String[] args) {
try {
System.out.println(“Antes da emissao do relatorio”);
GerarRelatorio.gerarRelatorio(AgenciaJRDadosFabrica.criacaoDosDados());
System.out.println("Depois da emissao do relatorio");
}catch (JRException e) { e.printStackTrace(); }
}
}
= = = = = = = = = =