De la BD
Código Java:
Ver originalpublic List
<Factura
> cargarFacturas
(String estado
) { List<Factura> facturas = new ArrayList<>();
try {
Class.forName(properties.getProperty("driver"));
connection
=DriverManager.
getConnection(properties.
getProperty("url"),
properties.getProperty("usuario"), properties.getProperty("contrasena"));
connection.setAutoCommit(false);
PreparedStatement statement
= connection.
prepareStatement("select * from factura where estado = ?").
statement.setString(1, estado);
while(rs.next()) {
Factura factura = new Factura(rs.getString("numero"), rs.getString("fecha"), rs.getString("hora"), rs.getString("estado"), rs.getString("cliente"), rs.getString("domicilio"));
facturas.add(factura);
}
}catch(SQLExcpetio ex) {
//excepcion aqui
}
return facturas;
}
Código Java:
Ver originalpublic List
<Factura
> buscarFactura
(String estado
) { List<Factura> encontradas = new ArrayList<>();
//facturas es un arraylist de la clase
if(facturas.isEmpty())
facturas = consultas.cargarFacturas(estado);
encontradas = facturas;
else {
for(factura ft: facturas) {
//Sin el try catch con NullPointerException salta una excepcion por puntero nulo
//Por lo que verifique la lista al cargar datos de la bd
if(ft.getEstado().equals(estad)) {
encontradas.add(ft);
}
}
if(encontradas.isEmpty()) {
encontradas = consultas.cargarFacturas(estado);
facturas.addAll(encontradas);
}
}
return encontradas;
}
Es solo el recorrido del arraylist el que da el problema asi como lo puse aqui salta NullPointerException todas las veces que hace la comparacion en el recorrido de la lista, pero igual saca los datos.
cuando lo encierro en un try catch no entra a la excepcion, solo desaparece el error por arte de magia. En la carga de la bd verifique todas las facturas que se creaban comprarando si era nulo o no y verificando que los datos estubieran, y todo estaba bien.
Tambien ejecute el debugger e hice el seguimiento paso a paso (ya me duelen los dedos de presionar el f7 y f8) y con el debugguer tampoco muestra el error, solo al momento de ejecucion, como dije antes, sin el try catch.
incluso al inicio de la funcion hice lo siguiente para verificar que no hallan datos nulos
Código Java:
Ver originalfor(int i = 0; i < facturas.size(); i++) {
if(facturas.get(i) == null) {
System.
out.
println("es nulo en "+i
); facturas.remove(i);
}
}
Y no mostro un solo dato nulo.