Documentado el controlador de egresos
This commit is contained in:
@@ -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<TipoEgreso> 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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user