Documentado el controlador de ingresos
This commit is contained in:
@@ -31,6 +31,7 @@ import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO;
|
||||
import danielcortes.xyz.views.IngresosView;
|
||||
import danielcortes.xyz.views.components.IngresosTableModel;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.KeyAdapter;
|
||||
@@ -48,6 +49,13 @@ public class IngresosController {
|
||||
private Ingreso editingIngreso;
|
||||
private boolean editing;
|
||||
|
||||
/**
|
||||
* Crea el controlado de egresos, el cual esta acoplado con la vista de ingresos, controlando el estado y contenido de esta.
|
||||
* Al iniciarse ejecuta.
|
||||
* - Metodo que llena el combobox de tipos de ingreso
|
||||
* - Metodo que genera los eventos para la vista
|
||||
* - Metodo que actualiza el estado de los botones
|
||||
*/
|
||||
public IngresosController(IngresosView view, IngresoDAO ingresoDAO, TipoIngresoDAO tipoIngresoDAO) {
|
||||
this.view = view;
|
||||
this.ingresoDAO = ingresoDAO;
|
||||
@@ -57,20 +65,34 @@ public class IngresosController {
|
||||
this.updateButtonsEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter!!
|
||||
*/
|
||||
public IngresoDAO getIngresoDAO() {
|
||||
return ingresoDAO;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter!!!
|
||||
* @return
|
||||
*/
|
||||
public TipoIngresoDAO getTipoIngresoDAO() {
|
||||
return tipoIngresoDAO;
|
||||
}
|
||||
|
||||
/**
|
||||
* Guarda la caja ingresada y actualiza el contenido de la tabla de ingresos y el campo de total de ingresos
|
||||
* @param caja
|
||||
*/
|
||||
public void updateCaja(Caja caja){
|
||||
this.caja = caja;
|
||||
this.fillIngresosTable();
|
||||
this.updateTotalIngresos();
|
||||
}
|
||||
|
||||
/**
|
||||
* LLena el combobox de tipos de ingresos
|
||||
*/
|
||||
private void fillTipoIngresoCombo() {
|
||||
JComboBox<TipoIngreso> tipoCombo = this.view.getTipoCombo();
|
||||
for (TipoIngreso tipo : this.tipoIngresoDAO.findAll()) {
|
||||
@@ -78,6 +100,9 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Llena la tabla de ingresos con los ingresos pertenecientes a la caja guarda
|
||||
*/
|
||||
private void fillIngresosTable() {
|
||||
IngresosTableModel ingresosTableModel = this.view.getIngresosTableModel();
|
||||
ingresosTableModel.removeRows();
|
||||
@@ -86,8 +111,16 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Genera los eventos para los distintos componentes de la vista
|
||||
* - Cuando se presiona el boton de guardar o se apreta enter en los fields de valor, nro inicial,
|
||||
* nro final y tipo se llama a guardarActionListener
|
||||
* - Cuando se presiona el boton de eliminar se llama al eliminarActionListener
|
||||
* - Cuando se selecciona una fila en la tabla se llama a updateButtonsEnabled
|
||||
* - Cuando se presiona el boton de editar o se hace doble click sobre una fila de la tabla se llama a editarActionListener
|
||||
*/
|
||||
private void setupViewEvents() {
|
||||
this.view.getIngresosTable().getSelectionModel().addListSelectionListener(e -> onSelectTableRowListener());
|
||||
this.view.getIngresosTable().getSelectionModel().addListSelectionListener(e -> updateButtonsEnabled());
|
||||
this.view.getGuardarButton().addActionListener(e -> guardarActionListener());
|
||||
this.view.getValorField().addActionListener(e -> guardarActionListener());
|
||||
this.view.getNroInicialField().addActionListener(e -> guardarActionListener());
|
||||
@@ -114,16 +147,21 @@ public class IngresosController {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Realiza las preparaciones previas a guardar un ingreso
|
||||
* Primero llama a normalizar los inputs y a esconder los mensajes de error
|
||||
* Luego dependiendo si se tiene la flag editing en true o false se llama a editar ingreso o a guardarlo
|
||||
* Tras terminar esto se llama a resetear el focus.
|
||||
*/
|
||||
private void guardarActionListener() {
|
||||
this.normalizeInputs();
|
||||
this.hideErrorMessages();
|
||||
|
||||
String valor = this.view.getValorField().getText();
|
||||
String nroInicial = this.view.getNroInicialField().getText();
|
||||
String nroFinal = this.view.getNroFinalField().getText();
|
||||
TipoIngreso tipoIngreso = (TipoIngreso) this.view.getTipoCombo().getSelectedItem();
|
||||
|
||||
System.out.println(nroInicial);
|
||||
System.out.println(nroFinal);
|
||||
|
||||
if(editing) {
|
||||
this.editarIngreso(valor, nroInicial, nroFinal, tipoIngreso, this.caja);
|
||||
} else {
|
||||
@@ -132,6 +170,11 @@ public class IngresosController {
|
||||
this.resetFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Realiza las acciones necesarias para eliminar un ingreso
|
||||
* Solo lo va a realizar si es que esta seleccionada una fila de la tabla, se eliminara el ingreso seleccionado
|
||||
* Una vez eliminado se llama a actualizar el total de ingresos y el estado de los botones
|
||||
*/
|
||||
private void eliminarActionListener() {
|
||||
int selectedId = this.view.getIngresosTable().getSelectedRow();
|
||||
if(selectedId >= 0){
|
||||
@@ -143,7 +186,15 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Realiza las preparaciones previas a editar un ingreso
|
||||
* Primero llama a esconder los mensajes de error.
|
||||
* Guarda globlarmente el ingreso a ser editar, el id de este y una flag que indica que se esta en modo de editar.
|
||||
* Finalmente llena los campos de inputs con los datos del ingreso a editar.
|
||||
*/
|
||||
private void editarActionListener() {
|
||||
this.hideErrorMessages();
|
||||
|
||||
int selectedID = this.view.getIngresosTable().getSelectedRow();
|
||||
if(selectedID >= 0) {
|
||||
Ingreso ingreso = this.view.getIngresosTableModel().getIngreso(selectedID);
|
||||
@@ -159,16 +210,19 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
private void onSelectTableRowListener(){
|
||||
this.view.getEliminarButton().setEnabled(true);
|
||||
this.view.getEditarButton().setEnabled(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene el total de ingresos de la caja y lo coloca en el el field totalingresos
|
||||
*/
|
||||
private void updateTotalIngresos(){
|
||||
int total = this.ingresoDAO.getTotalIngreso(this.caja);
|
||||
this.view.getTotalIngresoField().setText(String.valueOf(total));
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza si los botones estan habilitados
|
||||
* Esto depende de si se encuentra al menos una fila en la tabla seleccionada
|
||||
* Si es asi, son habilidatos, si no, de deshabilitan
|
||||
*/
|
||||
private void updateButtonsEnabled() {
|
||||
if(this.view.getIngresosTable().getSelectedRow()>=0){
|
||||
this.view.getEliminarButton().setEnabled(true);
|
||||
@@ -179,6 +233,10 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Guarda un ingreso tras llamar a validar el input
|
||||
* Luego de guardar agrega a la tabla el ingreso, llama a limpiar los campos de input y a actualizar el total de ingresos
|
||||
*/
|
||||
private void guardarIngreso(String valor, String nroInicial, String nroFinal, TipoIngreso tipoIngreso, Caja caja){
|
||||
if(this.validateInput(valor, nroInicial, nroFinal, tipoIngreso, caja)){
|
||||
Ingreso ingreso = new Ingreso();
|
||||
@@ -196,6 +254,11 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edita el ingreso tras llamar a validar el input
|
||||
* Tras esto actualiza el ingreso en la tabla, llama a actualizar el total de ingresos, a limpiar los campos de input y a desactivar la flag de editing.
|
||||
*
|
||||
*/
|
||||
private void editarIngreso(String valor, String nroInicial, String nroFinal, TipoIngreso tipoIngreso, Caja caja){
|
||||
if(this.validateInput(valor, nroInicial, nroFinal, tipoIngreso, caja)){
|
||||
this.editingIngreso.setTipoIngreso(tipoIngreso);
|
||||
@@ -210,6 +273,10 @@ public class IngresosController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Llama a los metodos necesarios para validar el input
|
||||
* @return true cuando todas las validaciones retoran true, si no, false
|
||||
*/
|
||||
private boolean validateInput(String valor, String nroInicial, String nroFinal, TipoIngreso tipoIngreso, Caja caja) {
|
||||
this.hideErrorMessages();
|
||||
|
||||
@@ -222,10 +289,24 @@ public class IngresosController {
|
||||
return valorValidation && tipoIngresoValidation && cajaValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida la variable caja este caso
|
||||
* - Es null
|
||||
* @return Si este caso es true se retornara false, si no, se retorna true
|
||||
*/
|
||||
private boolean validateCaja(Caja caja) {
|
||||
return caja != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida la variable valor contra los casos
|
||||
* - Es null
|
||||
* - Esta vacio
|
||||
* - Los caracteres no son solamente digitos
|
||||
* - El largo del string es mayor 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");
|
||||
@@ -233,7 +314,6 @@ public class IngresosController {
|
||||
return false;
|
||||
}
|
||||
|
||||
valor = valor.trim();
|
||||
if (valor.isEmpty()) {
|
||||
this.view.getErrorValor().setText("El campo esta vacio");
|
||||
this.view.getErrorValor().setVisible(true);
|
||||
@@ -256,6 +336,13 @@ public class IngresosController {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida la variable nroInicial 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 validateNroInicial(String nroInicial){
|
||||
if (nroInicial == null) {
|
||||
this.view.getErrorNroInicial().setText("Hubo un problema con los datos");
|
||||
@@ -271,6 +358,13 @@ public class IngresosController {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida la variable nroFinal 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 validateNroFinal(String nroFinal){
|
||||
if (nroFinal == null) {
|
||||
this.view.getErrorNroFinal().setText("Hubo un problema con los datos");
|
||||
@@ -286,6 +380,12 @@ public class IngresosController {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida la variable caja este caso
|
||||
* - Es null
|
||||
* Cuando sea true, colocara un mensaje de error en el jlabel correspondiente
|
||||
* @return Si este caso es true se retornara false, si no, se retorna true
|
||||
*/
|
||||
private boolean validateTipoIngreso(TipoIngreso tipoIngreso) {
|
||||
if (tipoIngreso == null) {
|
||||
this.view.getErrorTipoIngreso().setText("Hubo un problema con los datos");
|
||||
@@ -295,6 +395,9 @@ public class IngresosController {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Esconde los mensajes de error en la ventana de ingresos
|
||||
*/
|
||||
private void hideErrorMessages() {
|
||||
this.view.getErrorTipoIngreso().setVisible(false);
|
||||
this.view.getErrorValor().setVisible(false);
|
||||
@@ -302,6 +405,9 @@ public class IngresosController {
|
||||
this.view.getErrorNroFinal().setVisible(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Vacia los jtextfields y selecciona la primera opcion del jcombobox
|
||||
*/
|
||||
private void clearInputs() {
|
||||
this.view.getTipoCombo().setSelectedIndex(0);
|
||||
this.view.getValorField().setText("");
|
||||
@@ -309,12 +415,18 @@ public class IngresosController {
|
||||
this.view.getNroFinalField().setText("");
|
||||
}
|
||||
|
||||
/**
|
||||
* Ejecuta un trim sobre todos los jtextfield
|
||||
*/
|
||||
private void normalizeInputs(){
|
||||
this.view.getValorField().setText(this.view.getValorField().getText().trim());
|
||||
this.view.getNroInicialField().setText(this.view.getNroInicialField().getText().trim());
|
||||
this.view.getNroFinalField().setText(this.view.getNroFinalField().getText().trim());
|
||||
}
|
||||
|
||||
/**
|
||||
* Le pide focus al tipo combo
|
||||
*/
|
||||
private void resetFocus(){
|
||||
this.view.getTipoCombo().requestFocus();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user