diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index f36170a..446e399 100644 Binary files a/dist/Programa Caja.jar and b/dist/Programa Caja.jar differ diff --git a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java index efa8772..a358bf2 100644 --- a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java @@ -40,16 +40,30 @@ import java.time.YearMonth; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +/** + * Objeto DAO que realiza las querys y mapeos necesarios del objeto EstadoResultado. En especifico + * esta implementacion se comunica con la base de datos SQLite + */ public class SQLiteIngresoDAO implements IngresoDAO { + + private static final Logger log = LogManager.getLogger(SQLiteIngresoDAO.class); private ConnectionHolder connectionHolder; public SQLiteIngresoDAO() { this.connectionHolder = new SQLiteConnectionHolder(); } + /** + * Obtiene todos los Ingreso + * + * @return Una lista con los Ingreso + */ @Override public List getAll() { + log.debug("Se intententaran conseguir todos los Ingreso"); List ingresosList = new ArrayList<>(); String query = "select * from ingresos"; @@ -83,15 +97,25 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir todos los Egreso", e); } + log.debug("Se consiguieron " + ingresosList.size() + " Ingreso"); return ingresosList; } + /** + * Obtiene la lista de Ingreso perteneciente a una Caja + * + * @param caja Caja a la que pertence los Ingreso buscados + * @return Una lista de ingreso, en caso que la caja sea Caja.EMPTY se retoranara una lista vacia. + */ @Override public List getByCaja(Caja caja) { + log.debug("Se intentara buscar los ingresos de la caja " + caja); List ingresosList = new ArrayList<>(); if (Caja.EMPTY == caja) { + log.debug("La Caja era Caja.EMPTY"); return ingresosList; } @@ -122,13 +146,22 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { - e.printStackTrace(); + log.error("Error al intentar buscar los Ingreso de la caja " + caja, e); } + log.debug("Se consiguieron " + ingresosList.size() + " Ingreso"); return ingresosList; } + /** + * Obtiene un Ingreso dado su id en la base de datos + * + * @param id de la fila de Ingreso en la base de datos + * @return Un Optional que contiene el Ingreso que puede estar vacio,esto porque no es 100% seguro + * que exista en la base de datos o que sea valido + */ @Override public Optional getById(int id) { + log.debug("Se intentara conseguir un Ingreso con id " + id); Ingreso ingreso = null; String query = "select * from ingresos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { @@ -162,12 +195,21 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } catch ( SQLException e) { + log.error("Error al intentar conseguir un Ingreso con el id " + id); } + log.debug("Se consiguio el Ingreso " + ingreso); return Optional.ofNullable(ingreso); } + /** + * Obtiene los Ingreso pertenecientes a un tipoIngreso + * + * @param tipoIngreso TipoIngreso al que pertenece los Ingreso deseados + * @return Lista con los ingreso. + */ @Override public List getByTipoIngreso(TipoIngreso tipoIngreso) { + log.debug("Se intentara conseguir los Ingreso con TipoIngreso" + tipoIngreso); List ingresosList = new ArrayList<>(); String query = "select ingresos.* from ingresos inner join tipos_ingreso on (ingresos.tipo_ingreso_id = tipos_ingreso.id) where ingresos.tipo_ingreso_id = ?"; try (Connection conn = connectionHolder.getConnection()) { @@ -197,14 +239,24 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir los Ingreso con tipoIngreso " + tipoIngreso); } + log.debug("Se consiguieron " + ingresosList.size() + " Ingresos"); return ingresosList; } + /** + * Obtiene la suma de los ingresos en una caja + * + * @param caja Caja a la que pertencen los ingresos a sumar + * @return la suma de los ingresos, en caso que la caja sea Caja.EMPTY siempre retoranara 0 + */ @Override public int getTotalIngreso(Caja caja) { + log.debug("Se intentara conseguir el total de ingreso en la caja " + caja); int total = 0; if (Caja.EMPTY == caja) { + log.debug("La caja era Caja.EMPTY"); return total; } @@ -219,12 +271,21 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir el total de ingreso en la caja " + caja); } + log.debug("Se el total de ingreso es " + total); return total; } + /** + * Obtiene la suma de ingresos en un mes + * + * @param mes Mes dentro del cual estan los ingresos + * @return la suma de los ingresos. + */ @Override public int getTotalIngresoMes(YearMonth mes) { + log.debug("Se intentara conseguir la suma de los ingreso en el mes " + mes); int total = 0; String query = "select sum(valor) from ingresos inner join caja on (ingresos.caja_id == caja.id) where caja.fecha between ? and ? and ingresos.tipo_ingreso_id != 5"; @@ -242,12 +303,21 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir la suma de los ingresos en el mes " + mes); } + log.debug("La suma de los ingresos es " + total); return total; } + /** + * Obtiene el total de ingresos con el tipo boleta exenta dentro de un mes + * + * @param mes Mes al cual pertenecen los ingresos + * @return La suma de los ingresos con el tipo boleta exenta en el mes + */ @Override public int getTotalExentasMes(YearMonth mes) { + log.debug("Se intentara conseguir el total de boletas exentas en el mes " + mes); int total = 0; String query = "select sum(valor) from ingresos inner join caja on (ingresos.caja_id == caja.id) where caja.fecha between ? and ? and ingresos.tipo_ingreso_id = 5"; @@ -264,12 +334,23 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir el total de boletas exentas en el mes " + mes); } + log.debug("El total conseguido es " + total); return total; } + /** + * Obtiene el total de ingresos en una caja, de un tipo especifico + * + * @param caja Caja a la que pertenen los ingresos + * @param tipoIngreso TipoIngreso al cual pertencen los ingresos + * @return La suma de los ingresos. + */ @Override public int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso) { + log.debug("Se intentara obtener el total de ingresos de la caja " + caja + " y el tipo " + + tipoIngreso); int total = 0; if (caja == Caja.EMPTY) { return total; @@ -286,15 +367,29 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar obtener el total de ingresos de la caja " + caja + " y el tipo " + + tipoIngreso); } + log.debug("Se obtuvo el total " + total); return total; } + /** + * Obtiene el primer numero inicial de ingreso de un tipo de ingreso, dentro de una caja. + * + * @param caja Caja a la que pertencen los ingreso + * @param tipoIngreso TipoIngreso al cual pertenecen los ingreso + * @return Un Optional que contiene el primer numero inicial de ingreso,este puede estar vacio ya + * que no es seguro que exista tal numero inicial. + */ @Override public Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { + log.debug("Se intentara conseguir el primer numero inicial de ingreso en la caja " + caja + + " de tipo " + tipoIngreso); String nroInicial = null; if (caja == Caja.EMPTY) { + log.debug("La caja era Caja.EMPY"); return Optional.ofNullable(nroInicial); } @@ -310,14 +405,29 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar conseguir el primer numero inicial de ingreso en la caja " + caja + + " de tipo " + tipoIngreso); } + log.debug("Se consiguio el primero numero inicial " + nroInicial); return Optional.ofNullable(nroInicial); } + /** + * Obtiene el ultimo numero final de ingreso de un tipo de ingrso, dentro de una caja + * + * @param caja Caja a la que pertencen los ingreso + * @param tipoIngreso TipoIngreso al cual pertenecen los ingreso + * @return Un Optional que contiene el ultimo numero final de ingreso, este puede estar vacio ya + * que no es seguro que exista tal numero final. + */ @Override public Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { + log.debug( + "Se intentara conseguir el ultimo numero final de ingreso en la caja " + caja + " de tipo " + + tipoIngreso); String nroFinal = null; if (caja == Caja.EMPTY) { + log.debug("La caja era Caja.EMPY"); return Optional.ofNullable(nroFinal); } @@ -333,16 +443,27 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { - e.printStackTrace(); + log.error("Error al intentar conseguir el ultimo numero final de ingreso en la caja " + caja + + " de tipo " + tipoIngreso); } + log.debug("Se consiguio el ultimo numero final " + nroFinal); return Optional.ofNullable(nroFinal); } + /** + * Obtiene el primer numero z inicial dentro de una caja + * + * @param caja caja a la que pertenecen los ingresos en los que buscar + * @return Un optional que contiene el primer numero z inicial, este puede estar vacio ya que no + * es seguro que exista tal numero z inicial + */ @Override public Optional getPrimerNroZInicialDeCaja(Caja caja) { + log.debug("Se intentara conseguir el primero numero z inicial dentro de la caja " + caja); String nroZInicial = null; if (caja == Caja.EMPTY) { + log.debug("La caja era Caja.EMPTY"); return Optional.ofNullable(nroZInicial); } @@ -357,15 +478,25 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { - e.printStackTrace(); + log.error("Error al intentar conseguir el primer numero z inicial dentro de la caja " + caja); } + log.debug("Se consiguio el primer numero z inicial " + nroZInicial); return Optional.ofNullable(nroZInicial); } + /** + * Obtiene el ultimo numero z final dentro de una caja + * + * @param caja caja a la que pertenecen los ingresos en los que buscar + * @return Un optional que contiene el ultimo numero z final, este puede estar vacio ya que no + * es seguro que exista tal numero z final + */ @Override public Optional getUltimoNroZFinalDeCaja(Caja caja) { + log.debug("Se intentara conseguir el ultimo numero z final dentro de la caja " + caja); String nroZFinal = null; if (caja == Caja.EMPTY) { + log.debug("La caja era Caja.EMPTY"); return Optional.ofNullable(nroZFinal); } String query = "select nro_z_final from ingresos where caja_id = ? and tipo_ingreso_id = 1 order by nro_inicial desc limit 1"; @@ -379,13 +510,19 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { - e.printStackTrace(); + log.error("Error al intentar conseguir el ultimo numero z final dentro de la caja " + caja, e); } + log.debug("Se consiguio el ultimo numero z final " + nroZFinal); return Optional.ofNullable(nroZFinal); } + /** + * Inserta un ingreso en la base de datos + * @param ingreso Ingreso a insertar + */ @Override public void insert(Ingreso ingreso) { + log.debug("Se intentara insertar el ingreso " + ingreso); String query = "insert into ingresos (valor, nro_z_inicial, nro_z_final, nro_inicial, nro_final, tipo_ingreso_id, caja_id) values (?,?,?,?,?,?,?)"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -406,11 +543,18 @@ public class SQLiteIngresoDAO implements IngresoDAO { } } } catch (SQLException e) { + log.error("Error al intentar insertar el ingreso " + ingreso, e); } + log.debug("Se inserto el ingreso " + ingreso); } + /** + * Actualiza un ingreso existente en la base de datos + * @param ingreso Ingreso a actualizar + */ @Override public void update(Ingreso ingreso) { + log.debug("Se intentara actualizar el ingreso " + ingreso); String query = "update ingresos set valor = ?, nro_z_inicial = ?, nro_z_final = ?, nro_inicial = ?, nro_final = ?, tipo_ingreso_id = ?, caja_id = ? where id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -425,11 +569,18 @@ public class SQLiteIngresoDAO implements IngresoDAO { ps.executeUpdate(); } } catch (SQLException e) { + log.error("Error al intentar actualizar el ingreso " + ingreso, e); } + log.debug("Se actualizo el ingreso " + ingreso); } + /** + * Elimnina un ingreso existente en la base de datos + * @param ingreso Ingreso a eliminar + */ @Override public void delete(Ingreso ingreso) { + log.debug("Se intentara eliminar el ingreso " + ingreso); String query = "delete from ingresos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -437,6 +588,8 @@ public class SQLiteIngresoDAO implements IngresoDAO { ps.executeUpdate(); } } catch (SQLException e) { + log.error("Error al intentar eliminar el ingreso " + ingreso, e); } + log.debug("Se elimino el ingreso " + ingreso); } }