From b9f4c4ccd9ab7103e1c72c46ed8f9274e7dff7a0 Mon Sep 17 00:00:00 2001 From: Daniel Cortes Date: Sun, 30 Dec 2018 17:57:49 -0300 Subject: [PATCH] Documentado el controlador de egresos --- .idea/workspace.xml | 240 +++++++++++++++--- .../xyz/controllers/EgresosController.java | 130 +++++++++- 2 files changed, 320 insertions(+), 50 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0e9631a..a952cf4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,13 +7,8 @@ - - - - - - + @@ -69,7 +64,122 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -274,7 +384,7 @@ - + @@ -438,7 +548,9 @@ - + + + 1545280618093 @@ -580,11 +692,18 @@ - - @@ -597,8 +716,9 @@ + - + @@ -705,14 +825,14 @@ - - @@ -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(); }