diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index 75a0b0a..046468f 100644 Binary files a/dist/Programa Caja.jar and b/dist/Programa Caja.jar differ diff --git a/src/danielcortes/xyz/controllers/ArqueoController.java b/src/danielcortes/xyz/controllers/ArqueoController.java index 18d87a1..1a31b58 100644 --- a/src/danielcortes/xyz/controllers/ArqueoController.java +++ b/src/danielcortes/xyz/controllers/ArqueoController.java @@ -75,7 +75,7 @@ public class ArqueoController extends BaseController { * Rellena los campos del efectivo con la instancia de efectivo que pertenece a la caja */ private void fillEfectivo() { - this.efectivo = DAOManager.getEfectivoDAO().findByCaja(this.caja); + this.efectivo = DAOManager.getEfectivoDAO().findByCaja(this.caja).orElse(Efectivo.EMPTY); this.view.getVeinteMilField().setValue(efectivo.getVeinteMil()); this.view.getDiezMilField().setValue(efectivo.getDiezMil()); this.view.getCincoMilField().setValue(efectivo.getCincoMil()); diff --git a/src/danielcortes/xyz/models/documentos/Documentos.java b/src/danielcortes/xyz/models/documentos/Documentos.java index ce1422c..51047fa 100644 --- a/src/danielcortes/xyz/models/documentos/Documentos.java +++ b/src/danielcortes/xyz/models/documentos/Documentos.java @@ -27,7 +27,13 @@ package danielcortes.xyz.models.documentos; import danielcortes.xyz.models.caja.Caja; public class Documentos { - public final static Documentos EMPTY = new Documentos(); + public final static Documentos EMPTY; + + static{ + EMPTY = new Documentos(); + EMPTY.setCaja(Caja.EMPTY); + } + private int id; private int cheques; private int tarjetas; diff --git a/src/danielcortes/xyz/models/efectivo/Efectivo.java b/src/danielcortes/xyz/models/efectivo/Efectivo.java index d8a3842..eff5749 100644 --- a/src/danielcortes/xyz/models/efectivo/Efectivo.java +++ b/src/danielcortes/xyz/models/efectivo/Efectivo.java @@ -27,6 +27,12 @@ package danielcortes.xyz.models.efectivo; import danielcortes.xyz.models.caja.Caja; public class Efectivo { + public final static Efectivo EMPTY; + + static { + EMPTY = new Efectivo(); + EMPTY.setCaja(Caja.EMPTY); + } private int id; private int veinteMil; diff --git a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java index 72cb315..7e91d80 100644 --- a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java +++ b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java @@ -24,62 +24,25 @@ package danielcortes.xyz.models.efectivo; -import danielcortes.xyz.data.ConnectionHolder; import danielcortes.xyz.models.caja.Caja; -import danielcortes.xyz.models.caja.CajaDAO; -import danielcortes.xyz.models.caja.SQLiteCajaDAO; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.util.Optional; -public abstract class EfectivoDAO { +public interface EfectivoDAO { - private static final Logger LOGGER = Logger.getLogger(EfectivoDAO.class.getName()); + List findAll(); - protected ConnectionHolder connectionHolder; + Optional findById(int id); - public abstract List findAll(); + Optional findByCaja(Caja caja); - public abstract Efectivo findById(int id); + void insertEfectivo(Efectivo efectivo); - public abstract Efectivo findByCaja(Caja caja); + void insertDefaultEfectivo(Efectivo efectivo); - public abstract boolean insertEfectivo(Efectivo efectivo); + void updateEfectivo(Efectivo efectivo); - public abstract boolean insertDefaultEfectivo(Efectivo efectivo); + void deleteEfectivo(Efectivo efectivo); - public abstract boolean updateEfectivo(Efectivo efectivo); - - public abstract boolean deleteEfectivo(Efectivo efectivo); - - public abstract int getTotalEfectivo(Caja caja); - - protected List efectivosFromResultSet(ResultSet rs) throws SQLException { - List efectivoList = new ArrayList<>(); - while (rs.next()) { - CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); - - Efectivo efectivo = new Efectivo(); - efectivo.setCaja(caja); - efectivo.setId(rs.getInt("id")); - efectivo.setVeinteMil(rs.getInt("veinte_mil")); - efectivo.setDiezMil(rs.getInt("diez_mil")); - efectivo.setCincoMil(rs.getInt("cinco_mil")); - efectivo.setDosMil(rs.getInt("dos_mil")); - efectivo.setMil(rs.getInt("mil")); - efectivo.setQuinientos(rs.getInt("quinientos")); - efectivo.setCien(rs.getInt("cien")); - efectivo.setCincuenta(rs.getInt("cincuenta")); - efectivo.setDiez(rs.getInt("diez")); - - LOGGER.log(Level.FINER, "Se a creo: {0}", efectivo); - - efectivoList.add(efectivo); - } - return efectivoList; - } + int getTotalEfectivo(Caja caja); } diff --git a/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java b/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java index 9f0255e..6b541e9 100644 --- a/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java +++ b/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java @@ -24,20 +24,25 @@ package danielcortes.xyz.models.efectivo; +import danielcortes.xyz.data.ConnectionHolder; +import danielcortes.xyz.data.DAOManager; import danielcortes.xyz.data.SQLiteConnectionHolder; import danielcortes.xyz.models.caja.Caja; +import danielcortes.xyz.models.caja.CajaDAO; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; -public class SQLiteEfectivoDAO extends EfectivoDAO { +public class SQLiteEfectivoDAO implements EfectivoDAO { private static final Logger LOGGER = Logger.getLogger(SQLiteEfectivoDAO.class.getName()); + private ConnectionHolder connectionHolder; public SQLiteEfectivoDAO() { this.connectionHolder = new SQLiteConnectionHolder(); @@ -46,17 +51,33 @@ public class SQLiteEfectivoDAO extends EfectivoDAO { @Override public List findAll() { List efectivoList = new ArrayList<>(); + String query = "select * from efectivos"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select * from efectivos"; - PreparedStatement ps = conn.prepareStatement(query); - ResultSet rs = ps.executeQuery(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + try (ResultSet rs = ps.executeQuery()) { + CajaDAO cajaDAO = DAOManager.getCajaDAO(); + while (rs.next()) { + //Confio en que la base de datos me entregara un id existente. + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); - LOGGER.log(Level.FINE, "QUERY: {0}", query); + Efectivo efectivo = new Efectivo(); + efectivo.setCaja(caja); + efectivo.setId(rs.getInt("id")); + efectivo.setVeinteMil(rs.getInt("veinte_mil")); + efectivo.setDiezMil(rs.getInt("diez_mil")); + efectivo.setCincoMil(rs.getInt("cinco_mil")); + efectivo.setDosMil(rs.getInt("dos_mil")); + efectivo.setMil(rs.getInt("mil")); + efectivo.setQuinientos(rs.getInt("quinientos")); + efectivo.setCien(rs.getInt("cien")); + efectivo.setCincuenta(rs.getInt("cincuenta")); + efectivo.setDiez(rs.getInt("diez")); - efectivoList = this.efectivosFromResultSet(rs); - - rs.close(); - ps.close(); + efectivoList.add(efectivo); + } + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } @@ -65,195 +86,177 @@ public class SQLiteEfectivoDAO extends EfectivoDAO { } @Override - public Efectivo findById(int id) { + public Optional findById(int id) { Efectivo efectivo = null; + String query = "select * from efectivos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select * from efectivos where id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, id); - ResultSet rs = ps.executeQuery(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, id); + try (ResultSet rs = ps.executeQuery()) { + CajaDAO cajaDAO = DAOManager.getCajaDAO(); + if (rs.next()) { + //Confio en que la base de datos me entregara un id existente. + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); - - efectivo = this.efectivosFromResultSet(rs).get(0); - - rs.close(); - ps.close(); - } catch (SQLException e) { - LOGGER.log(Level.SEVERE, e.toString(), e); - } - - return efectivo; - } - - @Override - public Efectivo findByCaja(Caja caja) { - Efectivo efectivo = null; - try (Connection conn = connectionHolder.getConnection()) { - String query = "select * from efectivos where caja_id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, caja.getId()); - ResultSet rs = ps.executeQuery(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); - - List efectivoList = this.efectivosFromResultSet(rs); - if (efectivoList.size() > 0) { - efectivo = efectivoList.get(0); + efectivo = new Efectivo(); + efectivo.setCaja(caja); + efectivo.setId(rs.getInt("id")); + efectivo.setVeinteMil(rs.getInt("veinte_mil")); + efectivo.setDiezMil(rs.getInt("diez_mil")); + efectivo.setCincoMil(rs.getInt("cinco_mil")); + efectivo.setDosMil(rs.getInt("dos_mil")); + efectivo.setMil(rs.getInt("mil")); + efectivo.setQuinientos(rs.getInt("quinientos")); + efectivo.setCien(rs.getInt("cien")); + efectivo.setCincuenta(rs.getInt("cincuenta")); + efectivo.setDiez(rs.getInt("diez")); + } + } } - - rs.close(); - ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return efectivo; + return Optional.ofNullable(efectivo); } @Override - public boolean insertEfectivo(Efectivo efectivo) { - int updates; + public Optional findByCaja(Caja caja) { + Efectivo efectivo = null; + if (Caja.EMPTY == caja) { + return Optional.ofNullable(efectivo); + } + + String query = "select * from efectivos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "insert into efectivos (veinte_mil, diez_mil, cinco_mil, dos_mil, mil, quinientos, cien, cincuenta, diez, caja_id) values (?,?,?,?,?,?,?,?,?,?)"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, efectivo.getVeinteMil()); - ps.setInt(2, efectivo.getDiezMil()); - ps.setInt(3, efectivo.getCincoMil()); - ps.setInt(4, efectivo.getDosMil()); - ps.setInt(5, efectivo.getMil()); - ps.setInt(6, efectivo.getQuinientos()); - ps.setInt(7, efectivo.getCien()); - ps.setInt(8, efectivo.getCincuenta()); - ps.setInt(9, efectivo.getDiez()); - ps.setInt(10, efectivo.getCaja().getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, - "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}] | updates: {11}", - new Object[]{query, efectivo.getVeinteMil(), efectivo.getDiezMil(), - efectivo.getCincoMil(), efectivo.getDosMil(), efectivo.getMil(), - efectivo.getQuinientos(), efectivo.getCien(), efectivo.getCincuenta(), - efectivo.getDiez(), efectivo.getCaja().getId(), updates}); - - ps.close(); - - query = "select last_insert_rowid()"; - ps = conn.prepareStatement(query); - ResultSet rs = ps.executeQuery(); - - LOGGER.log(Level.FINE, "QUERY: {0}", query); - - rs.next(); - efectivo.setId(rs.getInt(1)); - - rs.close(); - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, caja.getId()); + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + efectivo = new Efectivo(); + efectivo.setCaja(caja); + efectivo.setId(rs.getInt("id")); + efectivo.setVeinteMil(rs.getInt("veinte_mil")); + efectivo.setDiezMil(rs.getInt("diez_mil")); + efectivo.setCincoMil(rs.getInt("cinco_mil")); + efectivo.setDosMil(rs.getInt("dos_mil")); + efectivo.setMil(rs.getInt("mil")); + efectivo.setQuinientos(rs.getInt("quinientos")); + efectivo.setCien(rs.getInt("cien")); + efectivo.setCincuenta(rs.getInt("cincuenta")); + efectivo.setDiez(rs.getInt("diez")); + } + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; + + return Optional.ofNullable(efectivo); } @Override - public boolean insertDefaultEfectivo(Efectivo efectivo) { - int updates; + public void insertEfectivo(Efectivo efectivo) { + String query = "insert into efectivos (veinte_mil, diez_mil, cinco_mil, dos_mil, mil, quinientos, cien, cincuenta, diez, caja_id) values (?,?,?,?,?,?,?,?,?,?)"; try (Connection conn = connectionHolder.getConnection()) { - String query = "insert into efectivos (veinte_mil, diez_mil, cinco_mil, dos_mil, mil, quinientos, cien, cincuenta, diez, caja_id) values (0,0,0,0,0,0,0,0,0,?)"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, efectivo.getCaja().getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", - new Object[]{query, efectivo.getCaja().getId(), updates}); - - ps.close(); - - ps = conn.prepareStatement("select last_insert_rowid()"); - ResultSet rs = ps.executeQuery(); - rs.next(); - efectivo.setId(rs.getInt(1)); - - rs.close(); - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, efectivo.getVeinteMil()); + ps.setInt(2, efectivo.getDiezMil()); + ps.setInt(3, efectivo.getCincoMil()); + ps.setInt(4, efectivo.getDosMil()); + ps.setInt(5, efectivo.getMil()); + ps.setInt(6, efectivo.getQuinientos()); + ps.setInt(7, efectivo.getCien()); + ps.setInt(8, efectivo.getCincuenta()); + ps.setInt(9, efectivo.getDiez()); + ps.setInt(10, efectivo.getCaja().getId()); + ps.executeUpdate(); + } + try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + efectivo.setId(rs.getInt(1)); + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public boolean updateEfectivo(Efectivo efectivo) { - int updates; + public void insertDefaultEfectivo(Efectivo efectivo) { + String query = "insert into efectivos (veinte_mil, diez_mil, cinco_mil, dos_mil, mil, quinientos, cien, cincuenta, diez, caja_id) values (0,0,0,0,0,0,0,0,0,?)"; try (Connection conn = connectionHolder.getConnection()) { - String query = "update efectivos set veinte_mil = ?, diez_mil = ?, cinco_mil = ?, dos_mil = ?, mil = ?, quinientos = ?, cien = ?, cincuenta = ?, diez = ?, caja_id = ? where id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, efectivo.getVeinteMil()); - ps.setInt(2, efectivo.getDiezMil()); - ps.setInt(3, efectivo.getCincoMil()); - ps.setInt(4, efectivo.getDosMil()); - ps.setInt(5, efectivo.getMil()); - ps.setInt(6, efectivo.getQuinientos()); - ps.setInt(7, efectivo.getCien()); - ps.setInt(8, efectivo.getCincuenta()); - ps.setInt(9, efectivo.getDiez()); - ps.setInt(10, efectivo.getCaja().getId()); - ps.setInt(11, efectivo.getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, - "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}] | updates: {12}", - new Object[]{query, efectivo.getVeinteMil(), efectivo.getDiezMil(), - efectivo.getCincoMil(), efectivo.getDosMil(), efectivo.getMil(), - efectivo.getQuinientos(), efectivo.getCien(), efectivo.getCincuenta(), - efectivo.getDiez(), efectivo.getCaja().getId(), efectivo.getId(), updates}); - - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, efectivo.getCaja().getId()); + ps.executeUpdate(); + } + try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + efectivo.setId(rs.getInt(1)); + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public boolean deleteEfectivo(Efectivo efectivo) { - int updates; + public void updateEfectivo(Efectivo efectivo) { + String query = "update efectivos set veinte_mil = ?, diez_mil = ?, cinco_mil = ?, dos_mil = ?, mil = ?, quinientos = ?, cien = ?, cincuenta = ?, diez = ?, caja_id = ? where id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "delete from efectivos where id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, efectivo.getId()); - updates = ps.executeUpdate(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, efectivo.getVeinteMil()); + ps.setInt(2, efectivo.getDiezMil()); + ps.setInt(3, efectivo.getCincoMil()); + ps.setInt(4, efectivo.getDosMil()); + ps.setInt(5, efectivo.getMil()); + ps.setInt(6, efectivo.getQuinientos()); + ps.setInt(7, efectivo.getCien()); + ps.setInt(8, efectivo.getCincuenta()); + ps.setInt(9, efectivo.getDiez()); + ps.setInt(10, efectivo.getCaja().getId()); + ps.setInt(11, efectivo.getId()); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", - new Object[]{query, efectivo.getId(), updates}); - - ps.close(); + ps.executeUpdate(); + } + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + } + + @Override + public void deleteEfectivo(Efectivo efectivo) { + String query = "delete from efectivos where id = ?"; + try (Connection conn = connectionHolder.getConnection()) { + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, efectivo.getId()); + ps.executeUpdate(); + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override public int getTotalEfectivo(Caja caja) { int total = 0; + if (Caja.EMPTY == caja) { + return total; + } + + String query = "select veinte_mil + diez_mil + cinco_mil + dos_mil + mil + quinientos + cien + cincuenta + diez from efectivos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select veinte_mil + diez_mil + cinco_mil + dos_mil + mil + quinientos + cien + cincuenta + diez from efectivos where caja_id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, caja.getId()); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); - - ResultSet rs = ps.executeQuery(); - rs.next(); - total = rs.getInt(1); - - rs.close(); - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, caja.getId()); + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + total = rs.getInt(1); + } + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); }