Creando orden de compra y aceptandolas
Esta por terminar la funcionalidad
This commit is contained in:
99
COSAS_POR_ARREGLAR.md
Normal file
99
COSAS_POR_ARREGLAR.md
Normal 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
|
||||
Reference in New Issue
Block a user