error en IReport
Publicado por alvaro alcocer (5 intervenciones) el 09/08/2010 18:53:17
Hola, soy nuevo en IReport 3.7.1, me salta un error al correr un JRBean, me salta un error de Error filling print... Error retrieving field value from bean : visto_vuelta...
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -2 at java.lang.String.substring(String.java:1937) at saad.JRBeanDatosSocioEconomicos.getVisto_vuelta(JRBeanDatosSocioEconomicos.java:209)
El código es:
public class JRBeanDatosSocioEconomicos extends IJRBean{
private int id_cuso;
private java.util.Date fecha_ejecucion;
private String cod_usuario;
private String visto_num_exp;
private String visto_nombre;
private String visto_apellido1;
private String visto_apellido2;
private String visto_fecha_nacimiento;
private String visto_nacionalidad;
private String visto_num_id;
private String visto_vuelta;
private String vista;
public String getCod_usuario() {
return cod_usuario;
}
public void setCod_usuario(String cod_usuario) {
this.cod_usuario = cod_usuario;
}
public java.util.Date getFecha_ejecucion() {
return fecha_ejecucion;
}
public void setFecha_ejecucion(java.util.Date fecha_ejecucion) {
this.fecha_ejecucion = fecha_ejecucion;
}
public int getId_cuso() {
return id_cuso;
}
public void setId_cuso(int id_cuso) {
this.id_cuso = id_cuso;
}
public List getList(){
return JRBeanDatosSocioEconomicos.createBeanCollection();
}
public static List createBeanCollection(){
DbConnectionBroker pool =null;
List alData=new ArrayList();
try{
pool = IJRBean.getPool();
}catch (Exception e){
System.err.println(""+e);
e.printStackTrace();
}
Connection conn=pool.getConnection();
ResultSet rs = null;
PreparedStatement pstmt=null;
String query="select TAUD_CUSO_AUDITADAS.ID_AUD,TAUD_CUSO.ID_CUSO,TAUD_CUSO_AUDITADAS.FECHA_EJECUCION," +
"TAUD_CUSO_AUDITADAS.COD_USUARIO,TAUD_ENTIDAD.DESCRIPCION as ENTIDAD," +
"TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD as ID_DATO_ENTIDAD," +
"TAUD_DATO_ENTIDAD.DESCRIPCION as DATO,tvisualizado.VALOR_DATO as VALOR_DATO" +
" from TAUD_CUSO_AUDITADAS,tvisualizado,TAUD_DATO_ENTIDAD," +
"TAUD_ENTIDAD,TAUD_CUSO where TAUD_CUSO_AUDITADAS.ID_AUD=tvisualizado.ID_AUD" +
" and TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD=tvisualizado.ID_DATO_ENTIDAD" +
" and TAUD_ENTIDAD.ID_ENTIDAD= TAUD_DATO_ENTIDAD.ID_ENTIDAD and TAUD_CUSO.ID_CUSO=TAUD_CUSO_AUDITADAS.ID_CUSO" +
" and ((TAUD_CUSO.ID_CUSO=5) or (TAUD_CUSO.ID_CUSO=6) or (TAUD_CUSO.ID_CUSO=7)) " +
"order by TAUD_CUSO_AUDITADAS.ID_AUD";
//"order by TAUD_ENTIDAD.ID_ENTIDAD desc,TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD,TAUD_CUSO_AUDITADAS.ID_AUD desc";
try{
pstmt = conn.prepareStatement(query.toString());
//pstmt.setLong(1,this.uniqueId);
rs = pstmt.executeQuery();
JRBeanDatosSocioEconomicos datosSocioEconomicos=null;
int old_idCuso=-1;
while (rs.next()){
int id_Aud=rs.getInt("ID_AUD");
if (id_Aud!=old_idCuso){
if (datosSocioEconomicos!=null) alData.add(datosSocioEconomicos);
datosSocioEconomicos=new JRBeanDatosSocioEconomicos();
old_idCuso=id_Aud;
}
datosSocioEconomicos.setId_cuso(id_Aud);
datosSocioEconomicos.setCod_usuario(rs.getString("COD_USUARIO"));
String oracle_Date=rs.getString("FECHA_EJECUCION");
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date d=sdf.parse(oracle_Date);
datosSocioEconomicos.setFecha_ejecucion(d);
int id_dato_entidad=rs.getInt("ID_DATO_ENTIDAD");
switch (id_dato_entidad){
case 0:{
datosSocioEconomicos.setVisto_vuelta(rs.getString("VALOR_DATO"));
break;
}
case 2:{
datosSocioEconomicos.setVisto_nombre(rs.getString("VALOR_DATO"));
break;
}
case 3:{
datosSocioEconomicos.setVisto_apellido1(rs.getString("VALOR_DATO"));
break;
}
case 4:{
datosSocioEconomicos.setVisto_num_exp(rs.getString("VALOR_DATO"));
break;
}
case 6:{
datosSocioEconomicos.setVista(rs.getString("VALOR_DATO"));
break;
}
case 8:{
datosSocioEconomicos.setVisto_apellido2(rs.getString("VALOR_DATO"));
break;
}
case 9:{
datosSocioEconomicos.setVisto_fecha_nacimiento(rs.getString("VALOR_DATO"));
break;
}
case 10:{
datosSocioEconomicos.setVisto_nacionalidad(rs.getString("VALOR_DATO"));
break;
}
case 11:{
datosSocioEconomicos.setVisto_num_id(rs.getString("VALOR_DATO"));
break;
}
}//switch
}//while
if (datosSocioEconomicos!=null) alData.add(datosSocioEconomicos);
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
e.printStackTrace();
} finally {
try{
rs.close();
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
}
if (pstmt != null) {
try {pstmt.close();} catch (SQLException e) {System.err.println("HOLAS"+e);}
}
try{
pool.freeConnection(conn);
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
}
}
pool.destroy();
return alData;
}
public String getVisto_apellido1() {
return visto_apellido1;
}
public void setVisto_apellido1(String visto_apellido1) {
this.visto_apellido1 = visto_apellido1;
}
public String getVisto_apellido2() {
return visto_apellido2;
}
public void setVisto_apellido2(String visto_apellido2) {
this.visto_apellido2 = visto_apellido2;
}
public String getVisto_fecha_nacimiento() {
return visto_fecha_nacimiento;
}
public void setVisto_fecha_nacimiento(String visto_fecha_nacimiento) {
this.visto_fecha_nacimiento = visto_fecha_nacimiento;
}
public String getVisto_nacionalidad() {
return visto_nacionalidad;
}
public void setVisto_nacionalidad(String visto_nacionalidad) {
this.visto_nacionalidad = visto_nacionalidad;
}
public String getVisto_nombre() {
return visto_nombre;
}
public void setVisto_nombre(String visto_nombre) {
this.visto_nombre = visto_nombre;
}
public String getVisto_num_exp() {
return visto_num_exp;
}
public void setVisto_num_exp(String visto_num_exp) {
this.visto_num_exp = visto_num_exp;
}
public String getVisto_num_id() {
return visto_num_id;
}
public void setVisto_num_id(String visto_num_id) {
this.visto_num_id = visto_num_id;
}
public String getVisto_vuelta() {
if (this.visto_vuelta==null) return null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + this.visto_vuelta);
String[] pares=this.visto_vuelta.split(";");
Arrays.sort(pares);
ArrayList al=new ArrayList();
LinkedHashMap hm=null;
int old_id=-1;
int primero_visto=0;
for (int k=0;k<pares.length;k++){
String[] par=pares[k].split("=");
int id1=Integer.parseInt(par[0].substring(1,par[0].indexOf('_')));
int id2=Integer.parseInt(par[0].substring(par[0].indexOf('_')+1));
String par1=((par.length==2)?par[1]:"");
if ((id2==1)&&(par1.indexOf("SAAD")!=-1)){
//descartado
primero_visto=id1+1;
}
}
///creo tabla
for (int k=0;k<pares.length;k++){
String[] par=pares[k].split("=");
//aquí me da el error
int id1=Integer.parseInt(par[0].substring(1,par[0].indexOf('_')));
//
int id2=Integer.parseInt(par[0].substring(par[0].indexOf('_')+1));
String par1=((par.length==2)?par[1]:"");
if (id1<primero_visto) continue;//descartados
if (old_id!=id1){
old_id=id1;
if (hm!=null) al.add(hm);
hm=new LinkedHashMap();
}
switch (id2){
case 0:{
hm.put("Año", par1);
break;
}
case 1:{
hm.put("Tipo Renta", par1);
break;
}
case 2:{
hm.put("Concepto/Tipo de actividad", par1);
break;
}
case 3:{
hm.put("Cuantía anual/Rendimientos anuales", par1);
break;
}
case 4:{
hm.put("Comentarios", par1);
break;
}
}
}
if (hm!=null)al.add(hm);
FormatViewData fv=new FormatViewData();
return fv.formateaTabla(al);
}
public void setVisto_vuelta(String visto_vuelta) {
this.visto_vuelta = visto_vuelta;
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + this.visto_vuelta);
}
public String getVista() {
return vista;
}
public void setVista(String vista) {
this.vista = vista;
}
}
Esto debe ser porque en el método getVisto_vuelta() no te devuelve nada el String visto_vuelta, a cambio en el método setVisto_vuelta si que te devuelve valor, lo que me parece muy extraño. ¿Alguien me puede echar una mano?. Gracias de antemano
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -2 at java.lang.String.substring(String.java:1937) at saad.JRBeanDatosSocioEconomicos.getVisto_vuelta(JRBeanDatosSocioEconomicos.java:209)
El código es:
public class JRBeanDatosSocioEconomicos extends IJRBean{
private int id_cuso;
private java.util.Date fecha_ejecucion;
private String cod_usuario;
private String visto_num_exp;
private String visto_nombre;
private String visto_apellido1;
private String visto_apellido2;
private String visto_fecha_nacimiento;
private String visto_nacionalidad;
private String visto_num_id;
private String visto_vuelta;
private String vista;
public String getCod_usuario() {
return cod_usuario;
}
public void setCod_usuario(String cod_usuario) {
this.cod_usuario = cod_usuario;
}
public java.util.Date getFecha_ejecucion() {
return fecha_ejecucion;
}
public void setFecha_ejecucion(java.util.Date fecha_ejecucion) {
this.fecha_ejecucion = fecha_ejecucion;
}
public int getId_cuso() {
return id_cuso;
}
public void setId_cuso(int id_cuso) {
this.id_cuso = id_cuso;
}
public List getList(){
return JRBeanDatosSocioEconomicos.createBeanCollection();
}
public static List createBeanCollection(){
DbConnectionBroker pool =null;
List alData=new ArrayList();
try{
pool = IJRBean.getPool();
}catch (Exception e){
System.err.println(""+e);
e.printStackTrace();
}
Connection conn=pool.getConnection();
ResultSet rs = null;
PreparedStatement pstmt=null;
String query="select TAUD_CUSO_AUDITADAS.ID_AUD,TAUD_CUSO.ID_CUSO,TAUD_CUSO_AUDITADAS.FECHA_EJECUCION," +
"TAUD_CUSO_AUDITADAS.COD_USUARIO,TAUD_ENTIDAD.DESCRIPCION as ENTIDAD," +
"TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD as ID_DATO_ENTIDAD," +
"TAUD_DATO_ENTIDAD.DESCRIPCION as DATO,tvisualizado.VALOR_DATO as VALOR_DATO" +
" from TAUD_CUSO_AUDITADAS,tvisualizado,TAUD_DATO_ENTIDAD," +
"TAUD_ENTIDAD,TAUD_CUSO where TAUD_CUSO_AUDITADAS.ID_AUD=tvisualizado.ID_AUD" +
" and TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD=tvisualizado.ID_DATO_ENTIDAD" +
" and TAUD_ENTIDAD.ID_ENTIDAD= TAUD_DATO_ENTIDAD.ID_ENTIDAD and TAUD_CUSO.ID_CUSO=TAUD_CUSO_AUDITADAS.ID_CUSO" +
" and ((TAUD_CUSO.ID_CUSO=5) or (TAUD_CUSO.ID_CUSO=6) or (TAUD_CUSO.ID_CUSO=7)) " +
"order by TAUD_CUSO_AUDITADAS.ID_AUD";
//"order by TAUD_ENTIDAD.ID_ENTIDAD desc,TAUD_DATO_ENTIDAD.ID_DATO_ENTIDAD,TAUD_CUSO_AUDITADAS.ID_AUD desc";
try{
pstmt = conn.prepareStatement(query.toString());
//pstmt.setLong(1,this.uniqueId);
rs = pstmt.executeQuery();
JRBeanDatosSocioEconomicos datosSocioEconomicos=null;
int old_idCuso=-1;
while (rs.next()){
int id_Aud=rs.getInt("ID_AUD");
if (id_Aud!=old_idCuso){
if (datosSocioEconomicos!=null) alData.add(datosSocioEconomicos);
datosSocioEconomicos=new JRBeanDatosSocioEconomicos();
old_idCuso=id_Aud;
}
datosSocioEconomicos.setId_cuso(id_Aud);
datosSocioEconomicos.setCod_usuario(rs.getString("COD_USUARIO"));
String oracle_Date=rs.getString("FECHA_EJECUCION");
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date d=sdf.parse(oracle_Date);
datosSocioEconomicos.setFecha_ejecucion(d);
int id_dato_entidad=rs.getInt("ID_DATO_ENTIDAD");
switch (id_dato_entidad){
case 0:{
datosSocioEconomicos.setVisto_vuelta(rs.getString("VALOR_DATO"));
break;
}
case 2:{
datosSocioEconomicos.setVisto_nombre(rs.getString("VALOR_DATO"));
break;
}
case 3:{
datosSocioEconomicos.setVisto_apellido1(rs.getString("VALOR_DATO"));
break;
}
case 4:{
datosSocioEconomicos.setVisto_num_exp(rs.getString("VALOR_DATO"));
break;
}
case 6:{
datosSocioEconomicos.setVista(rs.getString("VALOR_DATO"));
break;
}
case 8:{
datosSocioEconomicos.setVisto_apellido2(rs.getString("VALOR_DATO"));
break;
}
case 9:{
datosSocioEconomicos.setVisto_fecha_nacimiento(rs.getString("VALOR_DATO"));
break;
}
case 10:{
datosSocioEconomicos.setVisto_nacionalidad(rs.getString("VALOR_DATO"));
break;
}
case 11:{
datosSocioEconomicos.setVisto_num_id(rs.getString("VALOR_DATO"));
break;
}
}//switch
}//while
if (datosSocioEconomicos!=null) alData.add(datosSocioEconomicos);
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
e.printStackTrace();
} finally {
try{
rs.close();
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
}
if (pstmt != null) {
try {pstmt.close();} catch (SQLException e) {System.err.println("HOLAS"+e);}
}
try{
pool.freeConnection(conn);
}catch (Exception e){
System.err.println("JRDiagnosticos::JRDiagnosticos() "+e);
}
}
pool.destroy();
return alData;
}
public String getVisto_apellido1() {
return visto_apellido1;
}
public void setVisto_apellido1(String visto_apellido1) {
this.visto_apellido1 = visto_apellido1;
}
public String getVisto_apellido2() {
return visto_apellido2;
}
public void setVisto_apellido2(String visto_apellido2) {
this.visto_apellido2 = visto_apellido2;
}
public String getVisto_fecha_nacimiento() {
return visto_fecha_nacimiento;
}
public void setVisto_fecha_nacimiento(String visto_fecha_nacimiento) {
this.visto_fecha_nacimiento = visto_fecha_nacimiento;
}
public String getVisto_nacionalidad() {
return visto_nacionalidad;
}
public void setVisto_nacionalidad(String visto_nacionalidad) {
this.visto_nacionalidad = visto_nacionalidad;
}
public String getVisto_nombre() {
return visto_nombre;
}
public void setVisto_nombre(String visto_nombre) {
this.visto_nombre = visto_nombre;
}
public String getVisto_num_exp() {
return visto_num_exp;
}
public void setVisto_num_exp(String visto_num_exp) {
this.visto_num_exp = visto_num_exp;
}
public String getVisto_num_id() {
return visto_num_id;
}
public void setVisto_num_id(String visto_num_id) {
this.visto_num_id = visto_num_id;
}
public String getVisto_vuelta() {
if (this.visto_vuelta==null) return null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + this.visto_vuelta);
String[] pares=this.visto_vuelta.split(";");
Arrays.sort(pares);
ArrayList al=new ArrayList();
LinkedHashMap hm=null;
int old_id=-1;
int primero_visto=0;
for (int k=0;k<pares.length;k++){
String[] par=pares[k].split("=");
int id1=Integer.parseInt(par[0].substring(1,par[0].indexOf('_')));
int id2=Integer.parseInt(par[0].substring(par[0].indexOf('_')+1));
String par1=((par.length==2)?par[1]:"");
if ((id2==1)&&(par1.indexOf("SAAD")!=-1)){
//descartado
primero_visto=id1+1;
}
}
///creo tabla
for (int k=0;k<pares.length;k++){
String[] par=pares[k].split("=");
//aquí me da el error
int id1=Integer.parseInt(par[0].substring(1,par[0].indexOf('_')));
//
int id2=Integer.parseInt(par[0].substring(par[0].indexOf('_')+1));
String par1=((par.length==2)?par[1]:"");
if (id1<primero_visto) continue;//descartados
if (old_id!=id1){
old_id=id1;
if (hm!=null) al.add(hm);
hm=new LinkedHashMap();
}
switch (id2){
case 0:{
hm.put("Año", par1);
break;
}
case 1:{
hm.put("Tipo Renta", par1);
break;
}
case 2:{
hm.put("Concepto/Tipo de actividad", par1);
break;
}
case 3:{
hm.put("Cuantía anual/Rendimientos anuales", par1);
break;
}
case 4:{
hm.put("Comentarios", par1);
break;
}
}
}
if (hm!=null)al.add(hm);
FormatViewData fv=new FormatViewData();
return fv.formateaTabla(al);
}
public void setVisto_vuelta(String visto_vuelta) {
this.visto_vuelta = visto_vuelta;
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + this.visto_vuelta);
}
public String getVista() {
return vista;
}
public void setVista(String vista) {
this.vista = vista;
}
}
Esto debe ser porque en el método getVisto_vuelta() no te devuelve nada el String visto_vuelta, a cambio en el método setVisto_vuelta si que te devuelve valor, lo que me parece muy extraño. ¿Alguien me puede echar una mano?. Gracias de antemano
Valora esta pregunta
0