-
@@ -839,13 +959,7 @@
-
-
-
-
-
-
-
+
@@ -989,14 +1103,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
@@ -1015,34 +1187,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/danielcortes/xyz/controllers/EgresosController.java b/src/danielcortes/xyz/controllers/EgresosController.java
index 797c5f5..7470849 100644
--- a/src/danielcortes/xyz/controllers/EgresosController.java
+++ b/src/danielcortes/xyz/controllers/EgresosController.java
@@ -48,6 +48,15 @@ public class EgresosController {
private boolean editing;
private Egreso editingEgreso;
+ /**
+ * Crea el controlador para la vista de egresos y ejecuta:
+ * - Metodo que genera los eventos para la vista.
+ * - Metodo que llena los tipos de egresos en la vista.
+ * - Actualiza el estado de los botones.
+ * @param view
+ * @param egresoDAO
+ * @param tipoEgresoDAO
+ */
public EgresosController(EgresosView view, EgresoDAO egresoDAO, TipoEgresoDAO tipoEgresoDAO) {
this.view = view;
this.egresoDAO = egresoDAO;
@@ -57,20 +66,35 @@ public class EgresosController {
this.updateButtonsEnabled();
}
+ /**
+ * Getter!
+ * @return
+ */
public EgresoDAO getEgresoDAO() {
return egresoDAO;
}
+ /**
+ * Getter
+ * @return
+ */
public TipoEgresoDAO getTipoEgresoDAO() {
return tipoEgresoDAO;
}
+ /**
+ * Actualiza los datos de la tabla de egresos y actualiza el field con el total de egresos.
+ * @param caja
+ */
public void updateCaja(Caja caja){
this.caja = caja;
this.fillEgresosTable();
this.updateTotalEgresos();
}
+ /**
+ * Rellena el ComboBox con los tipos de egresos disponibles
+ */
private void fillTipoEgresoCombo() {
JComboBox tipoCombo = view.getTipoCombo();
for (TipoEgreso tipoEgreso : this.tipoEgresoDAO.findAll()) {
@@ -78,6 +102,9 @@ public class EgresosController {
}
}
+ /**
+ * Rellena la tabla de egresos con los egresos correspondientes a la caja seleccionada
+ */
private void fillEgresosTable() {
EgresosTableModel egresosTableModel = view.getEgresosTableModel();
egresosTableModel.removeRows();
@@ -86,8 +113,15 @@ public class EgresosController {
}
}
+ /**
+ * Asigna todos los eventos para la vista de egresos.
+ * - Cuando se apreta el boton de guardar o se apreta enter en los fields de descripcion, nro, valor y tipo
+ * Se llama al metodo guardarActionListener.
+ * - Cuando se apreta el boton de eliminar se llama al metodos eliminarActionListener
+ * - Cuando se presuiona editar o se realizan 2 clicks en la tabla de egresos se llama al metodo editar.
+ */
private void setUpViewEvents() {
- this.view.getEgresosTable().getSelectionModel().addListSelectionListener(e -> onSelectTableRowListener());
+ this.view.getEgresosTable().getSelectionModel().addListSelectionListener(e -> updateButtonsEnabled());
this.view.getGuardarButton().addActionListener(e -> guardarActionListener());
this.view.getEliminarButton().addActionListener(e -> eliminarActionListener());
this.view.getEditarButton().addActionListener(e -> editarActionListener());
@@ -112,8 +146,16 @@ public class EgresosController {
});
}
+ /**
+ * Realiza las actiones necesarias para guardar un egreso
+ * Primero llama a normalizar los inputs y a ocultar los mensajes de error
+ * Luego si es que esta colocada la flag de editing se llama al metodo editarEgreso y si no, se llama a guardarEgreso
+ * Al terminar esto, se llama a resetear el focus en los inputs y a actualizar el total de egresos
+ *
+ */
private void guardarActionListener() {
this.normalizeInputs();
+ this.hideErrorMessages();
String nro = this.view.getNroField().getText();
String descripcion = this.view.getDescripcionField().getText();
@@ -128,6 +170,10 @@ public class EgresosController {
this.resetFocus();
}
+ /**
+ * Realiza las acciones necesarias para eliminar un egreso
+ * Obtiene el egreso seleccionado y lo elimina, luego llama a actualizar el total de egresos y a actualizar el estado de los botones.
+ */
private void eliminarActionListener() {
int selectedID = this.view.getEgresosTable().getSelectedRow();
if (selectedID >= 0) {
@@ -139,7 +185,16 @@ public class EgresosController {
}
}
+ /**
+ * Realiza lo necesario para comenzar a editar un egreso
+ * Llama a esconder los mensajes de error y a normalizar los inputs
+ * Guarda globalmente en la clase el egreso que se esta editando, su id y una flag indicando que se esta en modo editar.
+ * Ademas rellena los campos de input con los valores del egreso que se esta editando.
+ */
private void editarActionListener() {
+ this.normalizeInputs();
+ this.hideErrorMessages();
+
int selectedID = this.view.getEgresosTable().getSelectedRow();
if (selectedID >= 0) {
Egreso egreso = this.view.getEgresosTableModel().getEgreso(selectedID);
@@ -155,16 +210,18 @@ public class EgresosController {
}
}
- private void onSelectTableRowListener() {
- this.view.getEliminarButton().setEnabled(true);
- this.view.getEditarButton().setEnabled(true);
- }
-
+ /**
+ * Obtiene el total de egresos y los coloca en el campo de totalEgresosField.
+ */
private void updateTotalEgresos() {
int total = this.egresoDAO.getTotalEgreso(this.caja);
this.view.getTotalEgresosField().setText(String.valueOf(total));
}
+ /**
+ * Cuando se tiene seleccionada una fila de la tabla activa los botones de eliminar y editar
+ * Si no esta seleccionada los desactiva
+ */
private void updateButtonsEnabled() {
if (this.view.getEgresosTable().getSelectedRow() >= 0) {
this.view.getEliminarButton().setEnabled(true);
@@ -175,6 +232,10 @@ public class EgresosController {
}
}
+ /**
+ * Guarda un egreso tras llamar a validar su input
+ * Luego de guardar, agrega el egreso a la tabla, llama a actualizar el total de egresos y llama a limpiar a los inputs
+ */
private void guardarEgreso(String nro, String descripcion, String valor, TipoEgreso tipo, Caja caja) {
if (this.validateInput(nro, descripcion, valor, tipo, caja)) {
Egreso egreso = new Egreso();
@@ -190,6 +251,11 @@ public class EgresosController {
}
}
+ /**
+ * Actualiza un egreso tras llamar a validar su input
+ * Tras esto actualiza el egreso en la tabla, llama a actualizar el total de egresos y a limpiar los inputs
+ * Finalmente setea la flag editing a false
+ */
private void editarEgreso(String nro, String descripcion, String valor, TipoEgreso tipo, Caja caja) {
if (this.validateInput(nro, descripcion, valor, tipo, caja)) {
this.editingEgreso.setValor(Integer.valueOf(valor));
@@ -204,8 +270,10 @@ public class EgresosController {
}
}
+ /**
+ * llama a los metodos necesarios para validar los inputs entregados
+ */
private boolean validateInput(String nro, String descripcion, String valor, TipoEgreso tipoEgreso, Caja caja) {
- this.hideErrorMessages();
boolean nroValidation = this.validateNro(nro);
boolean descripcionValidation = this.validateDescripcion(descripcion);
@@ -216,6 +284,13 @@ public class EgresosController {
return nroValidation && descripcionValidation && valorValidation && tipoEgresoValidation;
}
+ /**
+ * Valida la variable nro contra los casos
+ * - Es null
+ * - Esta vacio
+ * Cuando el primer caso sea true, colocara un mensaje de error correspondiente en el jlabel correspondiente
+ * @return Si cualquiera de estos casos son true se retornara false, si no, se retorna true
+ */
private boolean validateNro(String nro) {
if (nro == null) {
this.view.getErrorNumero().setText("Hubo un problema con los datos");
@@ -233,6 +308,13 @@ public class EgresosController {
}
+ /**
+ * Valida la variable descripcion contra los casos
+ * - Es null
+ * - Esta vacio
+ * Cuando el primer caso sea true, colocara un mensaje de error correspondiente en el jlabel correspondiente
+ * @return Si cualquiera de estos casos son true se retornara false, si no, se retorna true
+ */
private boolean validateDescripcion(String descripcion) {
if (descripcion == null) {
this.view.getErrorDescripcion().setText("Hubo un problema con los datos");
@@ -240,7 +322,6 @@ public class EgresosController {
return false;
}
- descripcion = descripcion.trim();
if (descripcion.isEmpty()) {
this.view.getErrorDescripcion().setText("El campo esta vacio");
this.view.getErrorDescripcion().setVisible(true);
@@ -249,6 +330,15 @@ public class EgresosController {
return true;
}
+ /**
+ * Valida la variable valor contra los casos
+ * - Es null
+ * - Esta vacio
+ * - Los caracteres no son todos digitos
+ * - El largo del string es mayot a 10
+ * Cuando el primer caso sea true, colocara un mensaje de error correspondiente en el jlabel correspondiente
+ * @return Si cualquiera de estos casos son true se retornara false, si no, se retorna true
+ */
private boolean validateValor(String valor) {
if (valor == null) {
this.view.getErrorValor().setText("Hubo un problema con los datos");
@@ -256,7 +346,6 @@ public class EgresosController {
return false;
}
- valor = valor.trim();
if (valor.isEmpty()) {
this.view.getErrorValor().setText("El campo esta vacio");
this.view.getErrorValor().setVisible(true);
@@ -279,6 +368,12 @@ public class EgresosController {
}
+ /**
+ * Valida la variable tipoEgreso contra los casos
+ * - Es null
+ * Cuando este caso sea true, colocara un mensaje de error correspondiente en el jlabel correspondiente
+ * @return Si este caso es true se retornara false, si no, se retorna true
+ */
private boolean validateTipoEgreso(TipoEgreso tipoEgreso) {
if (tipoEgreso == null) {
this.view.getErrorTipoEgreso().setText("Hubo un problema con los datos");
@@ -288,10 +383,18 @@ public class EgresosController {
return true;
}
+ /**
+ * Valida la variable caja contra los casos
+ * - Es null
+ * @return Si este caso es true se retornara false, si no, se retorna true
+ */
private boolean validateCaja(Caja caja){
return caja != null;
}
+ /**
+ * Esconde los mensajes de error en la ventana de egresos
+ */
private void hideErrorMessages() {
this.view.getErrorTipoEgreso().setVisible(false);
this.view.getErrorValor().setVisible(false);
@@ -299,6 +402,9 @@ public class EgresosController {
this.view.getErrorNumero().setVisible(false);
}
+ /**
+ * Vacia los campos de texto y selecciona la primera opcion en el jcombobox
+ */
private void clearInputs() {
this.view.getTipoCombo().setSelectedIndex(0);
this.view.getNroField().setText("");
@@ -306,6 +412,9 @@ public class EgresosController {
this.view.getDescripcionField().setText("");
}
+ /**
+ * Ejecuta trim sobre todos los campos de texto
+ */
private void normalizeInputs(){
this.view.getValorField().setText(this.view.getValorField().getText().trim());
this.view.getNroField().setText(this.view.getNroField().getText().trim());
@@ -313,6 +422,9 @@ public class EgresosController {
}
+ /**
+ * Setea el focus en el campo nroField
+ */
private void resetFocus() {
this.view.getNroField().requestFocus();
}