diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index d3cf8e1..d9b72b1 100644 Binary files a/dist/Programa Caja.jar and b/dist/Programa Caja.jar differ diff --git a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java index 2fd61c1..d9e4324 100644 --- a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.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 Egreso En especifio esta + * implementacion se comunica con la base de datos SQLite + */ public class SQLiteEgresoDAO implements EgresoDAO { + + private static final Logger LOGGER = LogManager.getLogger(SQLiteEgresoDAO.class); private ConnectionHolder connectionHolder; public SQLiteEgresoDAO() { this.connectionHolder = new SQLiteConnectionHolder(); } + /** + * Obtiene todas las instancias de Egreso que existen en la base de datos + * + * @return una lista de Egreso + */ @Override public List getAll() { + LOGGER.debug("Se intentara conseguir todos los Egreso"); List egresoList = new ArrayList<>(); String query = "select * from egresos"; try (Connection conn = connectionHolder.getConnection()) { @@ -80,12 +94,22 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir todos los Egreso"); } + LOGGER.debug("Se consiguieron " + egresoList.size() + " Egreso"); return egresoList; } + /** + * Obtiene un Egreso dado su id en la base de datos + * + * @param id el id de la fila de egreso en la base de datos + * @return un optional que contiene el egreso y puede estar vacio, dado que no es 100% seguro que + * el id entregado sea valido o exista en la base de datos + */ @Override public Optional getById(int id) { + LOGGER.debug("Se intentara conseguir un Egreso con el id " + id); Egreso egreso = null; String query = "select * from egresos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { @@ -114,15 +138,25 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir el Egreso con id " + id, e); } + LOGGER.debug("Se consiguio el egreso " + egreso); return Optional.ofNullable(egreso); } + /** + * Obtiene una lista de egresos perteneciente a una caja + * + * @param caja Caja a la cual pertenece el egreso requerido + * @return Una lista de egreso, si la caja es Caja.EMPTY se retoranara una lista vacia + */ @Override public List getByCaja(Caja caja) { + LOGGER.debug("Se intentara conseguir los egresos de la caja " + caja); List egresoList = new ArrayList<>(); if (Caja.EMPTY == caja) { + LOGGER.debug("La caja entregada es Caja.EMPY"); return egresoList; } @@ -151,12 +185,21 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir los egreso de la caja " + caja, e); } + LOGGER.debug("Se consieron " + egresoList.size() + " Egreso"); return egresoList; } + /** + * Obtiene una lista de Egreso dado su nro en la base de datos + * + * @param nro nro del egreso que se busca + * @return una lista con los Egresos con el nro entregado + */ @Override public List getByNro(String nro) { + LOGGER.debug("Se intentara conseguir los Egreso con nro " + nro); List egresoList = new ArrayList<>(); String query = "select * from egresos where nro = ?"; try (Connection conn = connectionHolder.getConnection()) { @@ -187,15 +230,26 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir los Egreso con nro " + nro, e); } + LOGGER.debug("Se consiguieron " + egresoList.size() + " Egreso"); return egresoList; } + /** + * Obtiene una lista de Egreso pertenecientes a un tipoEgreso + * + * @param tipoEgreso TipoEgreso al que pertenecen los Egreso requeridos + * @return Una lista con los egresos, en caso que tipoEgreso sea TipoEgreso.EMPTY se retorna una + * lista vacia. + */ @Override public List getByTipoEgreso(TipoEgreso tipoEgreso) { + LOGGER.debug("Se intentara conseguir los Egreso con TipoEgreso " + tipoEgreso); List egresoList = new ArrayList<>(); - if(TipoEgreso.EMPTY == tipoEgreso){ + if (TipoEgreso.EMPTY == tipoEgreso) { + LOGGER.debug("El tipo egreso era TipoEgreso.EMPY"); return egresoList; } @@ -223,15 +277,27 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir los Egreso para el TipoEgreso " + tipoEgreso, e); } + LOGGER.debug("Se consiguieron " + egresoList.size() + " Egresos"); return egresoList; } + /** + * Obtiene los Egreso que pertenecen a un TipoEgreso y Caja + * + * @param tipoEgreso TipoEgreso al que pertence el Egreso + * @param caja Caja al que pertence el egreso + * @return Lista de egreso, se retoranara una lista vacia en caso que tipoEgreso o caja sean EMPTY + */ @Override public List getByTipoEgresoEnCaja(TipoEgreso tipoEgreso, Caja caja) { + LOGGER.debug("Se intentara conseguir los Egresos pertencienes al tipoEgreso " + tipoEgreso + + " y a la caja " + caja); List egresoList = new ArrayList<>(); if (caja == Caja.EMPTY || tipoEgreso == TipoEgreso.EMPTY) { + LOGGER.debug("La caja o el tipoEgreso eran EMPTY"); return egresoList; } @@ -255,15 +321,26 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error( + "Error al intentar conseguir los egresos pertenecientes al tipoEgreso " + tipoEgreso + + " y a la caja " + caja, e); } return egresoList; } + /** + * Obtiene la suma de los egresos en una caja + * + * @param caja caja a la que pertenecen los egresos a sumar + * @return La suma de los egresos, se retonara siempre 0 en caso que la Caja sea Caja.EMPTY + */ @Override public int getTotalEgreso(Caja caja) { + LOGGER.debug("Se intentara conseguir la suma de egreso de la caja " + caja); int total = 0; if (Caja.EMPTY == caja) { + LOGGER.debug("La caja era Caja.EMPTY"); return total; } @@ -278,15 +355,29 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar conseguir la suma de egresos de la caja " + caja, e); + } + LOGGER.debug("El total obtenido es " + total); return total; } + /** + * Obtiene la suma de egresos en un mes de un tipoEgreso + * + * @param mes Mes del que se necesita la suma + * @param tipo TipoEgreso al que pertencen los egresos + * @return La suma de los egresos dentro del mes y con el tipo entregado, en caso que el + * tipoEgreso sea TipoEgreso.EMPTY se retornara siempre 0 + */ @Override public int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo) { + LOGGER.debug( + "Se intentara conseguir el total de egresos en el mes " + mes + " y del tipo " + tipo); int total = 0; - if (TipoEgreso.EMPTY == tipo){ + if (TipoEgreso.EMPTY == tipo) { + LOGGER.debug("El TipoEgreso era TipoEgreso.EMPTY"); return total; } @@ -305,12 +396,22 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error( + "Error al intentar conseguir la suma de egresos en el mes " + mes + " y del tipo egreso " + + tipo, e); } + LOGGER.debug("El total obtenido es " + total); return total; } + /** + * Inserta en la base de datos una instancia de egreso + * + * @param egreso Egreso a insertar, una vez que ocurra se le otorga un id. + */ @Override public void insert(Egreso egreso) { + LOGGER.debug("Se intentara insertar el egreso " + egreso); String query = "insert into egresos (nro, descripcion, valor, tipo_egreso_id, caja_id) values (?,?,?,?,?)"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -328,11 +429,18 @@ public class SQLiteEgresoDAO implements EgresoDAO { } } } catch (SQLException e) { + LOGGER.error("Error al intentar insertar el egreso " + egreso, e); } + LOGGER.debug("Se inserto el egreso " + egreso); } + /** + * Actualiza un Egreso existente en la base de datos + * @param egreso Egreso a actualizar + */ @Override public void update(Egreso egreso) { + LOGGER.debug("Se intentara actualizar el egreso " + egreso); String query = "update egresos set nro = ?, descripcion = ?, valor = ?, tipo_egreso_id = ?, caja_id = ? where id = ? "; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -345,11 +453,18 @@ public class SQLiteEgresoDAO implements EgresoDAO { ps.executeUpdate(); } } catch (SQLException e) { + LOGGER.error("Error al intentar actualizar el egreso " + egreso, e); } + LOGGER.debug("Se actualizo el egreso " + egreso); } + /** + * Elimina un Egreso existente en la base de datos + * @param egreso Egreso a eliminar + */ @Override public void delete(Egreso egreso) { + LOGGER.debug("Se intentara eliminar el egreso " + egreso); String query = "delete from egresos where id = ? "; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { @@ -357,7 +472,8 @@ public class SQLiteEgresoDAO implements EgresoDAO { ps.executeUpdate(); } } catch (SQLException e) { + LOGGER.error("Error al intentar actualizar el egreso " + egreso); } + LOGGER.debug("Se elimino el egreso " + egreso); } - }