ArrayIndexOutOfBound em classe de relatório [RESOLVIDO]

Aê pessoal… um amigo meu que manja de PHP, começou a desenvolver os Relats lá no trampo com o IReport… tava dando uma ajudada nele, e havíamos consertado vários erros… só que esse último de fato não consegui achar o erro mesmo… ele tem essa classe

[code]package firstreport;
import java.sql.*;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRPrintPage;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class SecoundReport {

private static JasperPrint jp;
private static ArrayList page = new ArrayList();
private static SecoundReport sr = new SecoundReport();

public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(“13832800/2008”);
array.add(“13829094/2008”);
array.add(“13829097/2008”);
array.add(“13829098/2008”);
array.add(“160295/2008”);
//array.add(“160280/2008”);
//array.add(“160298/2008”);
//array.add(“160274/2008”);
//array.add(“160270/2008”);
//array.add(“160267/2008”);
try {
receberParametros(array);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
Logger.getLogger(SecoundReport.class.getName()).log(Level.SEVERE, null, ex);
}

}

public static Connection getConnection( ) throws ClassNotFoundException, SQLException {
String driver = “org.postgresql.Driver”;
String url = “jdbc:postgresql://192.168.200.41:5432/siig_teste”;
String user = “apsuser”;
String password = “wc35v@kvy#&12”;
Class.forName(driver);
Connection con = DriverManager.getConnection( url, user, password );
return con;
}

public static void receberParametros(ArrayList array) throws Exception{

HashMap guia = new HashMap();

for(String i : array) {
guia.put(“NUM_GUIA”, i);
geraRelatorio(guia);

//System.out.println(guia);
}

/* Invoca o método para visualizar o relatório */
visualizarReport();

}

public static void geraRelatorio(HashMap aParam) throws Exception {
Connection con = getConnection();

adicionaPaginasRelatorio(aParam, con);

/* Desenha a primeira página do relatório */
jp = JasperFillManager.fillReport( “./jasper/guia.jasper”, aParam, con );

/* Remover a primeira página do relatório */
jp.removePage(0);

for(int cont = 0; cont < page.size(); cont++){

/* Adicionar as páginas ao relatório JasperPrint (jp) */
jp.addPage(page.get(cont));

}

/* Exporta o relatório para o PDF */
JasperExportManager.exportReportToPdfFile( jp, “./jasper/tmp/ImpressaoGuia.pdf” );

}

public static void adicionaPaginasRelatorio(HashMap parameters, Connection con) throws JRException, Exception {
/* Adiciona páginas ao relatório */
page.add((JRPrintPage) JasperFillManager.fillReport( “./jasper/guia.jasper”, parameters, con ).getPages().get(0));

}

public static void visualizarReport() throws JRException, Exception {

/* Visualizar o relatório na tela */
JasperViewer jrv = new JasperViewer(jp);
jrv.setVisible(true);

}

}[/code]

Quando ele executa dá um ArrayIndexOutOfBound na lata a partir do 4º índice do Array de nome array… se ficar até 4 não dá o erro, mas colocou o 5º elemento, o erro espoca na lata… Poutz… depurando a aplicação dá pra ver que o erro pipoca nessa linha

page.add((JRPrintPage) JasperFillManager.fillReport( "./jasper/guia.jasper", parameters, con ).getPages().get(0));

e ainda vai lá no ArrayList no método RangeCheck, que é onde ele estoura o erro retornando index = 0…

Mas poutz… travei aí… se puderem no olhômetro me dar uma luz do ocorrido (porque to sem poder testar isso aqui em casa) ficarei grato…

Valew Galera :wink:

{EDIT}

Era porque as Guias passadas de parâmetro ao relatório, não estavam cadastradas no Banco de Dados

Valew mais uma vez… :wink:

Depois de um feriadão a disposição é maior… hehehhe

Abraços :wink: