Y continuamos con el controlador en la clase anterior vimos cómo anotar cómo configurar la regla de
validación en la clase ENTITY utilizando anotaciones del API de validación de ella.
Ahora vamos a ir al controlador y vamos a validar.
Vamos a configurar esta clase cliente para que se valide en el controlador justo antes de invocar el
método Crédit y el método APDAYC.
Entonces nos vamos al cliente Rest Controller.
Nos vamos al método Crée?
Bien, acá tenemos que marcar, configurar que el cliente, justo antes de entrar al método Créete,
se tenga que validar y lo hace a través de un interceptor de Spring.
Intercepta el objeto cliente y valida cada valor, cada atributo, desde el rico body que está enviando
Angular en un formato, en una estructura jasso, la cual se traduce en un cierto a nuestra clase Entity.
Entonces con la anotación Pauling, acá la marcamos y la vamos a importar.
No importamos de ñadas valid.
De hecho, fíjate que en la misma API de validación, de ñada, la misma que utilizamos en las reglas
de validación en la clase Entity.
Entonces se conecto, se valida.
Si no colocamos esta anotación a pesar de que tenga las reglas configurada en clase, Entity no se va
a validar.
Entonces este paso es importante.
Lo siguiente es inyectar al método Create al método del controlador, el objeto que contiene todos los
mensajes de error, donde podemos saber si ocurrió algún problema, algún error en la validación.
Entonces tenemos que pasar el objeto Binding Result
y lo importamos.
Lo importamos de Spring Framework.
Vale, de hecho.
Entonces ya con el objeto result podemos validar.
Eso es lo primero.
Más que validar es validar si vienen errores.
Entonces result punto JASS error.
Se contiene errores.
Entonces si contiene errores, lo manejamos dentro de Steff.
Si no, continúa con el flujo normal del método Crédit.
Pero qué pasa si tiene errores?
Tenemos que retornar un Response Entity con el map y dentro de este marco los mensajes de error con
la lista de mensaje del tipo String y con un http status del tipo bat rico es del tipo 400.
Es el código que se utiliza cuando falla una validación en una aplicación web con HTTP.
Entonces simplemente podemos copiar esto y cambiamos.
Simplemente cambiamos el http status path request.
Bat recuestes 400 ba herriko está bien.
Ahora por acá tenemos que pasar en el response lo mensaje de error.
Acá tenemos que crear una lista del tipo String.
Un list del tipo string que contenga los mensajes de error.
Un simple array.
Listo.
Bien, entonces ahora de alguna forma tenemos que obtener los mensajes de error de cada campo y convertir
estos en una lista de errores del tipo String.
Entonces en el result acá podemos obtener get file error.
Por acá lo tenemos que va a retornar una lista.
Define error get it errors.
Entonces la idea es iterar con un Ford a través de esta colección de campo con errores, simplemente
utilizando un Ford.
Vamos a iterar por cada field error, ya que este get errors retorna una lista que del tipo file error.
Efecto, acá tenés que importar.
Importamos Filth.
Error.
Bien.
Y acá simplemente con el método add del list agregamos el error.
El mensaje de error.
Qué es un string?
Punto Get foll message.
Get Message contiene el mensaje de error del tipo String.
Y ahí estamos.
Perfecto.
Con eso estaríamos.
Podríamos agregar el nombre del campo, por ejemplo.
Acá vamos a concatenar el campo.
Acá también tenemos el método Get file, get file.
Obtenemos el nombre del campo.
Le podríamos dar una separación.
Y además, una comilla simple para enmarcar el nombre, el campo, y con eso estamos.
Esto sería la forma de manejar los errores a través de la API list de una ArrayList y tirando con un
for y guardando los mensajes.
Pero si estamos utilizando, por ejemplo, JDK 8 o YABA 8 como le queramos llamar, podríamos utilizar
el API Stream, que en realidad nos permite hacer exactamente lo mismo, pero con menos código y de
una forma más limpia trabajando con programación funcional.
Por ejemplo, no tenemos el ArrayList, no tenemos que usar un for.
Todo esto lo hacemos a través del streams.
Vamos modificando nuestro stream hasta que lo convertimos en un stream de string del tipo texto en vez
de que sea un stream de ficheros.
Vamos a ello.
Vamos a comentar entonces esta forma anterior al £J de caucho y vamos a utilizar strings.
Entonces lo primero es tener nuestra lista acá list.
Perfecto.
A eso queremos llegar, a eso queremos convertir.
Vamos a partir entonces de Liked Fit, erros que por supuesto, los tipos de datos son completamente
distintos.
Acá maneja string y acá un fichero.
Pero bien, partamos primero con convertir esta lista de error en un string y a partir de este flujo
de este stream utilizando el operador map a medida que los items se vayan emitiendo los elementos del
tipo file erros uno por uno por cada field error lo vamos a convertir en un tipo string y finalmente
convertimos el flujo este stream del tipo file error lo convertimos a un tipo string, un tipo texto.
Entonces el map muy parecido al operador MAP de Angular, el mismo concept por cada elemento de flujo
lo podemos convertir, lo podemos transformar.
Y también acá trabajamos con funciones de flecha o expresión lambda.
Como argumento vamos a obtener en esta función lanta o de flecha el error y acá con flecha acá podemos
tener nuestra función para convertir.
Y eso sería simplemente esto, el string.
Simplemente eso.
Como tenemos una sola línea, una sola instrucción, no es necesario tener las llaves ni tampoco el
ratón.
Pero básicamente sería lo mismo que las llaves.
Acá tenemos al ratón y punto y coma sería exactamente lo mismo.
Bien.
Y acá, ya que tenemos convertido nuestro flujo a un tipo string, a un tipo texto, ahora podemos convertir
de regreso el stream en un tipo list, en una lista.
Para eso usamos el Connect y usamos la clase con lector@s iniciando mayúscula.
Y con ese punto tu list Tullius.
Perfecto.
Hoy hicimos la conversión.
Si se fijan, cambiamos todo esto.
Por todo esto podemos quitar el ratón y las llaves.
Quitamos la llave y quitamos el punto y coma y lo dejamos todo en una sola línea por defecto va a retornar
esta transformación que hicimos en el MAP.
Acá recibimos un error, lo convertimos a un string.
Lo retornamos y ya tenemos ahora un collect, pero del tipo String.
Un tipo dato compatible.
Y esto ya lo podemos quitar.
Bien, ahí tenemos listo e implementado nuestro manejo de errores en el método Croy.
Manejo de errores en la validación.
Ahora tenemos que replicar exactamente igual en el Abbe.
Por lo tanto, vamos a copiar el Valid.
En el APDAYC.
Después vamos a tener el binding result justo después de cliente, también acá, justo después de cliente.
Pero antes del выбрать variable e importante ese orden.
Después vamos a tener el IF.
Lo dejamos por acá y guardamos.
Eso sería todo por ahora.
Quedamos hasta acá.
Espero que haya quedado claro el tema.
El concepto de cómo se trabaja con Stream acá lo estamos aplicando, pero es un tema ya más del lenguaje
propio de Yaba.
No quiero profundizar mucho sobre este tema porque obviamente se beut de contexto en este video.
Simplemente lo estamos utilizando en vez de usar el foreach y el ArrayList, pero bien pueden usar.
En definitiva, cualquiera de las dos formas, ya sea con stream o con el foreach y el ArrayList, nos
vemos hasta la próxima.