diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index 2ef0280..75a0b0a 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 8c211cc..18d87a1 100644 --- a/src/danielcortes/xyz/controllers/ArqueoController.java +++ b/src/danielcortes/xyz/controllers/ArqueoController.java @@ -91,7 +91,7 @@ public class ArqueoController extends BaseController { * Rellea los campos de documentos con la instancia de documentos que pertenece a la caja */ private void fillDocumentos() { - this.documentos = DAOManager.getDocumentosDAO().findByCaja(caja); + this.documentos = DAOManager.getDocumentosDAO().findByCaja(caja).orElse(Documentos.EMPTY); this.view.getTarjetasField().setValue(documentos.getTarjetas()); this.view.getChequesField().setValue(documentos.getCheques()); this.view.getRetiroField().setValue(documentos.getRetiros()); @@ -179,7 +179,7 @@ public class ArqueoController extends BaseController { this.view.getGuardarEfectivoButton() .addActionListener(e -> this.guardarEfectivoActionListener()); this.view.getGuardarDocumentosButton() - .addActionListener(e -> this.guardarEfectivoActionListener()); + .addActionListener(e -> this.guardarDocumentosActionListener()); this.view.getCalcularFondoButton().addActionListener(e -> this.calcularFondoActionListener()); } diff --git a/src/danielcortes/xyz/models/documentos/Documentos.java b/src/danielcortes/xyz/models/documentos/Documentos.java index dbcfe14..ce1422c 100644 --- a/src/danielcortes/xyz/models/documentos/Documentos.java +++ b/src/danielcortes/xyz/models/documentos/Documentos.java @@ -27,7 +27,7 @@ package danielcortes.xyz.models.documentos; import danielcortes.xyz.models.caja.Caja; public class Documentos { - + public final static Documentos EMPTY = new Documentos(); private int id; private int cheques; private int tarjetas; diff --git a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java index 6659840..0db7c08 100644 --- a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java +++ b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java @@ -26,22 +26,23 @@ package danielcortes.xyz.models.documentos; import danielcortes.xyz.models.caja.Caja; import java.util.List; +import java.util.Optional; public interface DocumentosDAO { List findAll(); - Documentos findById(int id); + Optional findById(int id); - Documentos findByCaja(Caja caja); + Optional findByCaja(Caja caja); - boolean insertDocumentos(Documentos documentos); + void insertDocumentos(Documentos documentos); - boolean insertDefaultDocumentos(Documentos documentos); + void insertDefaultDocumentos(Documentos documentos); - boolean updateDocumentos(Documentos documentos); + void updateDocumentos(Documentos documentos); - boolean deleteDocumentos(Documentos documentos); + void deleteDocumentos(Documentos documentos); int getTotalDocumentos(Caja caja); diff --git a/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java b/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java index 286f76e..073734e 100644 --- a/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java +++ b/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java @@ -28,13 +28,13 @@ 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; @@ -43,6 +43,7 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { private static final Logger LOGGER = Logger.getLogger(SQLiteDocumentosDAO.class.getName()); private ConnectionHolder connectionHolder; + public SQLiteDocumentosDAO() { this.connectionHolder = new SQLiteConnectionHolder(); } @@ -50,17 +51,28 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { @Override public List findAll() { List documentosList = new ArrayList<>(); + String query = "select * from documentos"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select * from documentos"; - PreparedStatement ps = conn.prepareStatement(query); - ResultSet rs = ps.executeQuery(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + try (ResultSet rs = ps.executeQuery()) { + LOGGER.log(Level.FINE, "QUERY: {0}", query); - LOGGER.log(Level.FINE, "QUERY: {0}", query); + while (rs.next()) { + //Confio en que la base de datos mapeo correctamente la caja_id + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = DAOManager.getCajaDAO().getById(rs.getInt("caja_id")).get(); - documentosList = this.documentosFromResultSet(rs); + Documentos documentos = new Documentos(); + documentos.setCaja(caja); + documentos.setId(rs.getInt("id")); + documentos.setCheques(rs.getInt("cheques")); + documentos.setTarjetas(rs.getInt("tarjetas")); + documentos.setRetiros(rs.getInt("retiros")); - rs.close(); - ps.close(); + documentosList.add(documentos); + } + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } @@ -68,204 +80,159 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { } @Override - public Documentos findById(int id) { + public Optional findById(int id) { Documentos documentos = null; + try (Connection conn = connectionHolder.getConnection()) { String query = "select * from documentos 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()) { + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); + if (rs.next()) { + //Confio en que la base de datos mapeo correctamente la caja_id + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = DAOManager.getCajaDAO().getById(rs.getInt("caja_id")).get(); - List documentosList = this.documentosFromResultSet(rs); - if (documentosList.size() > 0) { - documentos = documentosList.get(0); + documentos = new Documentos(); + documentos.setCaja(caja); + documentos.setId(rs.getInt("id")); + documentos.setCheques(rs.getInt("cheques")); + documentos.setTarjetas(rs.getInt("tarjetas")); + documentos.setRetiros(rs.getInt("retiros")); + } + } } - - rs.close(); - ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return documentos; + return Optional.ofNullable(documentos); } @Override - public Documentos findByCaja(Caja caja) { + public Optional findByCaja(Caja caja) { Documentos documentos = null; + + if (Caja.EMPTY == caja) { + return Optional.ofNullable(documentos); + } + + String query = "select * from documentos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select * from documentos where caja_id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, caja.getId()); - ResultSet rs = ps.executeQuery(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, caja.getId()); + try (ResultSet rs = ps.executeQuery()) { + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); + if (rs.next()) { + documentos = new Documentos(); + documentos.setCaja(caja); + documentos.setId(rs.getInt("id")); + documentos.setCheques(rs.getInt("cheques")); + documentos.setTarjetas(rs.getInt("tarjetas")); + documentos.setRetiros(rs.getInt("retiros")); + } + } + } + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return Optional.ofNullable(documentos); + } - List documentosList = this.documentosFromResultSet(rs); - if (documentosList.size() > 0) { - documentos = documentosList.get(0); + @Override + public void insertDocumentos(Documentos documentos) { + String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (?,?,?,?)"; + try (Connection conn = connectionHolder.getConnection()) { + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, documentos.getCheques()); + ps.setInt(2, documentos.getTarjetas()); + ps.setInt(3, documentos.getRetiros()); + ps.setInt(4, documentos.getCaja().getId()); + ps.executeUpdate(); + } + + try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + documentos.setId(rs.getInt(1)); + } } - rs.close(); - ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return documentos; } @Override - public boolean insertDocumentos(Documentos documentos) { - int updates; + public void insertDefaultDocumentos(Documentos documentos) { + String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (0,0,0,?)"; try (Connection conn = connectionHolder.getConnection()) { - String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (?,?,?,?)"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, documentos.getCheques()); - ps.setInt(2, documentos.getTarjetas()); - ps.setInt(3, documentos.getRetiros()); - ps.setInt(4, documentos.getCaja().getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1}, {2}, {3}, {4}] | updates: {5}", - new Object[]{query, documentos.getCheques(), documentos.getTarjetas(), - documentos.getRetiros(), documentos.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(); - documentos.setId(rs.getInt(1)); - - rs.close(); - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, documentos.getCaja().getId()); + ps.executeUpdate(); + } + try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + documentos.setId(rs.getInt(1)); + } + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public boolean insertDefaultDocumentos(Documentos documentos) { - int updates; + public void updateDocumentos(Documentos documentos) { + String query = "update documentos set tarjetas = ?, cheques = ?, retiros = ?, caja_id = ? where id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (0,0,0,?)"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, documentos.getCaja().getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", - new Object[]{query, documentos.getCaja().getId(), updates}); - - ps.close(); - - ps = conn.prepareStatement("select last_insert_rowid()"); - ResultSet rs = ps.executeQuery(); - - LOGGER.log(Level.FINE, "QUERY: {0}", query); - - rs.next(); - documentos.setId(rs.getInt(1)); - - rs.close(); - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, documentos.getTarjetas()); + ps.setInt(2, documentos.getCheques()); + ps.setInt(3, documentos.getRetiros()); + ps.setInt(4, documentos.getCaja().getId()); + ps.setInt(5, documentos.getId()); + ps.executeUpdate(); + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public boolean updateDocumentos(Documentos documentos) { - int updates; + public void deleteDocumentos(Documentos documentos) { + String query = "delete from documentos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "update documentos set tarjetas = ?, cheques = ?, retiros = ?, caja_id = ? where id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, documentos.getTarjetas()); - ps.setInt(2, documentos.getCheques()); - ps.setInt(3, documentos.getRetiros()); - ps.setInt(4, documentos.getCaja().getId()); - ps.setInt(5, documentos.getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1}, {2}, {3}, {4}] | updates: {5}", - new Object[]{query, documentos.getCheques(), documentos.getTarjetas(), - documentos.getRetiros(), documentos.getCaja().getId(), documentos.getId(), updates}); - - ps.close(); + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, documentos.getId()); + } } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; - } - - @Override - public boolean deleteDocumentos(Documentos documentos) { - int updates; - try (Connection conn = connectionHolder.getConnection()) { - String query = "delete from documentos where id = ?"; - PreparedStatement ps = conn.prepareStatement(query); - ps.setInt(1, documentos.getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", - new Object[]{query, documentos.getCaja().getId(), updates}); - - ps.close(); - } catch (SQLException e) { - LOGGER.log(Level.SEVERE, e.toString(), e); - return false; - } - return updates > 0; } @Override public int getTotalDocumentos(Caja caja) { int total = 0; + if (Caja.EMPTY == caja) { + return total; + } + + String query = "select cheques + tarjetas + retiros from documentos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { - String query = "select cheques + tarjetas + retiros from documentos 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()}); - - 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); } return total; } - protected List documentosFromResultSet(ResultSet rs) throws SQLException { - List documentosList = new ArrayList<>(); - while (rs.next()) { - CajaDAO cajaDAO = DAOManager.getCajaDAO(); - Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); - - Documentos documentos = new Documentos(); - documentos.setCaja(caja); - documentos.setId(rs.getInt("id")); - documentos.setCheques(rs.getInt("cheques")); - documentos.setTarjetas(rs.getInt("tarjetas")); - documentos.setRetiros(rs.getInt("retiros")); - - LOGGER.log(Level.FINER, "Se a creo: {0}", documentos); - - documentosList.add(documentos); - - } - return documentosList; - } }