1
00:00:00,140 --> 00:00:05,550
Y continuamos con el controlador en la clase anterior vimos cómo anotar cómo configurar la regla de

2
00:00:05,550 --> 00:00:10,230
validación en la clase ENTITY utilizando anotaciones del API de validación de ella.

3
00:00:10,320 --> 00:00:13,860
Ahora vamos a ir al controlador y vamos a validar.

4
00:00:13,950 --> 00:00:19,800
Vamos a configurar esta clase cliente para que se valide en el controlador justo antes de invocar el

5
00:00:19,800 --> 00:00:21,810
método Crédit y el método APDAYC.

6
00:00:21,960 --> 00:00:24,440
Entonces nos vamos al cliente Rest Controller.

7
00:00:25,880 --> 00:00:27,370
Nos vamos al método Crée?

8
00:00:27,620 --> 00:00:33,740
Bien, acá tenemos que marcar, configurar que el cliente, justo antes de entrar al método Créete,

9
00:00:33,770 --> 00:00:37,010
se tenga que validar y lo hace a través de un interceptor de Spring.

10
00:00:37,100 --> 00:00:43,550
Intercepta el objeto cliente y valida cada valor, cada atributo, desde el rico body que está enviando

11
00:00:43,610 --> 00:00:50,360
Angular en un formato, en una estructura jasso, la cual se traduce en un cierto a nuestra clase Entity.

12
00:00:50,600 --> 00:00:55,820
Entonces con la anotación Pauling, acá la marcamos y la vamos a importar.

13
00:00:55,950 --> 00:00:57,560
No importamos de ñadas valid.

14
00:00:57,560 --> 00:01:02,300
De hecho, fíjate que en la misma API de validación, de ñada, la misma que utilizamos en las reglas

15
00:01:02,300 --> 00:01:03,920
de validación en la clase Entity.

16
00:01:04,640 --> 00:01:06,260
Entonces se conecto, se valida.

17
00:01:06,320 --> 00:01:11,690
Si no colocamos esta anotación a pesar de que tenga las reglas configurada en clase, Entity no se va

18
00:01:11,690 --> 00:01:12,290
a validar.

19
00:01:12,410 --> 00:01:14,330
Entonces este paso es importante.

20
00:01:14,390 --> 00:01:21,140
Lo siguiente es inyectar al método Create al método del controlador, el objeto que contiene todos los

21
00:01:21,140 --> 00:01:27,020
mensajes de error, donde podemos saber si ocurrió algún problema, algún error en la validación.

22
00:01:27,050 --> 00:01:30,860
Entonces tenemos que pasar el objeto Binding Result

23
00:01:34,280 --> 00:01:35,420
y lo importamos.

24
00:01:36,440 --> 00:01:39,020
Lo importamos de Spring Framework.

25
00:01:39,110 --> 00:01:39,860
Vale, de hecho.

26
00:01:42,200 --> 00:01:44,630
Entonces ya con el objeto result podemos validar.

27
00:01:44,900 --> 00:01:45,860
Eso es lo primero.

28
00:01:45,980 --> 00:01:48,410
Más que validar es validar si vienen errores.

29
00:01:48,470 --> 00:01:50,960
Entonces result punto JASS error.

30
00:01:51,050 --> 00:01:52,520
Se contiene errores.

31
00:01:53,690 --> 00:01:56,660
Entonces si contiene errores, lo manejamos dentro de Steff.

32
00:01:56,720 --> 00:02:00,620
Si no, continúa con el flujo normal del método Crédit.

33
00:02:01,040 --> 00:02:02,480
Pero qué pasa si tiene errores?

34
00:02:02,690 --> 00:02:08,870
Tenemos que retornar un Response Entity con el map y dentro de este marco los mensajes de error con

35
00:02:08,870 --> 00:02:17,210
la lista de mensaje del tipo String y con un http status del tipo bat rico es del tipo 400.

36
00:02:17,300 --> 00:02:23,720
Es el código que se utiliza cuando falla una validación en una aplicación web con HTTP.

37
00:02:24,440 --> 00:02:27,760
Entonces simplemente podemos copiar esto y cambiamos.

38
00:02:27,770 --> 00:02:32,310
Simplemente cambiamos el http status path request.

39
00:02:33,950 --> 00:02:37,910
Bat recuestes 400 ba herriko está bien.

40
00:02:38,330 --> 00:02:42,080
Ahora por acá tenemos que pasar en el response lo mensaje de error.

41
00:02:48,710 --> 00:02:52,070
Acá tenemos que crear una lista del tipo String.

42
00:02:52,580 --> 00:02:55,550
Un list del tipo string que contenga los mensajes de error.

43
00:02:59,510 --> 00:03:00,740
Un simple array.

44
00:03:00,770 --> 00:03:01,190
Listo.

45
00:03:02,780 --> 00:03:09,050
Bien, entonces ahora de alguna forma tenemos que obtener los mensajes de error de cada campo y convertir

46
00:03:09,050 --> 00:03:12,380
estos en una lista de errores del tipo String.

47
00:03:13,310 --> 00:03:17,880
Entonces en el result acá podemos obtener get file error.

48
00:03:17,960 --> 00:03:20,720
Por acá lo tenemos que va a retornar una lista.

49
00:03:21,680 --> 00:03:24,690
Define error get it errors.

50
00:03:25,700 --> 00:03:31,190
Entonces la idea es iterar con un Ford a través de esta colección de campo con errores, simplemente

51
00:03:31,280 --> 00:03:32,870
utilizando un Ford.

52
00:03:34,130 --> 00:03:41,540
Vamos a iterar por cada field error, ya que este get errors retorna una lista que del tipo file error.

53
00:03:44,890 --> 00:03:46,360
Efecto, acá tenés que importar.

54
00:03:46,810 --> 00:03:47,680
Importamos Filth.

55
00:03:47,770 --> 00:03:48,220
Error.

56
00:03:48,670 --> 00:03:48,880
Bien.

57
00:03:48,940 --> 00:03:55,780
Y acá simplemente con el método add del list agregamos el error.

58
00:03:55,870 --> 00:03:56,560
El mensaje de error.

59
00:03:56,620 --> 00:03:57,370
Qué es un string?

60
00:03:58,450 --> 00:04:00,790
Punto Get foll message.

61
00:04:00,850 --> 00:04:04,140
Get Message contiene el mensaje de error del tipo String.

62
00:04:04,360 --> 00:04:04,840
Y ahí estamos.

63
00:04:04,840 --> 00:04:05,320
Perfecto.

64
00:04:05,380 --> 00:04:06,580
Con eso estaríamos.

65
00:04:06,580 --> 00:04:09,670
Podríamos agregar el nombre del campo, por ejemplo.

66
00:04:09,760 --> 00:04:13,240
Acá vamos a concatenar el campo.

67
00:04:15,610 --> 00:04:18,940
Acá también tenemos el método Get file, get file.

68
00:04:19,030 --> 00:04:20,800
Obtenemos el nombre del campo.

69
00:04:21,100 --> 00:04:22,720
Le podríamos dar una separación.

70
00:04:24,230 --> 00:04:29,540
Y además, una comilla simple para enmarcar el nombre, el campo, y con eso estamos.

71
00:04:29,570 --> 00:04:35,000
Esto sería la forma de manejar los errores a través de la API list de una ArrayList y tirando con un

72
00:04:35,000 --> 00:04:36,530
for y guardando los mensajes.

73
00:04:36,590 --> 00:04:42,140
Pero si estamos utilizando, por ejemplo, JDK 8 o YABA 8 como le queramos llamar, podríamos utilizar

74
00:04:42,230 --> 00:04:47,630
el API Stream, que en realidad nos permite hacer exactamente lo mismo, pero con menos código y de

75
00:04:47,630 --> 00:04:51,050
una forma más limpia trabajando con programación funcional.

76
00:04:51,080 --> 00:04:54,860
Por ejemplo, no tenemos el ArrayList, no tenemos que usar un for.

77
00:04:55,280 --> 00:04:57,320
Todo esto lo hacemos a través del streams.

78
00:04:57,410 --> 00:05:05,210
Vamos modificando nuestro stream hasta que lo convertimos en un stream de string del tipo texto en vez

79
00:05:05,210 --> 00:05:07,570
de que sea un stream de ficheros.

80
00:05:07,670 --> 00:05:08,330
Vamos a ello.

81
00:05:08,390 --> 00:05:14,420
Vamos a comentar entonces esta forma anterior al £J de caucho y vamos a utilizar strings.

82
00:05:15,200 --> 00:05:18,700
Entonces lo primero es tener nuestra lista acá list.

83
00:05:19,070 --> 00:05:19,540
Perfecto.

84
00:05:19,610 --> 00:05:21,410
A eso queremos llegar, a eso queremos convertir.

85
00:05:21,440 --> 00:05:27,440
Vamos a partir entonces de Liked Fit, erros que por supuesto, los tipos de datos son completamente

86
00:05:27,500 --> 00:05:28,130
distintos.

87
00:05:28,340 --> 00:05:30,910
Acá maneja string y acá un fichero.

88
00:05:30,950 --> 00:05:40,190
Pero bien, partamos primero con convertir esta lista de error en un string y a partir de este flujo

89
00:05:40,310 --> 00:05:47,450
de este stream utilizando el operador map a medida que los items se vayan emitiendo los elementos del

90
00:05:47,450 --> 00:05:54,740
tipo file erros uno por uno por cada field error lo vamos a convertir en un tipo string y finalmente

91
00:05:54,740 --> 00:06:01,820
convertimos el flujo este stream del tipo file error lo convertimos a un tipo string, un tipo texto.

92
00:06:02,360 --> 00:06:08,780
Entonces el map muy parecido al operador MAP de Angular, el mismo concept por cada elemento de flujo

93
00:06:08,870 --> 00:06:10,910
lo podemos convertir, lo podemos transformar.

94
00:06:11,000 --> 00:06:14,810
Y también acá trabajamos con funciones de flecha o expresión lambda.

95
00:06:14,870 --> 00:06:22,970
Como argumento vamos a obtener en esta función lanta o de flecha el error y acá con flecha acá podemos

96
00:06:22,970 --> 00:06:24,980
tener nuestra función para convertir.

97
00:06:25,040 --> 00:06:28,670
Y eso sería simplemente esto, el string.

98
00:06:30,100 --> 00:06:30,870
Simplemente eso.

99
00:06:31,180 --> 00:06:36,580
Como tenemos una sola línea, una sola instrucción, no es necesario tener las llaves ni tampoco el

100
00:06:36,580 --> 00:06:36,970
ratón.

101
00:06:37,030 --> 00:06:39,700
Pero básicamente sería lo mismo que las llaves.

102
00:06:43,470 --> 00:06:47,910
Acá tenemos al ratón y punto y coma sería exactamente lo mismo.

103
00:06:48,120 --> 00:06:48,390
Bien.

104
00:06:48,600 --> 00:06:56,010
Y acá, ya que tenemos convertido nuestro flujo a un tipo string, a un tipo texto, ahora podemos convertir

105
00:06:56,100 --> 00:06:59,220
de regreso el stream en un tipo list, en una lista.

106
00:06:59,280 --> 00:07:06,170
Para eso usamos el Connect y usamos la clase con lector@s iniciando mayúscula.

107
00:07:06,240 --> 00:07:11,070
Y con ese punto tu list Tullius.

108
00:07:12,440 --> 00:07:13,070
Perfecto.

109
00:07:13,160 --> 00:07:14,420
Hoy hicimos la conversión.

110
00:07:14,600 --> 00:07:16,670
Si se fijan, cambiamos todo esto.

111
00:07:17,000 --> 00:07:20,690
Por todo esto podemos quitar el ratón y las llaves.

112
00:07:21,990 --> 00:07:28,380
Quitamos la llave y quitamos el punto y coma y lo dejamos todo en una sola línea por defecto va a retornar

113
00:07:28,500 --> 00:07:30,870
esta transformación que hicimos en el MAP.

114
00:07:31,080 --> 00:07:34,650
Acá recibimos un error, lo convertimos a un string.

115
00:07:34,980 --> 00:07:39,850
Lo retornamos y ya tenemos ahora un collect, pero del tipo String.

116
00:07:40,440 --> 00:07:41,670
Un tipo dato compatible.

117
00:07:42,480 --> 00:07:43,710
Y esto ya lo podemos quitar.

118
00:07:44,160 --> 00:07:49,020
Bien, ahí tenemos listo e implementado nuestro manejo de errores en el método Croy.

119
00:07:49,080 --> 00:07:50,790
Manejo de errores en la validación.

120
00:07:50,880 --> 00:07:53,840
Ahora tenemos que replicar exactamente igual en el Abbe.

121
00:07:53,910 --> 00:07:55,800
Por lo tanto, vamos a copiar el Valid.

122
00:07:56,890 --> 00:07:57,580
En el APDAYC.

123
00:08:00,150 --> 00:08:07,290
Después vamos a tener el binding result justo después de cliente, también acá, justo después de cliente.

124
00:08:09,390 --> 00:08:12,690
Pero antes del выбрать variable e importante ese orden.

125
00:08:12,990 --> 00:08:14,970
Después vamos a tener el IF.

126
00:08:15,940 --> 00:08:19,030
Lo dejamos por acá y guardamos.

127
00:08:19,150 --> 00:08:20,560
Eso sería todo por ahora.

128
00:08:20,650 --> 00:08:21,610
Quedamos hasta acá.

129
00:08:21,730 --> 00:08:23,920
Espero que haya quedado claro el tema.

130
00:08:23,980 --> 00:08:30,010
El concepto de cómo se trabaja con Stream acá lo estamos aplicando, pero es un tema ya más del lenguaje

131
00:08:30,070 --> 00:08:31,170
propio de Yaba.

132
00:08:31,300 --> 00:08:36,880
No quiero profundizar mucho sobre este tema porque obviamente se beut de contexto en este video.

133
00:08:36,940 --> 00:08:43,030
Simplemente lo estamos utilizando en vez de usar el foreach y el ArrayList, pero bien pueden usar.

134
00:08:43,090 --> 00:08:48,490
En definitiva, cualquiera de las dos formas, ya sea con stream o con el foreach y el ArrayList, nos

135
00:08:48,490 --> 00:08:49,890
vemos hasta la próxima.
