Creando orden de compra y aceptandolas

Esta por terminar la funcionalidad
This commit is contained in:
Daniel Cortés
2019-07-01 19:28:11 -04:00
parent e211385447
commit 6b4f55d752
30 changed files with 2043 additions and 841 deletions

99
COSAS_POR_ARREGLAR.md Normal file
View File

@@ -0,0 +1,99 @@
#Cosas que quiero arreglar, pero no podre
## Validaciones
Las validaciones encuentro que me quedaron bien, sin embargo creo que pueden ser mucho mejor,
el problema es que no encontre ninguna libreria que no trabaje con web o con objetos ya creados.
Mi idea de una buena libreria de validaciones es algo similar a la que utiliza laravel,
se pasa un objeto y una serie de reglas a aplicar a ese objeto, si alguna de las reglas falla, la
validacion completa fallara.
Estuve jugando un poco con la idea de hacer algo similar, pero no logre hacer que las reglas fueran
universales, para poder arreglar esto puede que me hubiese tomado mucho tiempo asi que decidi volver a
como estan en este momento.
Basicamente mi idea de una validacion tendria que tener un codigo como este:
```
Validation validacion = new Validation(
object.getA() => List.of(Rule.notNull(), Rule.string(), Rule.minLength(5)),
object.getB() => List.of(Rule.date)
).validate();
if(validation.hasError()) {
validation.showErrorDialog();
return;
}
```
Sin embargo no sabria como hacer un map al momento de inicializar un objeto (porque el => no existe en java),
podria crearlo y poblarlo antes, pero no quiero escribir tanto codigo y siento que quedaria sucio
dentro de un controlador.
# BaseTableModel
Me gusta esa parte de mi codigo, me deja bastante facil el crear un tabla bonita a la que solo le paso
un objeto y con las reglas que le asigno al inicializar los muestra correctamente, me ahorro el estar
transformando a strings en el controlador y cosas asi.
Sin embargo creo que podria ser mas limpio
```
this.model = new BaseTableModel<>(
new String[]{"Distribuidor", "Nº Libros", "Estado", "Fecha Emision"},
(row, rowIndex, colIndex) -> {
switch (colIndex) {
case 0:
return row.get(rowIndex).getDistribuidor().getRut();
case 1:
return row.get(rowIndex).getLibros().size();
case 2:
return row.get(rowIndex).getEstado();
case 3:
return row.get(rowIndex).getInsertedAt();
default:
return null;
}
}
);
```
Como se ve, cada vez tengo que obtener el objeto y luego obtener la parte que quiero mostrar.
Seguramente es facil dejarlo mas bonito, pero tendria que cambiar todas las vistas que usan una tabla,
me tomaria un rato quizas un poco largo y no quiero perderlo.
## LaunchController
Me gusta como queda, pero siento que igual se podria hacer algo mejor.
Seria perfecto que cada vista se pudiera autoinsertar de alguna forma en ese controlador, en vez de estar
llamando a cada una y creandola manualmente
Quizas puede hacerse de alguna forma con funciones estaticas? o alguna especie de singleton? como todos
los controladores existen solo una vez dentro de la aplicacion quizas es viable
Cosa que se pueda hacer lo siguiente
```
class Controller {
private View view;
// Constructor estatico
{
LaunchController.add(new Controller(new View()));
}
public Controller(View view) {
this.view = view;
}
public void goToView2() {
LaunchController.show(PanelName.View2);
}
}
```
No estoy seguro si seria viable, pero pareciera ser una buena solucion, ahora no la puedo implementar porque
significaria crear toda la arquitectura de la app desde cero.
No hay tiempo :c