Olá pessoal,
Nao estou conseguindo resolver este problema do Ireport com Java. Se alguem souber de alguma dica, fico grato pela ajuda.
Segue abaixo a listagem dos meus fontes para alguem se basear.
O relatorio é simples, lista codigo, nome, lacre e numero de pacotes das agencias. Os meus dados devem ser enviados sem
utilizacao de SQL, pois estao em outro tipo de arquivo. Deve-se utilizar JRDataSource.
Preciso tambem esclarecer melhor a fonte de dados do Ireport (esta meio obscuro!).
Antes da emissao do relatorio
Passou dentro do criacaoDosDados
Exception in thread “main” java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)
at teste.GerarRelatorio.gerarRelatorio(GerarRelatorio.java:17)
at teste.GerarRelatorio.main(GerarRelatorio.java:25)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
= = = = = = = = = = = = = = = = = = = = = = =
Abaixo segue a listagem das minhas classes necessarias para a geracao do relatorio.
-
-
-
-
-
-
-
-
-
INTERFACE JRDataSource * * * * * * * * * *
-
-
-
-
-
-
-
-
import net.sf.jasperreports.engine.JRField;
public interface JRDataSource {
public Object getFieldValue(JRField jrFields);
public boolean next();
}
-
-
-
-
-
-
-
-
-
Classe Agencia * * * * * * * * * *
-
-
-
-
-
-
-
-
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()));
}
private String inteiroParaString(int kl) {
String texto = Integer.toString(numero);
kl = kl - texto.length();
while (kl > 0) {
texto = “0” + texto;
kl–;
}
return ( texto );
}
public void alteraOrdenacao() {
ordena = (! ordena);
}
//====-- – – – – – – – – – – – – – --====
//====-- Testa o conteudo antes da conversao para inteiro --====
//====-- – – – – – – – – – – – – – --====
private int setaInteiro(String white) {
if (white.equals("")) return 0;
else return Integer.parseInt(white);
}
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; }
public String getPaco() { return paco; }
public void setPaco(String paco) { this.paco = paco; }
public String getLacr() { return lacr; }
public void setLacr(String lacr) { this.lacr = lacr; }
//public void setLacr(String lacr) { this.lacr = setaInteiro(lacr); }
@Override
public String toString() {
String nomes = getCage();
nomes += getNome();
return nomes;
}
}
-
-
-
-
-
-
-
-
-
Classe AgenciaJRDataSource * * * * * * * * * *
-
-
-
-
-
-
-
-
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;
}
}
-
-
-
-
-
-
-
-
-
Classe JRDataSourceFabrica * * * * * * * * * *
-
-
-
-
-
-
-
-
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;
}
}
-
-
-
-
-
-
-
-
-
Classe GerarRelatorio * * * * * * * * * *
-
-
-
-
-
-
-
-
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 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(); }
}
}
= = = = = = = =