-
-
@@ -1103,72 +1003,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -1187,20 +1029,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1213,6 +1069,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/caja.iml b/caja.iml
index 6682e94..631fb50 100644
--- a/caja.iml
+++ b/caja.iml
@@ -13,5 +13,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/danielcortes/xyz/controllers/EgresosController.java b/src/danielcortes/xyz/controllers/EgresosController.java
index 7470849..7a0df61 100644
--- a/src/danielcortes/xyz/controllers/EgresosController.java
+++ b/src/danielcortes/xyz/controllers/EgresosController.java
@@ -49,13 +49,11 @@ public class EgresosController {
private Egreso editingEgreso;
/**
- * Crea el controlador para la vista de egresos y ejecuta:
+ * Crea el controlador, el cual esta acoplado con la vista de egresos, controlando el estado y el contenido de esta
+ * Al inicial 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;
@@ -83,8 +81,7 @@ public class EgresosController {
}
/**
- * Actualiza los datos de la tabla de egresos y actualiza el field con el total de egresos.
- * @param caja
+ * Guarda la caja entregada y actualiza los datos de la tabla de egresos y actualiza el field con el total de egresos.
*/
public void updateCaja(Caja caja){
this.caja = caja;
@@ -118,7 +115,8 @@ public class EgresosController {
* - 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.
+ * - Cuando se presiona editar o se realizan 2 clicks en la tabla de egresos se llama a editarActionListener
+ * - Cuando se selecciona una fila en la tabla se llama a updateButtonsEnabled
*/
private void setUpViewEvents() {
this.view.getEgresosTable().getSelectionModel().addListSelectionListener(e -> updateButtonsEnabled());
@@ -147,7 +145,7 @@ public class EgresosController {
}
/**
- * Realiza las actiones necesarias para guardar un egreso
+ * Realiza las preparaciones previas a 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
@@ -187,12 +185,11 @@ public class EgresosController {
/**
* Realiza lo necesario para comenzar a editar un egreso
- * Llama a esconder los mensajes de error y a normalizar los inputs
+ * Llama a esconder los mensajes de error.
* 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();
@@ -272,6 +269,7 @@ public class EgresosController {
/**
* llama a los metodos necesarios para validar los inputs entregados
+ * @return true cuando todas las validaciones retoran true, si no, false
*/
private boolean validateInput(String nro, String descripcion, String valor, TipoEgreso tipoEgreso, Caja caja) {
diff --git a/src/danielcortes/xyz/controllers/IngresosController.java b/src/danielcortes/xyz/controllers/IngresosController.java
index 181aa44..edc28be 100644
--- a/src/danielcortes/xyz/controllers/IngresosController.java
+++ b/src/danielcortes/xyz/controllers/IngresosController.java
@@ -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 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();
}