Se limpio el modelo de EfectivoDAO

Se llevaron a cabo los mismos pasos que en los previos;
This commit is contained in:
Daniel Cortes
2019-03-07 14:56:39 -03:00
parent c2529756f2
commit f5bbb7e0e8
6 changed files with 182 additions and 204 deletions

BIN
dist/Programa Caja.jar vendored

Binary file not shown.

View File

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

View File

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

View File

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

View File

@@ -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<Efectivo> findAll();
protected ConnectionHolder connectionHolder;
Optional<Efectivo> findById(int id);
public abstract List<Efectivo> findAll();
Optional<Efectivo> 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<Efectivo> efectivosFromResultSet(ResultSet rs) throws SQLException {
List<Efectivo> 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);
}

View File

@@ -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<Efectivo> findAll() {
List<Efectivo> 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<Efectivo> 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<Efectivo> 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<Efectivo> 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);
}