Reescrito modeo de TipoEgreso

Ademas los metodos que lo utilizaban para buscar en la base de datos
ahora comprueban contra TipoEgreso.EMPTY para evitar buscar cuando se
para un TipoEgreso.EMPTY
This commit is contained in:
Daniel Cortes
2019-03-07 19:00:22 -03:00
parent b2ff6dd7f7
commit 7e31885c8a
7 changed files with 87 additions and 84 deletions

View File

@@ -172,11 +172,11 @@ public class EstadoResultadoController extends BaseController {
private void fillGastosGenerales() {
TipoEgreso facturaGastosGenerales = DAOManager.getTipoEgresoDAO()
.findByNombre("Factura Gastos Generales").get(0);
.findByNombre("Factura Gastos Generales").orElse(TipoEgreso.EMPTY);
TipoEgreso gastoGeneralConBoleta = DAOManager.getTipoEgresoDAO()
.findByNombre("Gasto General Con Boleta").get(0);
.findByNombre("Gasto General Con Boleta").orElse(TipoEgreso.EMPTY);
TipoEgreso gastoGeneralSinRespaldo = DAOManager.getTipoEgresoDAO()
.findByNombre("Gasto General Sin Respaldo").get(0);
.findByNombre("Gasto General Sin Respaldo").orElse(TipoEgreso.EMPTY);
int cuentaCorrienteFactura = this.estadoResultado.getCuentaCorrienteFactura();
int cuentaCorrienteBoleta = this.estadoResultado.getCuentaCorrienteBoleta();
@@ -201,7 +201,7 @@ public class EstadoResultadoController extends BaseController {
}
private void fillGastosOperacionales() {
TipoEgreso tipoPagoPartime = DAOManager.getTipoEgresoDAO().findByNombre("Pago Partime").get(0);
TipoEgreso tipoPagoPartime = DAOManager.getTipoEgresoDAO().findByNombre("Pago Partime").orElse(TipoEgreso.EMPTY);
int costoVenta = this.estadoResultado.getCostoVenta();
int remuneraciones = this.estadoResultado.getRemuneraciones();

View File

@@ -171,7 +171,7 @@ public class InformeEstadoResultado {
partime.createCell(0).setCellValue("Partime");
partime.createCell(1).setCellValue(DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes,
DAOManager.getTipoEgresoDAO().findByNombre("Pago Partime").get(0)));
DAOManager.getTipoEgresoDAO().findByNombre("Pago Partime").orElse(TipoEgreso.EMPTY)));
bonosPersonal.createCell(0).setCellValue("Bonos Personal");
bonosPersonal.createCell(1).setCellValue(this.estadoResultado.getBonosPersonal());
@@ -222,11 +222,11 @@ public class InformeEstadoResultado {
private void fillGastosGeneralesData() {
TipoEgreso facturaGastosGenerales = DAOManager.getTipoEgresoDAO()
.findByNombre("Factura Gastos Generales").get(0);
.findByNombre("Factura Gastos Generales").orElse(TipoEgreso.EMPTY);
TipoEgreso gastoGeneralConBoleta = DAOManager.getTipoEgresoDAO()
.findByNombre("Gasto General Con Boleta").get(0);
.findByNombre("Gasto General Con Boleta").orElse(TipoEgreso.EMPTY);
TipoEgreso gastoGeneralSinRespaldo = DAOManager.getTipoEgresoDAO()
.findByNombre("Gasto General Sin Respaldo").get(0);
.findByNombre("Gasto General Sin Respaldo").orElse(TipoEgreso.EMPTY);
int startId = 29;

View File

@@ -63,7 +63,9 @@ public class SQLiteEgresoDAO implements EgresoDAO {
CajaDAO cajaDAO = DAOManager.getCajaDAO();
while (rs.next()) {
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get(0);
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get();
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
@@ -97,7 +99,9 @@ public class SQLiteEgresoDAO implements EgresoDAO {
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
TipoEgresoDAO tipoEgresoDAO = DAOManager.getTipoEgresoDAO();
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get(0);
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get();
CajaDAO cajaDAO = DAOManager.getCajaDAO();
//Confio en que la base de datos me dara un id existente
@@ -135,7 +139,9 @@ public class SQLiteEgresoDAO implements EgresoDAO {
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
TipoEgresoDAO tipoEgresoDAO = DAOManager.getTipoEgresoDAO();
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get(0);
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get();
Egreso egreso = new Egreso();
egreso.setId(rs.getInt("id"));
@@ -168,7 +174,9 @@ public class SQLiteEgresoDAO implements EgresoDAO {
CajaDAO cajaDAO = DAOManager.getCajaDAO();
while (rs.next()) {
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get(0);
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(rs.getInt("tipo_egreso_id")).get();
//Confio en que la base de datos me dara un id existente
@SuppressWarnings("OptionalGetWithoutIsPresent")
Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get();
@@ -194,6 +202,11 @@ public class SQLiteEgresoDAO implements EgresoDAO {
@Override
public List<Egreso> getByTipoEgreso(TipoEgreso tipoEgreso) {
List<Egreso> egresoList = new ArrayList<>();
if(TipoEgreso.EMPTY == tipoEgreso){
return egresoList;
}
String query = "select * from egresos where tipo_egreso_id = ?";
try (Connection conn = connectionHolder.getConnection()) {
try (PreparedStatement ps = conn.prepareStatement(query)) {
@@ -227,7 +240,7 @@ public class SQLiteEgresoDAO implements EgresoDAO {
public List<Egreso> getByTipoEgresoEnCaja(TipoEgreso tipoEgreso, Caja caja) {
List<Egreso> egresoList = new ArrayList<>();
if (caja == Caja.EMPTY) {
if (caja == Caja.EMPTY || tipoEgreso == TipoEgreso.EMPTY) {
return egresoList;
}
@@ -283,6 +296,11 @@ public class SQLiteEgresoDAO implements EgresoDAO {
@Override
public int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo) {
int total = 0;
if (TipoEgreso.EMPTY == tipo){
return total;
}
LocalDate start = mes.atDay(1);
LocalDate end = mes.atEndOfMonth();
String query = "select sum(valor) from egresos inner join caja on (egresos.caja_id = caja.id) where fecha between ? and ? and tipo_egreso_id = ?";

View File

@@ -24,6 +24,7 @@
package danielcortes.xyz.models.tipo_egreso;
import danielcortes.xyz.data.ConnectionHolder;
import danielcortes.xyz.data.SQLiteConnectionHolder;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -31,12 +32,14 @@ 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 SQLiteTipoEgresoDAO extends TipoEgresoDAO {
public class SQLiteTipoEgresoDAO implements TipoEgresoDAO {
private static final Logger LOGGER = Logger.getLogger(SQLiteTipoEgresoDAO.class.getName());
private ConnectionHolder connectionHolder;
public SQLiteTipoEgresoDAO() {
this.connectionHolder = new SQLiteConnectionHolder();
@@ -45,17 +48,17 @@ public class SQLiteTipoEgresoDAO extends TipoEgresoDAO {
@Override
public List<TipoEgreso> findAll() {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
String query = "select * from tipos_egreso";
try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from tipos_egreso";
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
LOGGER.log(Level.FINE, "QUERY: {0}", query);
tipoEgresoList = this.tipoEgresoFromResultSet(rs);
rs.close();
ps.close();
try (PreparedStatement ps = conn.prepareStatement(query)) {
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
TipoEgreso tipoEgreso = new TipoEgreso();
tipoEgreso.setId(rs.getInt("id"));
tipoEgreso.setNombre(rs.getString("nombre"));
}
}
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
@@ -63,44 +66,44 @@ public class SQLiteTipoEgresoDAO extends TipoEgresoDAO {
}
@Override
public List<TipoEgreso> findById(int id) {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
public Optional<TipoEgreso> findById(int id) {
TipoEgreso tipoEgreso = null;
String query = "select * from tipos_egreso where id = ?";
try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from tipos_egreso 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});
tipoEgresoList = this.tipoEgresoFromResultSet(rs);
rs.close();
ps.close();
try (PreparedStatement ps = conn.prepareStatement(query)) {
ps.setInt(1, id);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
tipoEgreso = new TipoEgreso();
tipoEgreso.setId(rs.getInt("id"));
tipoEgreso.setNombre(rs.getString("nombre"));
}
}
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return tipoEgresoList;
return Optional.ofNullable(tipoEgreso);
}
@Override
public List<TipoEgreso> findByNombre(String nombre) {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
public Optional<TipoEgreso> findByNombre(String nombre) {
TipoEgreso tipoEgreso = null;
String query = "select * from tipos_egreso where nombre = ?";
try (Connection conn = connectionHolder.getConnection()) {
String query = "select * from tipos_egreso where nombre = ?";
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, nombre);
ResultSet rs = ps.executeQuery();
LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, nombre});
tipoEgresoList = this.tipoEgresoFromResultSet(rs);
rs.close();
ps.close();
try (PreparedStatement ps = conn.prepareStatement(query)) {
ps.setString(1, nombre);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
tipoEgreso = new TipoEgreso();
tipoEgreso.setId(rs.getInt("id"));
tipoEgreso.setNombre(rs.getString("nombre"));
}
}
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
}
return tipoEgresoList;
return Optional.ofNullable(tipoEgreso);
}
}

View File

@@ -49,6 +49,12 @@
package danielcortes.xyz.models.tipo_egreso;
public class TipoEgreso {
public final static TipoEgreso EMPTY;
static {
EMPTY = new TipoEgreso();
EMPTY.setNombre("EMPTY");
}
private int id;
private String nombre;

View File

@@ -48,37 +48,13 @@
package danielcortes.xyz.models.tipo_egreso;
import danielcortes.xyz.data.ConnectionHolder;
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 TipoEgresoDAO {
public interface TipoEgresoDAO {
List<TipoEgreso> findAll();
private static final Logger LOGGER = Logger.getLogger(TipoEgresoDAO.class.getName());
Optional<TipoEgreso> findById(int id);
protected ConnectionHolder connectionHolder;
public abstract List<TipoEgreso> findAll();
public abstract List<TipoEgreso> findById(int id);
public abstract List<TipoEgreso> findByNombre(String nombre);
List<TipoEgreso> tipoEgresoFromResultSet(ResultSet rs) throws SQLException {
ArrayList<TipoEgreso> tipoEgresoList = new ArrayList<>();
while (rs.next()) {
TipoEgreso tipoEgreso = new TipoEgreso();
tipoEgreso.setId(rs.getInt("id"));
tipoEgreso.setNombre(rs.getString("nombre"));
LOGGER.log(Level.FINER, "Se a creado {0}", tipoEgreso);
tipoEgresoList.add(tipoEgreso);
}
return tipoEgresoList;
}
Optional<TipoEgreso> findByNombre(String nombre);
}

View File

@@ -1,14 +1,14 @@
package danielcortes.xyz.models.tipo_egreso;
public class TipoEgresoToStringWrapper extends TipoEgreso {
private TipoEgreso tipoEgreso;
public TipoEgresoToStringWrapper(TipoEgreso tipoEgreso) {
this.setId(tipoEgreso.getId());
this.setNombre(tipoEgreso.getNombre());
this.tipoEgreso = tipoEgreso;
}
@Override
public String toString() {
return this.getNombre();
return this.tipoEgreso.getNombre();
}
}