Terminado de reescribir documentos

Ademas se soluciono un bug en el controlador de arqueo, habia anotado
mal el listener del boton de documentos :c
This commit is contained in:
Daniel Cortes
2019-03-07 03:09:15 -03:00
parent 979dbbe4ab
commit c2529756f2
5 changed files with 132 additions and 164 deletions

BIN
dist/Programa Caja.jar vendored

Binary file not shown.

View File

@@ -91,7 +91,7 @@ public class ArqueoController extends BaseController {
* Rellea los campos de documentos con la instancia de documentos que pertenece a la caja * Rellea los campos de documentos con la instancia de documentos que pertenece a la caja
*/ */
private void fillDocumentos() { 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.getTarjetasField().setValue(documentos.getTarjetas());
this.view.getChequesField().setValue(documentos.getCheques()); this.view.getChequesField().setValue(documentos.getCheques());
this.view.getRetiroField().setValue(documentos.getRetiros()); this.view.getRetiroField().setValue(documentos.getRetiros());
@@ -179,7 +179,7 @@ public class ArqueoController extends BaseController {
this.view.getGuardarEfectivoButton() this.view.getGuardarEfectivoButton()
.addActionListener(e -> this.guardarEfectivoActionListener()); .addActionListener(e -> this.guardarEfectivoActionListener());
this.view.getGuardarDocumentosButton() this.view.getGuardarDocumentosButton()
.addActionListener(e -> this.guardarEfectivoActionListener()); .addActionListener(e -> this.guardarDocumentosActionListener());
this.view.getCalcularFondoButton().addActionListener(e -> this.calcularFondoActionListener()); this.view.getCalcularFondoButton().addActionListener(e -> this.calcularFondoActionListener());
} }

View File

@@ -27,7 +27,7 @@ package danielcortes.xyz.models.documentos;
import danielcortes.xyz.models.caja.Caja; import danielcortes.xyz.models.caja.Caja;
public class Documentos { public class Documentos {
public final static Documentos EMPTY = new Documentos();
private int id; private int id;
private int cheques; private int cheques;
private int tarjetas; private int tarjetas;

View File

@@ -26,22 +26,23 @@ package danielcortes.xyz.models.documentos;
import danielcortes.xyz.models.caja.Caja; import danielcortes.xyz.models.caja.Caja;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface DocumentosDAO { public interface DocumentosDAO {
List<Documentos> findAll(); List<Documentos> findAll();
Documentos findById(int id); Optional<Documentos> findById(int id);
Documentos findByCaja(Caja caja); Optional<Documentos> 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); int getTotalDocumentos(Caja caja);

View File

@@ -28,13 +28,13 @@ import danielcortes.xyz.data.ConnectionHolder;
import danielcortes.xyz.data.DAOManager; import danielcortes.xyz.data.DAOManager;
import danielcortes.xyz.data.SQLiteConnectionHolder; import danielcortes.xyz.data.SQLiteConnectionHolder;
import danielcortes.xyz.models.caja.Caja; import danielcortes.xyz.models.caja.Caja;
import danielcortes.xyz.models.caja.CajaDAO;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(SQLiteDocumentosDAO.class.getName());
private ConnectionHolder connectionHolder; private ConnectionHolder connectionHolder;
public SQLiteDocumentosDAO() { public SQLiteDocumentosDAO() {
this.connectionHolder = new SQLiteConnectionHolder(); this.connectionHolder = new SQLiteConnectionHolder();
} }
@@ -50,17 +51,28 @@ public class SQLiteDocumentosDAO implements DocumentosDAO {
@Override @Override
public List<Documentos> findAll() { public List<Documentos> findAll() {
List<Documentos> documentosList = new ArrayList<>(); List<Documentos> documentosList = new ArrayList<>();
String query = "select * from documentos";
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from documentos"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); try (ResultSet rs = ps.executeQuery()) {
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(); documentosList.add(documentos);
ps.close(); }
}
}
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
} }
@@ -68,204 +80,159 @@ public class SQLiteDocumentosDAO implements DocumentosDAO {
} }
@Override @Override
public Documentos findById(int id) { public Optional<Documentos> findById(int id) {
Documentos documentos = null; Documentos documentos = null;
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from documentos where id = ?"; String query = "select * from documentos where id = ?";
PreparedStatement ps = conn.prepareStatement(query); try (PreparedStatement ps = conn.prepareStatement(query)) {
ps.setInt(1, id); ps.setInt(1, id);
ResultSet rs = ps.executeQuery(); 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<Documentos> documentosList = this.documentosFromResultSet(rs); documentos = new Documentos();
if (documentosList.size() > 0) { documentos.setCaja(caja);
documentos = documentosList.get(0); 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) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
} }
return documentos; return Optional.ofNullable(documentos);
} }
@Override @Override
public Documentos findByCaja(Caja caja) { public Optional<Documentos> findByCaja(Caja caja) {
Documentos documentos = null; Documentos documentos = null;
if (Caja.EMPTY == caja) {
return Optional.ofNullable(documentos);
}
String query = "select * from documentos where caja_id = ?";
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from documentos where caja_id = ?"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); ps.setInt(1, caja.getId());
ps.setInt(1, caja.getId()); try (ResultSet rs = ps.executeQuery()) {
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<Documentos> documentosList = this.documentosFromResultSet(rs); @Override
if (documentosList.size() > 0) { public void insertDocumentos(Documentos documentos) {
documentos = documentosList.get(0); 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) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
} }
return documentos;
} }
@Override @Override
public boolean insertDocumentos(Documentos documentos) { public void insertDefaultDocumentos(Documentos documentos) {
int updates; String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (0,0,0,?)";
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (?,?,?,?)"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); ps.setInt(1, documentos.getCaja().getId());
ps.setInt(1, documentos.getCheques()); ps.executeUpdate();
ps.setInt(2, documentos.getTarjetas()); }
ps.setInt(3, documentos.getRetiros()); try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) {
ps.setInt(4, documentos.getCaja().getId()); try (ResultSet rs = ps.executeQuery()) {
updates = ps.executeUpdate(); rs.next();
documentos.setId(rs.getInt(1));
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();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
return false;
} }
return updates > 0;
} }
@Override @Override
public boolean insertDefaultDocumentos(Documentos documentos) { public void updateDocumentos(Documentos documentos) {
int updates; String query = "update documentos set tarjetas = ?, cheques = ?, retiros = ?, caja_id = ? where id = ?";
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (0,0,0,?)"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); ps.setInt(1, documentos.getTarjetas());
ps.setInt(1, documentos.getCaja().getId()); ps.setInt(2, documentos.getCheques());
updates = ps.executeUpdate(); ps.setInt(3, documentos.getRetiros());
ps.setInt(4, documentos.getCaja().getId());
LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", ps.setInt(5, documentos.getId());
new Object[]{query, documentos.getCaja().getId(), updates}); ps.executeUpdate();
}
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();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
return false;
} }
return updates > 0;
} }
@Override @Override
public boolean updateDocumentos(Documentos documentos) { public void deleteDocumentos(Documentos documentos) {
int updates; String query = "delete from documentos where id = ?";
try (Connection conn = connectionHolder.getConnection()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "update documentos set tarjetas = ?, cheques = ?, retiros = ?, caja_id = ? where id = ?"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); ps.setInt(1, documentos.getId());
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();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), 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 @Override
public int getTotalDocumentos(Caja caja) { public int getTotalDocumentos(Caja caja) {
int total = 0; 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()) { try (Connection conn = connectionHolder.getConnection()) {
String query = "select cheques + tarjetas + retiros from documentos where caja_id = ?"; try (PreparedStatement ps = conn.prepareStatement(query)) {
PreparedStatement ps = conn.prepareStatement(query); ps.setInt(1, caja.getId());
ps.setInt(1, caja.getId()); try (ResultSet rs = ps.executeQuery()) {
ResultSet rs = ps.executeQuery(); if (rs.next()) {
total = rs.getInt(1);
LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); }
}
rs.next(); }
total = rs.getInt(1);
rs.close();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e); LOGGER.log(Level.SEVERE, e.toString(), e);
} }
return total; return total;
} }
protected List<Documentos> documentosFromResultSet(ResultSet rs) throws SQLException {
List<Documentos> 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;
}
} }