1
00:00:00,180 --> 00:00:05,580
Bien, continuamos creando el property editors para país, para modificar este dique íbamos a enviar

2
00:00:05,670 --> 00:00:07,740
del país en el objeto completo país.

3
00:00:08,070 --> 00:00:14,250
Entonces por acá, en el РАМКАХ Editors, vamos a crear una nueva clase, le vamos a llamar País Property

4
00:00:14,310 --> 00:00:17,310
Editor Finalizar.

5
00:00:18,640 --> 00:00:27,970
Bien, como siempre, Extend Property editor su puerto de lleva Vinz con click derecho, vamos a sobrescribir

6
00:00:27,970 --> 00:00:30,460
el método Click Derecho Source o Be Right.

7
00:00:31,630 --> 00:00:37,330
Y buscamos Zeth, haz texto por acá, Zet Aztec, lo marcamos.

8
00:00:37,840 --> 00:00:38,200
Ok.

9
00:00:38,800 --> 00:00:44,500
Bueno, acá se recibe el texto, en este caso el Heidy del país y lo tenemos que convertir.

10
00:00:44,590 --> 00:00:49,300
Bueno, pero para convertir necesitamos el servis que creamos la clase anterior.

11
00:00:49,840 --> 00:00:51,430
Entonces por acá tenemos el servis.

12
00:00:51,610 --> 00:00:55,780
Recordemos el servis simplement que está anotado con servis.

13
00:00:56,290 --> 00:01:02,710
Entonces lo que podríamos hacer es anotar esta clase como componentes brink para poder inyectarlo

14
00:01:05,110 --> 00:01:05,950
importamos.

15
00:01:06,340 --> 00:01:11,110
Bueno, recuerden que tenemos por un lado la anotación servis y la anotación component, pero en realidad

16
00:01:11,140 --> 00:01:13,450
funcionalmente no tienen ninguna diferencia.

17
00:01:13,570 --> 00:01:20,740
De hecho, si nos vamos acá a páis servis simplement control click es un estereotipo de componer.

18
00:01:20,830 --> 00:01:22,420
Por lo tanto, servis es su componente.

19
00:01:22,430 --> 00:01:26,710
Solamente tiene como nombre diferente como para indicar que es un servis.

20
00:01:26,800 --> 00:01:28,450
Más que nada es como una semantica.

21
00:01:28,630 --> 00:01:33,760
Es para indicar que este componente de Spring es del tipo servis, nada más.

22
00:01:33,790 --> 00:01:40,330
Pero funcionalmente incluso podríamos anotar páis hierves, imprime con component y va a ser lo mismo

23
00:01:40,660 --> 00:01:42,310
tanto con servis como con component.

24
00:01:42,460 --> 00:01:46,630
Se inyecta y no tiene ninguna diferencia, solamente conceptual.

25
00:01:46,750 --> 00:01:48,130
Es una semántica, nada más.

26
00:01:48,280 --> 00:01:55,120
Entonces se casa más servis porque es un servicio y acá en el property editors usamos component, aunque

27
00:01:55,120 --> 00:01:57,610
también podríamos usar acá servis y tem. funcionaría.

28
00:01:57,700 --> 00:02:00,190
Se fija en pero es algo conceptual, nada más.

29
00:02:00,280 --> 00:02:11,470
Bien, ahora que componente lo podemos inyectar del tipo de la interfaz peus service importamos service

30
00:02:12,580 --> 00:02:13,840
y Auto Suirez.

31
00:02:16,240 --> 00:02:17,080
Importamos.

32
00:02:17,170 --> 00:02:17,750
Perfecto.

33
00:02:18,460 --> 00:02:20,620
Entonces ahora vamos a buscar.

34
00:02:21,370 --> 00:02:23,080
Bueno, acá esto lo quitamos.

35
00:02:23,080 --> 00:02:25,480
En realidad esto en realidad no va.

36
00:02:26,290 --> 00:02:35,110
Lo cambiamos por disputo set valio guardamos un objeto en este caso del tipo páis usando el service

37
00:02:35,320 --> 00:02:36,810
punto fin.

38
00:02:36,940 --> 00:02:43,630
O buscar por acá tenemos obtener por Heidy obtener por allí le pasamos el leidy, pero acá Leydi viene

39
00:02:43,720 --> 00:02:48,560
del tipo string y acá lo guardamos como integer, es decir, lo pasamos como un entero.

40
00:02:48,790 --> 00:02:49,990
Bien, entonces cómo lo hacemos?

41
00:02:50,080 --> 00:02:52,150
Tenemos que convertir de hecho.

42
00:02:52,240 --> 00:03:02,020
Bueno por acá podríamos colocar Integer Heidy igual quiete de acá los renombrados Heidy String.

43
00:03:03,960 --> 00:03:09,990
Entonces, con integer punto parse int podemos convertir acá.

44
00:03:10,650 --> 00:03:16,680
Acá pasamos el estric, hay 10 técnic, hoy convertimos, se fijan y lo pasamos acá.

45
00:03:17,190 --> 00:03:24,450
Ahora para poder convertir a un entero tiene que ser un string numérico que represente un dígito, un

46
00:03:24,450 --> 00:03:25,200
dígito entero.

47
00:03:26,040 --> 00:03:27,690
Entonces ahí se convierte.

48
00:03:27,780 --> 00:03:31,740
Lo pasamos al obtener por allí y obtenemos el objeto.

49
00:03:31,800 --> 00:03:34,860
Por acá tenemos el país correspondiente y listo.

50
00:03:35,250 --> 00:03:35,470
Bejan.

51
00:03:35,610 --> 00:03:36,150
Eso es todo.

52
00:03:36,240 --> 00:03:37,350
Ahora, qué tengo que hacer?

53
00:03:38,040 --> 00:03:40,410
Tenemos que inyectar este property editor.

54
00:03:41,130 --> 00:03:44,490
Como es un componente, lo podemos inyectar acá en el servis.

55
00:03:48,390 --> 00:03:56,970
ÂTu Witten, el tipo páis property editor tal cual, una clase concreta en este caso no es una interfaz

56
00:03:57,060 --> 00:03:59,410
ni nada por el estilo, porque en este caso no es necesario.

57
00:03:59,430 --> 00:04:04,410
Solamente vamos a tener uno la implementación de este property editor ahora, en caso de que tuviéramos

58
00:04:04,420 --> 00:04:05,040
más de una.

59
00:04:05,070 --> 00:04:10,500
Bueno, ahí creamos una interfaz pero propia nuestra personalizada y tendremos que implementar esta

60
00:04:10,500 --> 00:04:12,730
interfaz en nuestro property editor.

61
00:04:13,050 --> 00:04:13,440
Acá.

62
00:04:16,840 --> 00:04:20,530
País Editor importamos.

63
00:04:21,520 --> 00:04:22,750
Y tenemos que registrar.

64
00:04:24,850 --> 00:04:25,300
Por acá.

65
00:04:27,240 --> 00:04:28,380
Pasamos la instancia.

66
00:04:33,080 --> 00:04:37,640
Ahora, qué atributo del formulario o de la clase Entity país?

67
00:04:39,610 --> 00:04:41,640
Y de qué tipo es país?

68
00:04:42,250 --> 00:04:43,210
Muy importante el tipo.

69
00:04:43,420 --> 00:04:44,290
Bueno, el tipo.

70
00:04:44,320 --> 00:04:51,520
Si nos vamos acá al usuario, este tipo, el tipo país y el atributo país, que también está mapeado

71
00:04:51,610 --> 00:04:52,330
al formulario.

72
00:04:52,510 --> 00:04:59,440
Acá si nos vamos por acá, más arriba, acá país está mapeado al atributo país.

73
00:04:59,740 --> 00:05:02,170
Acá a la tribu utopista Enfield.

74
00:05:02,260 --> 00:05:03,070
Y esto importante.

75
00:05:03,160 --> 00:05:05,290
Entonces ahora esto lo quitamos.

76
00:05:05,560 --> 00:05:13,330
Ahora se mapea directamente al objeto país y no a un atributo del objeto país, ya que lo vamos a guardar

77
00:05:13,330 --> 00:05:13,930
completo.

78
00:05:14,440 --> 00:05:17,680
Entonces acá también, acá también.

79
00:05:18,900 --> 00:05:24,290
Y todo esto de igual, excepto bueno, pait nombre acá sería País Heidi.

80
00:05:24,840 --> 00:05:26,790
Ya que lo que vamos a enviar es el Heidy.

81
00:05:26,910 --> 00:05:32,760
Ojo no es el código, es el Heidy, ya que acá en el Property Editors estamos buscando por.

82
00:05:33,210 --> 00:05:38,820
Aunque también lo podríamos ir a buscar por el código, pero sería otro método buscar obtener por código

83
00:05:38,910 --> 00:05:44,130
y en este foro o en la consulta que necesitemos realizar sería por el código y no por el Heidy.

84
00:05:44,950 --> 00:05:50,010
Entonces es importante ese cambio páis punto Heidy y se valida el país.

85
00:05:51,210 --> 00:05:57,570
El objeto país bien y guardamos, pues faltaría otro detalle por qué ahora lo que se envía?

86
00:05:57,600 --> 00:06:03,150
Bueno, si bien se envía Leydi, pero se convierte este dí en el objeto país, pero acá tenemos que

87
00:06:03,150 --> 00:06:07,420
validar por el país, por el objeto y no por un atributo tal como lo tenemos acá.

88
00:06:07,830 --> 00:06:15,360
Entonces nos vamos a la clase usuario y en vez de Baldi acá sería Not null, porque validamos completamente

89
00:06:16,170 --> 00:06:22,630
el objeto y en país ya no sería necesario empty.

90
00:06:23,130 --> 00:06:25,590
Incluso lo podríamos quitar o lo podríamos comentar.

91
00:06:28,090 --> 00:06:30,880
Ya que se valida el objeto completo, guardamos.

92
00:06:32,260 --> 00:06:35,410
Guardamos también el controlador y estamos listo.

93
00:06:35,530 --> 00:06:36,770
Quizás para revisar.

94
00:06:36,910 --> 00:06:39,820
Bueno, acá tengo el usuario, el Baldy.

95
00:06:39,970 --> 00:06:41,260
Lo voy a comentar.

96
00:06:43,370 --> 00:06:45,770
Guarda bien en la vista resultado.

97
00:06:46,220 --> 00:06:47,270
Ahora podremos probar.

98
00:06:48,560 --> 00:06:53,210
Por ejemplo, País Código, País Heidy.

99
00:06:55,160 --> 00:06:56,190
Código y país.

100
00:06:56,210 --> 00:06:56,660
Nombre.

101
00:06:58,500 --> 00:06:58,750
Bien.

102
00:06:58,940 --> 00:06:59,720
Guardamos.

103
00:06:59,990 --> 00:07:00,710
Vamos a revisar.

104
00:07:00,800 --> 00:07:01,580
Levantamos.

105
00:07:06,210 --> 00:07:07,800
Bueno, primero vamos a revisar.

106
00:07:07,890 --> 00:07:08,480
Enviar?

107
00:07:08,790 --> 00:07:09,270
Perfecto.

108
00:07:09,430 --> 00:07:13,560
No hay ningún problema acá, si se fijan, se está valiendo por el string vacío.

109
00:07:13,650 --> 00:07:20,700
Por qué se envía este carácter vacío y lo trata convertir a un entero a un lamber bueno y falla.

110
00:07:20,890 --> 00:07:25,770
Entonces esto lo podríamos arreglar de la siguiente forma Volvemos al formulario ya.

111
00:07:25,860 --> 00:07:26,700
Y acá lo tenemos.

112
00:07:27,150 --> 00:07:30,600
Acá estamos enviando un carácter vacío, pero no es un entero.

113
00:07:30,690 --> 00:07:33,930
Por lo tanto, en el Property Editors lo recibe.

114
00:07:34,020 --> 00:07:35,910
Acá, acá se recibe.

115
00:07:37,080 --> 00:07:37,920
Y lo trata convertir.

116
00:07:37,950 --> 00:07:41,670
Trata de convertir un vacío en un entero y por eso lanzar excepción.

117
00:07:42,000 --> 00:07:43,350
Bueno, bastante simple.

118
00:07:44,410 --> 00:07:55,360
Acá preguntamos hay que validar con un if, por ejemplo if bueno de partiese distinto null y si tiene

119
00:07:55,360 --> 00:07:57,700
caracteres, entonces acá tenemos el Lenka.

120
00:07:59,720 --> 00:08:00,530
C Mayor a cero.

121
00:08:01,400 --> 00:08:02,180
Y si es así?

122
00:08:02,300 --> 00:08:04,010
Bueno, perfecto.

123
00:08:04,340 --> 00:08:10,700
Ahí lo tratamos convertir, pero también acá podríamos validar con un trae y catch, porque en caso

124
00:08:10,700 --> 00:08:12,140
de error, acá lo tenemos.

125
00:08:12,200 --> 00:08:15,410
En caso de terror en Ámber fórmate excepción.

126
00:08:15,500 --> 00:08:16,580
De hecho lo vamos a copiar.

127
00:08:16,880 --> 00:08:18,440
Lo pudiera manejar con un troi cazzo.

128
00:08:21,900 --> 00:08:23,580
Entonces, por acá bajamos.

129
00:08:27,980 --> 00:08:28,770
Un trae

130
00:08:32,470 --> 00:08:32,730
bien.

131
00:08:36,650 --> 00:08:37,070
Y acá?

132
00:08:37,140 --> 00:08:41,820
Bueno, si falla, se talio nul.

133
00:08:42,800 --> 00:08:44,960
En caso de falla y acá también.

134
00:08:49,520 --> 00:08:50,810
Entonces es distinto nul.

135
00:08:50,900 --> 00:08:57,470
Y además se tiene un largo tratá de convertir ese verificÃ que sea un dígito, si lo convierte, perfecto.

136
00:08:57,520 --> 00:09:00,680
Pero si falla, si no es un dígito, lo asignamos Anul.

137
00:09:00,770 --> 00:09:01,640
Acá el valor.

138
00:09:02,090 --> 00:09:09,560
Y lo mismo si es nulo, si es nulo o bien si el largo es igual a cero, sino que el contenido también

139
00:09:09,560 --> 00:09:10,080
lo shinano.

140
00:09:10,460 --> 00:09:11,330
Y con eso estamos listo.

141
00:09:11,390 --> 00:09:13,670
Guardamos y enviamos de nuevo.

142
00:09:14,390 --> 00:09:14,870
Se fijan?

143
00:09:14,930 --> 00:09:15,650
No puede ser, no?

144
00:09:15,810 --> 00:09:19,130
Entonces, como no seleccionamos, lo haría perfecto.

145
00:09:19,670 --> 00:09:21,530
Ahora, por ejemplo, Chile.

146
00:09:22,840 --> 00:09:23,440
Perfecto.

147
00:09:23,530 --> 00:09:24,220
Ningún problema.

148
00:09:24,560 --> 00:09:25,780
Bueno, y lo probamos.

149
00:09:30,580 --> 00:09:31,570
La cuenta 7.

150
00:09:32,870 --> 00:09:35,050
Alguna fecha en pie?

151
00:09:35,360 --> 00:09:35,960
Perfecto.

152
00:09:36,110 --> 00:09:44,000
Acá tenemos el país 3 con Edy, 3 CL El Código y País Chile en pie, el registro completo con todos

153
00:09:44,000 --> 00:09:48,950
sus atributos y eso es gracias justamente a que convertimos el dato que estamos enviando.

154
00:09:49,040 --> 00:09:55,790
El Heidy en el objeto completo utilizando el Property Editors y también el servis que realiza esta consulta,

155
00:09:55,910 --> 00:10:01,880
ya sea a una base de datos, a una tabla o como lo hicimos a un ArrayList, en nuestro caso el ArrayList

156
00:10:01,970 --> 00:10:04,340
o la lista en nuestro repositorio.

157
00:10:04,670 --> 00:10:09,950
Incluso en estricto rigor, quizás faltaría o solamente bastaría con el trait catch.

158
00:10:10,190 --> 00:10:16,820
Quizás este ahí podría estar demás porque independiente si es nulo o no es nulo si es un string vacío.

159
00:10:16,910 --> 00:10:22,610
Acá van a hacer una excepción y acá lo manejamos en el tracas lo asignamos Anul.

160
00:10:22,730 --> 00:10:30,500
Ahora si sea un dígito lo convierte perfecto, pero si falla siempre null, entonces igual para simplificar

161
00:10:31,070 --> 00:10:32,180
esto lo podríamos quitar.

162
00:10:32,960 --> 00:10:38,210
Bueno, son dos alternativas, una más estricta y la otra que al final con el trait catch va a funcionar

163
00:10:38,300 --> 00:10:39,650
exactamente igual.

164
00:10:40,690 --> 00:10:44,980
Incluso con source format de listo lo vamos a revisar.

165
00:10:46,450 --> 00:10:47,590
Decepcionamos laureles.

166
00:10:47,800 --> 00:10:50,200
Enter para refrescar selecciona el país.

167
00:10:50,290 --> 00:10:52,330
Nada, simplemente enviamos.

168
00:10:53,050 --> 00:10:53,470
No puedes ser.

169
00:10:53,650 --> 00:10:57,520
Se fijan, claro, porque lanza la excepción el trail catch y lo manejamos ahí.

170
00:10:57,700 --> 00:11:00,340
Dailey Asignamos Anul y por eso da este mensaje.

171
00:11:00,850 --> 00:11:04,420
Si seleccionamos, por ejemplo, México, enviar perfecto.

172
00:11:04,460 --> 00:11:06,010
Si seleccionamos Colombia.

173
00:11:07,270 --> 00:11:07,900
Perfecto.

174
00:11:23,450 --> 00:11:28,640
Enviar vejan hoy di6 có y Colombia funciona exactamente igual.

175
00:11:28,730 --> 00:11:32,600
Entonces bastaría solamente con el trae y Katt nos vemos en la siguiente clase.
