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
*/
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());
}

View File

@@ -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;

View File

@@ -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<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);

View File

@@ -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,209 +51,16 @@ public class SQLiteDocumentosDAO implements DocumentosDAO {
@Override
public List<Documentos> findAll() {
List<Documentos> documentosList = new ArrayList<>();
try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from documentos";
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
try (Connection conn = connectionHolder.getConnection()) {
try (PreparedStatement ps = conn.prepareStatement(query)) {
try (ResultSet rs = ps.executeQuery()) {
LOGGER.log(Level.FINE, "QUERY: {0}", query);
documentosList = this.documentosFromResultSet(rs);
rs.close();
ps.close();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return documentosList;
}
@Override
public Documentos 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();
LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id});
List<Documentos> documentosList = this.documentosFromResultSet(rs);
if (documentosList.size() > 0) {
documentos = documentosList.get(0);
}
rs.close();
ps.close();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return documentos;
}
@Override
public Documentos findByCaja(Caja caja) {
Documentos documentos = null;
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();
LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()});
List<Documentos> documentosList = this.documentosFromResultSet(rs);
if (documentosList.size() > 0) {
documentos = documentosList.get(0);
}
rs.close();
ps.close();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return documentos;
}
@Override
public boolean insertDocumentos(Documentos documentos) {
int updates;
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();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
return false;
}
return updates > 0;
}
@Override
public boolean insertDefaultDocumentos(Documentos documentos) {
int updates;
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();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
return false;
}
return updates > 0;
}
@Override
public boolean updateDocumentos(Documentos documentos) {
int updates;
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();
} 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;
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();
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
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();
//Confio en que la base de datos mapeo correctamente la caja_id
@SuppressWarnings("OptionalGetWithoutIsPresent")
Caja caja = DAOManager.getCajaDAO().getById(rs.getInt("caja_id")).get();
Documentos documentos = new Documentos();
documentos.setCaja(caja);
@@ -261,11 +69,170 @@ public class SQLiteDocumentosDAO implements DocumentosDAO {
documentos.setTarjetas(rs.getInt("tarjetas"));
documentos.setRetiros(rs.getInt("retiros"));
LOGGER.log(Level.FINER, "Se a creo: {0}", documentos);
documentosList.add(documentos);
}
}
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return documentosList;
}
@Override
public Optional<Documentos> findById(int id) {
Documentos documentos = null;
try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from documentos where id = ?";
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});
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();
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);
}
@Override
public Optional<Documentos> 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()) {
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()});
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);
}
@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));
}
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
}
@Override
public void insertDefaultDocumentos(Documentos documentos) {
String query = "insert into documentos (cheques, tarjetas, retiros, caja_id) values (0,0,0,?)";
try (Connection conn = connectionHolder.getConnection()) {
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);
}
}
@Override
public void updateDocumentos(Documentos documentos) {
String query = "update documentos set tarjetas = ?, cheques = ?, retiros = ?, caja_id = ? where id = ?";
try (Connection conn = connectionHolder.getConnection()) {
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);
}
}
@Override
public void deleteDocumentos(Documentos documentos) {
String query = "delete from documentos where id = ?";
try (Connection conn = connectionHolder.getConnection()) {
try (PreparedStatement ps = conn.prepareStatement(query)) {
ps.setInt(1, documentos.getId());
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
}
@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()) {
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;
}
}