Esta clase se encarga de realizar la consulta en la bd que muestra la sgt inf a continuacion, esta ordernado por el campo 1
Cita:
Mi clase se encargara de obtener el km total , tenemos que separar el campo pk, como pkinicial y pkfinal que perteneScan al mismo codigo, y asi poder hacer la resta es decir km=pkinicial - pk finalCODIGO F. INICIAL F. FINAL CAUSA PK
174367 12/11/2009 08:56:00 12/11/2009 11:57:00 CAUSA: CIRCULACIÓN. 63,5
174367 12/11/2009 08:56:00 12/11/2009 11:57:00 CAUSA: CIRCULACIÓN. 64,2
174391 12/11/2009 09:29:00 12/11/2009 13:42:00 CAUSA: CIRCULACIÓN. 75
174946 12/11/2009 22:48:00 13/11/2009 00:16:00 CAUSA: AVERÍA. 138,5
174367 12/11/2009 08:56:00 12/11/2009 11:57:00 CAUSA: CIRCULACIÓN. 63,5
174367 12/11/2009 08:56:00 12/11/2009 11:57:00 CAUSA: CIRCULACIÓN. 64,2
174391 12/11/2009 09:29:00 12/11/2009 13:42:00 CAUSA: CIRCULACIÓN. 75
174946 12/11/2009 22:48:00 13/11/2009 00:16:00 CAUSA: AVERÍA. 138,5
Cita:
El codigo me hace la resta correctamente hasta el penultimo registro, el ultimo registro solo tiene un subsucodigo, y esto genera que salte la excepcion, ya que no encuentra con quien compararlo. como podria evitar esto?, que cuando no encuentro el codigo2 o inc2 solo tome en cuenta el codigo 1, y que el km=0; (cuando solo existe un subcodigo tiene que restarlo por su mismo pk es por eso que siempre estos caso sera 0 el resultado de km ,) el error siempre nada cuando es el ultimo registro y solo tiene un subcodigo......query ...........
PreparedStatement pstmt = consolaSQL.prepareStatement(query);
Suceso suceso;
for(ResultSet resultado = pstmt.executeQuery(); resultado.next(); ListaIncidencias.add(suceso))
{
suceso = new Suceso();
suceso.setSuc_codigo(new Integer(resultado.getInt("suc_codigo")));
suceso.setSuc_version(new Integer(resultado.getInt("suc_version")));
new GregorianCalendar();
Calendar calendario = GregorianCalendar.getInstance();
suceso.setInicio(resultado.getTimestamp("suc_fecha hora_ini"));
suceso.setModificacion(resultado.getTimestamp("suc _fechahora_fin"));
new GregorianCalendar();
Calendar fechainicio = GregorianCalendar.getInstance();
new GregorianCalendar();
Calendar fechamodificacion = GregorianCalendar.getInstance();
fechainicio.setTimeInMillis(resultado.getTimestamp "suc_fechahora_ini").getTime());
fechamodificacion.setTimeInMillis(resultado.getTim estamp("suc_fechahora_fin").getTime());
suceso.setFechainicio(fechainicio);
suceso.setFechamodificacion(fechamodificacion);
suceso.setCausa(resultado.getString("ddcau_descrip cion"));
suceso.setTipo(resultado.getString("ddtip_codigo") );
suceso.setCarretera(resultado.getString("ddcar_car retera"));
suceso.setPk(new Integer(resultado.getInt("pto_pk")));
suceso.setProvincia(resultado.getString("ddprov_pr ovincia"));
suceso.setNivel(resultado.getString("ddnse_nivel_s ervicio"));
System.out.print(query);
}
consolaSQL.close();
}
catch(SQLException e)
{
System.err.println("Tenemos un problemita en la select :)! ");
System.err.println(e.getSQLState());
}
bbdd.cierraConexion();
return ListaIncidencias;
}
public ArrayList acomodar(ArrayList ListaIncidenciaTratar)
{ ArrayList ListaNuevo=new ArrayList();
int i=0;
int km=0;
for( i=0;i<ListaIncidenciaTratar.size();i++)
{
Suceso inc1=(Suceso)ListaIncidenciaTratar.get(i);
Suceso inc2=(Suceso)ListaIncidenciaTratar.get(i+1);
if (inc1.getSuc_codigo().equals(inc2.getSuc_codigo()) )
{ km=Math.abs(inc1.getPk().intValue()-inc2.getPk().intValue());
inc1.setKm(km);
inc1.setPk_inicial(inc1.getPk());
inc1.setPk_final(inc2.getPk());
}
else
{ km=Math.abs(inc1.getPk().intValue()-inc1.getPk().intValue());
inc1.setKm(km);
inc1.setPk_inicial(inc1.getPk());
inc1.setPk_final(inc1.getPk());
i=i-1;
}
ListaNuevo.add(inc1);
System.out.println("suc_codigoINC1"+inc1.getSuc_co digo());
System.out.println("suc_codigoICN2"+inc2.getSuc_co digo());
System.out.println("suc_version"+inc1.getSuc_versi on());
System.out.println("suc_version"+inc2.getSuc_versi on());
System.out.println("fechainicio"+inc1.getInicio()) ;
System.out.println("fechafin"+inc1.getModificacion ());
System.out.println("tipo :"+inc1.getTipo());
System.out.println("causa"+inc1.getCausa());
System.out.println("nivel"+inc1.getNivel());
System.out.println("provincia"+inc1.getProvincia() );
System.out.println("pk inicial= "+inc1.getPk_inicial());
System.out.println("pk final= "+inc1.getPk_final());
System.out.println("km= "+inc1.getKm());
System.out.println("Carretera= "+inc1.getCarretera());
System.out.print("ListaIncidenciaTratar.indexOf(i) "+ListaIncidenciaTratar.lastIndexOf(i));
System.out.print("ListaIncidenciaTratar.indexOf(i) "+ListaIncidenciaTratar.lastIndexOf(i+1));
if((i+1)==ListaIncidenciaTratar.size())
break;
i=i+1;
}
return ListaNuevo;
}
}
PreparedStatement pstmt = consolaSQL.prepareStatement(query);
Suceso suceso;
for(ResultSet resultado = pstmt.executeQuery(); resultado.next(); ListaIncidencias.add(suceso))
{
suceso = new Suceso();
suceso.setSuc_codigo(new Integer(resultado.getInt("suc_codigo")));
suceso.setSuc_version(new Integer(resultado.getInt("suc_version")));
new GregorianCalendar();
Calendar calendario = GregorianCalendar.getInstance();
suceso.setInicio(resultado.getTimestamp("suc_fecha hora_ini"));
suceso.setModificacion(resultado.getTimestamp("suc _fechahora_fin"));
new GregorianCalendar();
Calendar fechainicio = GregorianCalendar.getInstance();
new GregorianCalendar();
Calendar fechamodificacion = GregorianCalendar.getInstance();
fechainicio.setTimeInMillis(resultado.getTimestamp "suc_fechahora_ini").getTime());
fechamodificacion.setTimeInMillis(resultado.getTim estamp("suc_fechahora_fin").getTime());
suceso.setFechainicio(fechainicio);
suceso.setFechamodificacion(fechamodificacion);
suceso.setCausa(resultado.getString("ddcau_descrip cion"));
suceso.setTipo(resultado.getString("ddtip_codigo") );
suceso.setCarretera(resultado.getString("ddcar_car retera"));
suceso.setPk(new Integer(resultado.getInt("pto_pk")));
suceso.setProvincia(resultado.getString("ddprov_pr ovincia"));
suceso.setNivel(resultado.getString("ddnse_nivel_s ervicio"));
System.out.print(query);
}
consolaSQL.close();
}
catch(SQLException e)
{
System.err.println("Tenemos un problemita en la select :)! ");
System.err.println(e.getSQLState());
}
bbdd.cierraConexion();
return ListaIncidencias;
}
public ArrayList acomodar(ArrayList ListaIncidenciaTratar)
{ ArrayList ListaNuevo=new ArrayList();
int i=0;
int km=0;
for( i=0;i<ListaIncidenciaTratar.size();i++)
{
Suceso inc1=(Suceso)ListaIncidenciaTratar.get(i);
Suceso inc2=(Suceso)ListaIncidenciaTratar.get(i+1);
if (inc1.getSuc_codigo().equals(inc2.getSuc_codigo()) )
{ km=Math.abs(inc1.getPk().intValue()-inc2.getPk().intValue());
inc1.setKm(km);
inc1.setPk_inicial(inc1.getPk());
inc1.setPk_final(inc2.getPk());
}
else
{ km=Math.abs(inc1.getPk().intValue()-inc1.getPk().intValue());
inc1.setKm(km);
inc1.setPk_inicial(inc1.getPk());
inc1.setPk_final(inc1.getPk());
i=i-1;
}
ListaNuevo.add(inc1);
System.out.println("suc_codigoINC1"+inc1.getSuc_co digo());
System.out.println("suc_codigoICN2"+inc2.getSuc_co digo());
System.out.println("suc_version"+inc1.getSuc_versi on());
System.out.println("suc_version"+inc2.getSuc_versi on());
System.out.println("fechainicio"+inc1.getInicio()) ;
System.out.println("fechafin"+inc1.getModificacion ());
System.out.println("tipo :"+inc1.getTipo());
System.out.println("causa"+inc1.getCausa());
System.out.println("nivel"+inc1.getNivel());
System.out.println("provincia"+inc1.getProvincia() );
System.out.println("pk inicial= "+inc1.getPk_inicial());
System.out.println("pk final= "+inc1.getPk_final());
System.out.println("km= "+inc1.getKm());
System.out.println("Carretera= "+inc1.getCarretera());
System.out.print("ListaIncidenciaTratar.indexOf(i) "+ListaIncidenciaTratar.lastIndexOf(i));
System.out.print("ListaIncidenciaTratar.indexOf(i) "+ListaIncidenciaTratar.lastIndexOf(i+1));
if((i+1)==ListaIncidenciaTratar.size())
break;
i=i+1;
}
return ListaNuevo;
}
}
Muchas gracias!, espero que alguien me pueda ayudar