1 00:00:00,690 --> 00:00:03,149 este es nuestro único dato de configuración 2 00:00:03,149 --> 00:00:05,169 es el que ponemos aquí, en el gestión 3 00:00:05,169 --> 00:00:07,330 properties, que nos hemos vuelto locos 4 00:00:07,330 --> 00:00:09,330 con los datos, o sea, con el nombre 5 00:00:09,330 --> 00:00:10,849 y ahora me viene a mí a la cabeza 6 00:00:10,849 --> 00:00:13,150 así que 7 00:00:13,150 --> 00:00:14,990 normalmente a esto 8 00:00:14,990 --> 00:00:17,289 lo solemos 9 00:00:17,289 --> 00:00:18,469 ver con este nombre, ¿verdad? 10 00:00:18,649 --> 00:00:20,010 no suena más que este nombre 11 00:00:20,010 --> 00:00:23,210 casi que me viene a uno un fogonazo 12 00:00:23,210 --> 00:00:24,629 a la cabeza que me suena más esto 13 00:00:24,629 --> 00:00:27,230 para indicar que es un archivo de configuración 14 00:00:27,230 --> 00:00:28,969 ¿verdad? vale 15 00:00:28,969 --> 00:00:30,769 Bueno, pues entonces 16 00:00:30,769 --> 00:00:34,270 Eso ya nos permite 17 00:00:34,270 --> 00:00:34,789 Aquí 18 00:00:34,789 --> 00:00:37,350 Quitar esta cosa tan horrible 19 00:00:37,350 --> 00:00:39,369 Y vamos a sacar 20 00:00:39,369 --> 00:00:41,810 El nombre del archivo de configuración 21 00:00:41,810 --> 00:00:44,570 Y esto, para eso teníamos que crear 22 00:00:44,570 --> 00:00:46,270 Properties 23 00:00:47,090 --> 00:00:49,909 A ver 24 00:00:49,909 --> 00:00:50,810 No sé si 25 00:00:50,810 --> 00:00:53,109 La memoria 26 00:00:53,109 --> 00:00:55,530 Me va 27 00:00:55,530 --> 00:00:57,549 Si no 28 00:00:57,549 --> 00:01:00,090 Y ahora ya 29 00:01:00,090 --> 00:01:01,429 Habríamos 30 00:01:01,429 --> 00:01:04,290 Una configuración 31 00:01:04,290 --> 00:01:06,049 Que cargábamos desde properties 32 00:01:06,049 --> 00:01:08,250 Vamos a mirarlo 33 00:01:08,250 --> 00:01:10,189 Aquí que estará 34 00:01:10,189 --> 00:01:18,750 No, estaba en el otro, ¿verdad? 35 00:01:20,810 --> 00:01:22,230 No, aquí no estaba 36 00:01:22,230 --> 00:01:28,500 Lo del properties 37 00:01:28,500 --> 00:01:30,099 Joder, que no quiero yo este 38 00:01:30,099 --> 00:01:30,560 Quiero 39 00:01:30,560 --> 00:01:35,480 UDF 40 00:01:35,480 --> 00:01:37,180 No, pero 41 00:01:37,180 --> 00:01:40,480 Pero, ¿dónde estáis viendo? 42 00:01:40,579 --> 00:01:41,319 Yo aquí no estoy viendo 43 00:01:41,319 --> 00:01:44,879 Abre, abre, abre 44 00:01:44,879 --> 00:01:47,120 Ah, aquí está 45 00:01:47,120 --> 00:01:47,840 Vale, vale, vale 46 00:01:47,840 --> 00:01:49,140 Aquí está 47 00:01:49,140 --> 00:01:50,760 Vale, entonces 48 00:01:50,760 --> 00:01:53,140 Que sí, que es este 49 00:01:53,140 --> 00:01:56,120 Yo quiero esto 50 00:01:56,120 --> 00:01:58,299 Esto quería yo 51 00:01:58,299 --> 00:01:59,780 Ay 52 00:01:59,780 --> 00:02:03,180 No, perdono a nadie 53 00:02:03,180 --> 00:02:06,439 Vale, entonces 54 00:02:06,439 --> 00:02:10,840 Esto quería yo 55 00:02:10,840 --> 00:02:11,759 Vale 56 00:02:11,759 --> 00:02:15,780 ¿Pero qué paquete equivocado? 57 00:02:15,860 --> 00:02:17,219 Tú sí quieres un paquete equivocado 58 00:02:17,219 --> 00:02:19,379 No es un paquete equivocado 59 00:02:19,379 --> 00:02:21,840 A ver 60 00:02:21,840 --> 00:02:23,599 Load y ahora 61 00:02:23,599 --> 00:02:25,199 PropGetProperty 62 00:02:25,199 --> 00:02:26,419 Esto está estupendo 63 00:02:26,419 --> 00:02:28,860 Vale, entonces lo hacíamos así, ¿verdad? 64 00:02:28,979 --> 00:02:29,719 Ahora importo 65 00:02:29,719 --> 00:02:32,659 Y ahora prop.getProperty 66 00:02:32,659 --> 00:02:34,500 Y queremos 67 00:02:34,500 --> 00:02:36,939 Datos, se llamaba 68 00:02:36,939 --> 00:02:38,860 Datos, vale 69 00:02:38,860 --> 00:02:41,360 Esta no la quiero 70 00:02:41,360 --> 00:02:42,300 Esta la cierro ya 71 00:02:42,300 --> 00:02:44,060 Vale 72 00:02:44,060 --> 00:02:50,830 Vale, y esto lo teníamos que meter 73 00:02:50,830 --> 00:02:51,889 En un try-catch, ¿verdad? 74 00:02:53,409 --> 00:02:55,150 Vale, entonces 75 00:02:55,150 --> 00:02:56,750 Aquí 76 00:02:56,750 --> 00:02:58,129 Podríamos 77 00:02:58,129 --> 00:03:02,789 Dejarlo así, pero 78 00:03:02,789 --> 00:03:06,740 Hombre, para no 79 00:03:06,740 --> 00:03:08,740 Estar todo el rato aquí atentos a la 80 00:03:08,740 --> 00:03:10,879 consola y todo eso, vamos a hacer 81 00:03:10,879 --> 00:03:12,719 unos pequeños logs de depuración 82 00:03:12,719 --> 00:03:14,800 ¿no? vamos a hacer unos pequeños 83 00:03:14,800 --> 00:03:16,699 logs, vale, pues para hacer 84 00:03:16,699 --> 00:03:18,439 unos pequeños logs de depuración 85 00:03:18,439 --> 00:03:21,139 ya sabemos que rápidamente copiamos la dependencia 86 00:03:21,139 --> 00:03:22,979 de nuestro ejemplo 87 00:03:22,979 --> 00:03:24,639 de proyecto de logs 88 00:03:24,639 --> 00:03:26,879 ¿que ya te has 89 00:03:26,879 --> 00:03:27,300 perdido? 90 00:03:28,840 --> 00:03:29,180 pues 91 00:03:29,180 --> 00:03:32,740 hola 92 00:03:32,740 --> 00:03:33,939 hola, ¿puedo pasar? 93 00:03:35,939 --> 00:03:37,099 puedes pasar 94 00:03:37,099 --> 00:03:39,960 Acostumbraos a pedir permiso antes de entrar 95 00:03:39,960 --> 00:03:41,500 Bueno, lo ideal sería 96 00:03:41,500 --> 00:03:43,219 Primero pedir disculpas por llegar tarde 97 00:03:43,219 --> 00:03:44,159 Y luego pedir permiso 98 00:03:44,159 --> 00:03:44,800 ¿Vale? 99 00:03:45,400 --> 00:03:45,960 Dime 100 00:03:45,960 --> 00:03:55,889 Bueno, lo importáis a mano 101 00:03:55,889 --> 00:03:58,990 Ah, pues habéis empeñado 102 00:03:58,990 --> 00:04:00,270 Pero es un caos 103 00:04:00,270 --> 00:04:02,830 Vale, bueno, pues entonces 104 00:04:02,830 --> 00:04:03,990 Estábamos diciendo 105 00:04:03,990 --> 00:04:06,849 Que vamos a aprovechar 106 00:04:06,849 --> 00:04:08,490 a poner en práctica lo de los logs 107 00:04:08,490 --> 00:04:10,909 ¿vale? para hacer algunos 108 00:04:10,909 --> 00:04:12,030 logs en esta aplicación 109 00:04:12,030 --> 00:04:14,650 no lo vamos a hacer lo de los logs, el resto de aplicaciones 110 00:04:14,650 --> 00:04:16,649 que hagamos pues nos eternizamos, pero bueno 111 00:04:16,649 --> 00:04:18,889 en esta sí, como lo acabamos de ver el otro día 112 00:04:18,889 --> 00:04:20,970 en esta sí, para ponerlo en práctica y ya está 113 00:04:20,970 --> 00:04:22,709 entonces para poner en práctica 114 00:04:22,709 --> 00:04:24,870 lo de los logs, vamos a 115 00:04:24,870 --> 00:04:26,209 copiar la dependencia 116 00:04:26,209 --> 00:04:27,870 de 117 00:04:27,870 --> 00:04:33,209 yo tengo que tener por ahí el de logs 118 00:04:33,209 --> 00:04:37,350 ejemplo logs 119 00:04:37,350 --> 00:04:37,910 aquí está 120 00:04:37,910 --> 00:04:41,370 Vale, pues vamos a 121 00:04:41,370 --> 00:04:45,750 Copiar 122 00:04:45,750 --> 00:04:48,430 Las dependencias de log 123 00:04:48,430 --> 00:04:50,589 Las de 124 00:04:50,589 --> 00:04:52,870 Jason, puedo pasar de ellas 125 00:04:52,870 --> 00:04:54,589 Porque vamos a configurar 126 00:04:54,589 --> 00:04:55,709 Con el xml 127 00:04:55,709 --> 00:05:02,670 Y aquí, abrimos nuestro 128 00:05:02,670 --> 00:05:03,189 POM 129 00:05:03,189 --> 00:05:05,750 De este 130 00:05:05,750 --> 00:05:11,980 Este 131 00:05:11,980 --> 00:05:13,540 Que está limpio 132 00:05:13,540 --> 00:05:15,620 Abrimos nuestro POM 133 00:05:15,620 --> 00:05:16,339 Vale 134 00:05:16,339 --> 00:05:26,879 Vale 135 00:05:26,879 --> 00:05:29,300 Vamos a quitar esta cosa 136 00:05:29,300 --> 00:05:31,139 Rojita tan fea 137 00:05:31,139 --> 00:05:35,040 Claro, he copiado y pegado 138 00:05:35,040 --> 00:05:37,759 Del POM del archivo del otro día de logs 139 00:05:37,759 --> 00:05:40,680 Que está subido a la ola virtual 140 00:05:40,680 --> 00:05:42,439 He copiado 141 00:05:42,439 --> 00:05:44,439 Las dos primeras dependencias 142 00:05:44,439 --> 00:05:46,240 Porque las otras eran para JSON 143 00:05:46,240 --> 00:05:48,759 Vale, entonces recordad 144 00:05:48,759 --> 00:05:50,800 Que de una clase a otra miraros las cosas 145 00:05:50,800 --> 00:05:52,339 Porque si no 146 00:05:52,339 --> 00:05:54,459 Estáis perdidos en la clase siguiente 147 00:05:54,459 --> 00:05:57,180 Vale, pues entonces 148 00:05:57,180 --> 00:05:59,199 Las dependencias de logs 149 00:05:59,199 --> 00:06:00,939 Ya las tengo teóricamente 150 00:06:00,939 --> 00:06:02,920 Vamos a ver 151 00:06:02,920 --> 00:06:04,399 Si realmente están aquí 152 00:06:04,399 --> 00:06:07,540 Sí 153 00:06:07,540 --> 00:06:11,240 Aquí tengo el API y el core de los 4J 154 00:06:11,240 --> 00:06:12,620 Ahora 155 00:06:12,620 --> 00:06:15,019 Necesito el fichero de configuración 156 00:06:15,019 --> 00:06:17,079 Vamos a copiarnos 157 00:06:17,079 --> 00:06:18,060 Y pegarnos el otro 158 00:06:18,060 --> 00:06:20,740 Y le fumigamos lo que no queramos 159 00:06:20,740 --> 00:06:22,720 Pues vamos a copiar 160 00:06:22,720 --> 00:06:26,540 El de los 4J del otro día 161 00:06:26,540 --> 00:06:28,100 El XML este 162 00:06:28,100 --> 00:06:31,660 Le copiamos 163 00:06:31,660 --> 00:06:35,120 Y le pegamos 164 00:06:35,120 --> 00:06:36,839 En resources 165 00:06:36,839 --> 00:06:42,160 Le voy a poner el nombre bien 166 00:06:42,160 --> 00:06:46,740 Del archivo del otro día 167 00:06:46,740 --> 00:06:47,879 Del proyecto del otro día 168 00:06:47,879 --> 00:06:48,579 Lo he sacado 169 00:06:48,579 --> 00:06:51,240 Del proyecto de logs del otro día 170 00:06:51,240 --> 00:06:55,399 Vale, entonces ahora vamos a abrirlo 171 00:06:55,399 --> 00:06:57,639 Y vamos a quitar lo que no nos interese 172 00:06:57,639 --> 00:06:59,920 Venga 173 00:06:59,920 --> 00:07:00,959 Vamos a 174 00:07:00,959 --> 00:07:03,459 Los appenders los podemos dejar 175 00:07:03,459 --> 00:07:05,480 Y ahora 176 00:07:05,480 --> 00:07:06,199 Vamos a loggers 177 00:07:06,199 --> 00:07:09,300 Venga, pues no vamos a hacer un logger 178 00:07:09,300 --> 00:07:10,639 Específico para cada clase 179 00:07:10,639 --> 00:07:13,000 Este logger 180 00:07:13,000 --> 00:07:14,540 Lo 181 00:07:14,540 --> 00:07:17,399 Voy a quitar 182 00:07:17,399 --> 00:07:20,550 En los archivos 183 00:07:20,550 --> 00:07:22,769 En los archivos de configuración 184 00:07:22,769 --> 00:07:26,860 Más que quitar 185 00:07:26,860 --> 00:07:28,360 Lo mejor es comentar 186 00:07:28,360 --> 00:07:30,420 por si luego lo quieres volver a usar 187 00:07:30,420 --> 00:07:32,180 vale 188 00:07:32,180 --> 00:07:33,480 entonces 189 00:07:33,480 --> 00:07:36,699 vale y dejamos 190 00:07:36,699 --> 00:07:37,519 el logger raíz 191 00:07:37,519 --> 00:07:40,399 el logger raíz 192 00:07:40,399 --> 00:07:42,860 lo vamos a poner a nivel depuración 193 00:07:42,860 --> 00:07:44,959 porque estamos en la fase inicial 194 00:07:44,959 --> 00:07:48,209 y que los logs 195 00:07:48,209 --> 00:07:49,569 nos vayan a 196 00:07:49,569 --> 00:07:51,170 consola y al fichero 197 00:07:51,170 --> 00:07:55,139 y ya está, ya tenemos un fichero de logs 198 00:07:55,139 --> 00:07:57,319 para enviar logs básico a un archivo 199 00:07:57,319 --> 00:07:59,480 y a consola también 200 00:07:59,480 --> 00:08:00,920 Se va a quedar ahí la consola 201 00:08:00,920 --> 00:08:02,540 Si la quiero quitar, pues la quito 202 00:08:02,540 --> 00:08:04,399 Y va solo al archivo y ya está 203 00:08:04,399 --> 00:08:09,879 Bueno, le he puesto 204 00:08:09,879 --> 00:08:11,860 Que inicie con esto y termine con esto 205 00:08:11,860 --> 00:08:12,420 Y ya está 206 00:08:12,420 --> 00:08:13,439 Vale 207 00:08:13,439 --> 00:08:23,509 Vale, pues entonces 208 00:08:23,509 --> 00:08:28,110 Vamos a arrancar la aplicación 209 00:08:28,110 --> 00:08:29,730 Para ver si 210 00:08:29,730 --> 00:08:32,009 Bueno, y ahora ya que tenemos el archivo de logs 211 00:08:32,009 --> 00:08:33,529 Que menos 212 00:08:33,529 --> 00:08:35,169 Que ponerle aquí un log 213 00:08:35,169 --> 00:08:37,629 Bueno, crear el logger, claro, lógicamente 214 00:08:37,629 --> 00:08:43,940 Y esto 215 00:08:43,940 --> 00:08:45,559 Era de 216 00:08:45,559 --> 00:08:47,740 GetLogger 217 00:08:47,740 --> 00:08:48,799 A ver si 218 00:08:48,799 --> 00:08:51,539 LogManagerGetLogger era 219 00:08:51,539 --> 00:08:53,240 Mira que buena memoria tenéis 220 00:08:53,240 --> 00:08:57,919 LogManager.getLogger 221 00:08:57,919 --> 00:09:01,659 Y aquí pues nuestra clase 222 00:09:01,659 --> 00:09:03,860 Gestión 223 00:09:03,860 --> 00:09:05,080 Biblioteca 224 00:09:05,080 --> 00:09:07,860 Punto clase, el hacerlo específico 225 00:09:07,860 --> 00:09:10,000 para esta clase, nos permitiría luego configurar la parte 226 00:09:10,000 --> 00:09:12,179 si queremos, logger y logger 227 00:09:12,179 --> 00:09:13,259 lo importamos 228 00:09:13,259 --> 00:09:15,960 de, no de java útil login 229 00:09:15,960 --> 00:09:17,539 no, de aquí 230 00:09:17,539 --> 00:09:19,899 que es la dependencia que hemos 231 00:09:19,899 --> 00:09:21,779 importado, la de arriba es el log 232 00:09:21,779 --> 00:09:24,000 la herramienta 233 00:09:24,000 --> 00:09:25,840 de logs de java estándar, pero no 234 00:09:25,840 --> 00:09:27,659 queremos esa que es muy básica, esta 235 00:09:27,659 --> 00:09:33,899 sería esto 236 00:09:33,899 --> 00:09:37,820 esto de aquí 237 00:09:37,820 --> 00:09:51,399 Vale, entonces 238 00:09:51,399 --> 00:09:52,539 Ahora ya 239 00:09:52,539 --> 00:09:55,019 Tenemos un log 240 00:09:55,019 --> 00:09:57,779 Vamos a hacer un log info 241 00:09:57,779 --> 00:09:59,559 Para informar de que la aplicación 242 00:09:59,559 --> 00:10:01,019 Ha arrancado y así el 243 00:10:01,019 --> 00:10:03,519 Técnico sabe 244 00:10:03,519 --> 00:10:05,679 A qué hora se inició 245 00:10:05,679 --> 00:10:07,279 Joder 246 00:10:07,279 --> 00:10:14,399 Sí 247 00:10:14,399 --> 00:10:18,279 De Apache 248 00:10:18,279 --> 00:10:19,679 No de Java útil 249 00:10:19,679 --> 00:10:21,379 Java útil es otra herramienta de logs 250 00:10:21,379 --> 00:10:22,460 Que funciona parecido 251 00:10:22,460 --> 00:10:25,100 Pero no es la que más se usa y es más básica 252 00:10:25,100 --> 00:10:27,360 Esa está directamente en el JDK 253 00:10:27,360 --> 00:10:28,639 Por eso no necesita dependencia 254 00:10:28,639 --> 00:10:31,059 Log info, vale, arrancando aplicación 255 00:10:31,059 --> 00:10:32,340 Y ahora aquí 256 00:10:32,340 --> 00:10:34,960 Pues podríamos hacer un log 257 00:10:34,960 --> 00:10:37,200 Punto error 258 00:10:37,200 --> 00:10:38,980 Si entramos aquí, dejo 259 00:10:38,980 --> 00:10:42,889 De 260 00:10:42,889 --> 00:10:46,509 No se pudo 261 00:10:46,509 --> 00:10:48,850 Arrancar 262 00:10:48,850 --> 00:10:49,769 No se pudo 263 00:10:49,769 --> 00:10:52,509 Encontrar 264 00:10:52,509 --> 00:10:58,809 properties, no se pudo encontrar 265 00:10:58,809 --> 00:11:00,769 con lo cual si no se pudo encontrar 266 00:11:00,769 --> 00:11:01,610 properties 267 00:11:01,610 --> 00:11:04,509 ahora ya dentro de este catch 268 00:11:04,509 --> 00:11:06,110 podríamos decir 269 00:11:06,110 --> 00:11:08,750 arrancando con un fichero 270 00:11:08,750 --> 00:11:11,309 estándar y cargar 271 00:11:11,309 --> 00:11:13,409 y instanciar 272 00:11:13,409 --> 00:11:14,570 gestión de biblioteca 273 00:11:14,570 --> 00:11:16,669 con un estándar, es decir 274 00:11:16,669 --> 00:11:18,990 esto, claro 275 00:11:18,990 --> 00:11:21,850 por ejemplo 276 00:11:21,850 --> 00:11:23,049 string num 277 00:11:23,049 --> 00:11:25,649 fichero 278 00:11:25,649 --> 00:11:30,190 Aquí esto lo haríamos 279 00:11:30,190 --> 00:11:32,470 La idea es que la aplicación sea lo más robusta posible 280 00:11:32,470 --> 00:11:33,129 Y nunca pare 281 00:11:33,129 --> 00:11:36,070 Entonces aquí haríamos esto 282 00:11:36,070 --> 00:11:38,669 Y aquí si hemos conseguido 283 00:11:38,669 --> 00:11:40,330 Cargarlo, pues haríamos 284 00:11:40,330 --> 00:11:42,690 Non fichero 285 00:11:42,690 --> 00:11:43,769 Igual a 286 00:11:43,769 --> 00:11:46,389 Esta propiedad, pero si no hemos podido 287 00:11:46,389 --> 00:11:48,549 No se pudo encontrar properties 288 00:11:48,549 --> 00:11:52,590 Usamos 289 00:11:52,590 --> 00:11:54,250 Un fichero 290 00:11:54,250 --> 00:11:55,929 Genérico, yo que sé 291 00:11:55,929 --> 00:11:58,730 Fichero 292 00:11:58,730 --> 00:12:01,330 Cualquier cosa 293 00:12:01,330 --> 00:12:02,889 Y entonces ahora ya pondríamos 294 00:12:02,889 --> 00:12:10,049 Darle la oportunidad de escribir a quien 295 00:12:10,049 --> 00:12:11,029 A el usuario 296 00:12:11,029 --> 00:12:14,559 Eh, sí, pero 297 00:12:14,559 --> 00:12:16,220 El usuario tiene que estar ahí sentado 298 00:12:16,220 --> 00:12:20,659 Y, vale 299 00:12:20,659 --> 00:12:21,779 No un fichero 300 00:12:21,779 --> 00:12:25,360 Igual a, y aquí ya haríamos cualquier cosa 301 00:12:25,360 --> 00:12:28,600 El que uno le dé la gana, yo que sé 302 00:12:28,600 --> 00:12:32,080 Arrancamos con uno estándar 303 00:12:32,080 --> 00:12:33,639 Por lo menos la aplicación no se para 304 00:12:33,639 --> 00:12:36,600 ¿Vale? 305 00:12:38,980 --> 00:12:41,179 Entonces vamos a hacer un par de logs 306 00:12:41,179 --> 00:12:43,179 Solo pues para ver si realmente nos funciona 307 00:12:43,179 --> 00:12:44,940 Y se va el fichero de logs 308 00:12:44,940 --> 00:12:46,980 Y luego ya no vamos a estar arrastrando logs todo el rato 309 00:12:46,980 --> 00:12:48,100 Porque se hace un poco pesado 310 00:12:48,100 --> 00:12:50,860 Pero sería lo ideal, o sea lo ideal es que uno 311 00:12:50,860 --> 00:12:52,840 Ponga logs en todas partes 312 00:12:52,840 --> 00:12:55,600 De diferentes niveles, de bug, info, error 313 00:12:55,600 --> 00:12:57,480 Para luego tener control 314 00:12:57,480 --> 00:12:58,440 Sobre lo que está pasando 315 00:12:58,440 --> 00:12:59,799 Pero nosotros no lo vamos a hacer 316 00:12:59,799 --> 00:13:03,940 Venga, pues vamos a hacer este primer arranque 317 00:13:03,940 --> 00:13:09,960 A ver si gestión se instancia correctamente con el... 318 00:13:09,960 --> 00:13:11,700 Y aquí pondríamos numfichero, perdón 319 00:13:11,700 --> 00:13:14,759 Aquí pondríamos numfichero 320 00:13:14,759 --> 00:13:19,019 Y me dice, ¿podría no estar inicializado? 321 00:13:20,639 --> 00:13:23,580 Yo sé que estaría, porque o bien es este o bien es este 322 00:13:23,580 --> 00:13:25,179 Pero bueno, le callo al compilador 323 00:13:25,179 --> 00:13:26,840 Con eso le dejo callado 324 00:13:26,840 --> 00:13:29,659 Vale, vamos a ver si hasta aquí llegamos 325 00:13:29,659 --> 00:13:31,879 Porque no hemos hecho nada 326 00:13:31,879 --> 00:13:34,000 Nada más que instanciar el objeto 327 00:13:34,000 --> 00:13:35,659 Y mirad cuánta basura 328 00:13:35,659 --> 00:13:37,840 ¿Por qué os creéis que existen 329 00:13:37,840 --> 00:13:39,379 Los frameworks? 330 00:13:40,419 --> 00:13:41,840 Porque los frameworks 331 00:13:41,840 --> 00:13:43,740 Spring, Hibernate, todo eso 332 00:13:43,740 --> 00:13:46,820 Gestionan 333 00:13:46,820 --> 00:13:48,519 Los bins, todo 334 00:13:48,519 --> 00:13:50,360 Pero los gestionan 335 00:13:50,360 --> 00:13:54,419 Metiendo toda una cantidad de cosas 336 00:13:54,419 --> 00:13:57,120 Vale, fijaos 337 00:13:57,120 --> 00:13:58,080 Todo lo que hemos hecho 338 00:13:58,080 --> 00:14:01,059 Solo para instanciar gestión de biblioteca 339 00:14:01,059 --> 00:14:04,159 Pero claro, es que es así como tenemos que hacer 340 00:14:04,159 --> 00:14:06,480 Ay, perdona, dime 341 00:14:06,480 --> 00:14:08,539 Pues el import de log manager 342 00:14:08,539 --> 00:14:13,080 El import de log manager 343 00:14:13,080 --> 00:14:17,799 Porque hay otro aquí 344 00:14:17,799 --> 00:14:18,299 Que es con 345 00:14:18,299 --> 00:14:20,820 Otro log4j 346 00:14:20,820 --> 00:14:22,100 Aquí creo que hay, no lo sé 347 00:14:22,100 --> 00:14:25,139 ¿Cuál? Este que he puesto yo, que te da error 348 00:14:25,139 --> 00:14:29,970 Pero te dice, porque no lo encuentra 349 00:14:29,970 --> 00:14:31,190 No 350 00:14:31,190 --> 00:14:33,210 Dice que cohesiona con otro 351 00:14:33,210 --> 00:14:35,370 Pues quítalo 352 00:14:35,370 --> 00:14:37,110 Es que igual tienes otro 353 00:14:37,110 --> 00:14:43,730 Vale, vamos a arrancar este main 354 00:14:43,730 --> 00:14:45,009 Vamos a arrancar este main 355 00:14:45,009 --> 00:14:46,350 A ver hasta donde llegamos 356 00:14:46,350 --> 00:14:50,950 Pues sí, por eso lo voy a arrancar desde ya 357 00:14:50,950 --> 00:14:53,230 ¿Por qué me dices tú que la ruta va a dar error? 358 00:14:55,940 --> 00:14:56,860 Claro, pero 359 00:14:56,860 --> 00:14:58,919 Esto podría inducir a error 360 00:14:58,919 --> 00:15:00,600 Y por eso yo lo estoy generando 361 00:15:00,600 --> 00:15:02,580 Porque resources 362 00:15:02,580 --> 00:15:05,440 Es una ruta del classpath 363 00:15:05,440 --> 00:15:06,080 Del sistema 364 00:15:06,080 --> 00:15:08,519 Por definición para maven 365 00:15:08,519 --> 00:15:09,940 Si está en el classpath 366 00:15:09,940 --> 00:15:12,639 ¿Cómo no lo va a encontrar si está en el Clashpad? 367 00:15:13,419 --> 00:15:17,379 Claro, pero estar en el Clashpad 368 00:15:17,379 --> 00:15:19,179 Significa que la máquina virtual 369 00:15:19,179 --> 00:15:20,340 Encuentra 370 00:15:20,340 --> 00:15:22,440 Las cosas que estén 371 00:15:22,440 --> 00:15:23,620 No, por encima no 372 00:15:23,620 --> 00:15:26,120 Los import, el Clashpad es para los import 373 00:15:26,120 --> 00:15:27,500 No es para los recursos 374 00:15:27,500 --> 00:15:28,659 ¿Vale? 375 00:15:29,200 --> 00:15:30,559 El Clashpad es para esto 376 00:15:30,559 --> 00:15:32,740 La máquina virtual de Java 377 00:15:32,740 --> 00:15:34,960 Cuelga todas estas cosas 378 00:15:34,960 --> 00:15:36,320 Desde su Clashpad 379 00:15:36,320 --> 00:15:37,919 Entonces 380 00:15:37,919 --> 00:15:40,279 Lo que esté en el 381 00:15:40,279 --> 00:15:41,399 Los import 382 00:15:41,399 --> 00:15:42,899 Los va a encontrar 383 00:15:42,899 --> 00:15:44,460 Si todo esto 384 00:15:44,460 --> 00:15:45,759 Cuelga del classpad 385 00:15:45,759 --> 00:15:46,360 Que 386 00:15:46,360 --> 00:15:47,500 Es el caso 387 00:15:47,500 --> 00:15:48,779 Pero 388 00:15:48,779 --> 00:15:49,820 Eso no significa 389 00:15:49,820 --> 00:15:52,340 Que los recursos 390 00:15:52,340 --> 00:15:56,039 Los vaya a encontrar 391 00:15:56,039 --> 00:15:57,200 Entonces 392 00:15:57,200 --> 00:16:00,120 Vamos a ejecutar este main 393 00:16:00,120 --> 00:16:03,129 Una cosa son los recursos 394 00:16:03,129 --> 00:16:04,049 Otra cosa son las clases 395 00:16:04,049 --> 00:16:07,139 Y ahora 396 00:16:07,139 --> 00:16:08,179 Me dice efectivamente 397 00:16:08,179 --> 00:16:09,120 Not found exception 398 00:16:09,120 --> 00:16:10,379 Me ha arrancado el log 399 00:16:10,379 --> 00:16:11,919 Arrancando aplicación 400 00:16:11,919 --> 00:16:12,240 Entonces 401 00:16:12,240 --> 00:16:15,500 uno no tiene que estar sentado en la consola 402 00:16:15,500 --> 00:16:17,259 viendo esto, lógicamente 403 00:16:17,259 --> 00:16:19,019 la consola de un servidor 404 00:16:19,019 --> 00:16:20,659 se llena de millones de cosas 405 00:16:20,659 --> 00:16:22,860 de las 200.000 aplicaciones que están gestionando 406 00:16:22,860 --> 00:16:24,799 entonces no podemos estar mandando el log a la consola 407 00:16:24,799 --> 00:16:26,740 todo el rato, nosotros hemos 408 00:16:26,740 --> 00:16:28,200 mandado el log a la consola 409 00:16:28,200 --> 00:16:30,879 y de hecho hemos dejado el print extract trace 410 00:16:30,879 --> 00:16:32,220 porque estamos ahí 411 00:16:32,220 --> 00:16:35,000 sentaditos, pero cuando la aplicación 412 00:16:35,000 --> 00:16:36,799 está en producción ya no hay nadie 413 00:16:36,799 --> 00:16:38,600 mirando esta consola, pero 414 00:16:38,600 --> 00:16:41,019 si podríamos venir 3 horas 415 00:16:41,019 --> 00:16:43,399 después y abrir este fichero 416 00:16:43,399 --> 00:16:48,789 vale, podríamos 417 00:16:48,789 --> 00:16:49,850 venir tres horas después 418 00:16:49,850 --> 00:16:52,970 y abrir este fichero y este fichero me dice 419 00:16:52,970 --> 00:16:54,649 ah mira, la aplicación arrancó a las 420 00:16:54,649 --> 00:16:56,950 9.48, ostras 421 00:16:56,950 --> 00:16:58,929 pero mira, está trabajando con un fichero 422 00:16:58,929 --> 00:17:00,529 estándar porque no lo pudo arrancar 423 00:17:00,529 --> 00:17:02,669 ya ve rápidamente que hay un error, entonces 424 00:17:02,669 --> 00:17:04,730 esto si es útil, que ese fichero esté ahí 425 00:17:04,730 --> 00:17:06,670 para que uno venga tres horas después, no una 426 00:17:06,670 --> 00:17:07,470 consola que está 427 00:17:07,470 --> 00:17:10,730 sacando millones de cosas de las millones de 428 00:17:10,730 --> 00:17:12,609 aplicaciones que se están corriendo en ese servidor 429 00:17:12,609 --> 00:17:14,069 vale 430 00:17:14,069 --> 00:17:22,329 Pues entonces, efectivamente, nuestro problema ha sido que esto no lo ha encontrado. 431 00:17:22,609 --> 00:17:32,309 Claro, porque tenemos que convertir esto que es un recurso a un inputString mediante el método que lo permite. 432 00:17:33,150 --> 00:17:35,890 Entonces, vamos a hacerlo bien. 433 00:17:36,230 --> 00:17:41,410 Es decir, esto no funciona. 434 00:17:41,410 --> 00:17:47,640 Porque a veces lo he visto 435 00:17:47,640 --> 00:17:50,920 Para que no caigáis en esos 436 00:17:50,920 --> 00:17:53,859 No encuentra el fichero 437 00:17:53,859 --> 00:17:56,339 Así no encuentra el fichero 438 00:17:56,339 --> 00:17:57,279 Entonces vamos a hacerlo 439 00:17:57,279 --> 00:17:58,819 Bien 440 00:17:58,819 --> 00:17:59,619 A ver 441 00:17:59,619 --> 00:18:03,660 Vale 442 00:18:03,660 --> 00:18:05,380 Pues necesitamos sacar 443 00:18:05,380 --> 00:18:07,720 El input string 444 00:18:07,720 --> 00:18:08,759 Para este 445 00:18:08,759 --> 00:18:12,650 Esta es la sentencia que queremos hacer 446 00:18:12,650 --> 00:18:16,279 Pues el 447 00:18:16,279 --> 00:18:17,839 Este 448 00:18:17,839 --> 00:18:20,980 Pues este input string 449 00:18:20,980 --> 00:18:23,480 No lo queremos sacar así directamente 450 00:18:23,480 --> 00:18:25,059 Instanciando un file input string 451 00:18:25,059 --> 00:18:26,059 Ese ha sido nuestro problema 452 00:18:26,059 --> 00:18:28,579 Porque no he encontrado ese fichero pero no está en la ruta 453 00:18:28,579 --> 00:18:31,259 Pues vamos a sacar primero el input string 454 00:18:31,259 --> 00:18:33,599 Convirtiendo el recurso a flujo 455 00:18:33,599 --> 00:18:34,640 Entonces 456 00:18:34,640 --> 00:18:36,019 Esto se hace 457 00:18:36,019 --> 00:18:38,400 Mi clase se llama 458 00:18:38,400 --> 00:18:40,160 Gestión biblioteca 459 00:18:40,160 --> 00:18:40,799 Se llamaba 460 00:18:40,799 --> 00:18:46,839 Con gestión biblioteca 461 00:18:46,839 --> 00:18:51,579 gestión biblioteca 462 00:18:51,579 --> 00:18:52,480 tiene un 463 00:18:52,480 --> 00:18:55,440 perdón 464 00:18:55,440 --> 00:18:59,519 no, porque es el nombre 465 00:18:59,519 --> 00:19:00,859 de la clase, una cosa es 466 00:19:00,859 --> 00:19:02,720 el nombre de la clase, otra cosa es el objeto 467 00:19:02,720 --> 00:19:05,200 vale, entonces, ¿qué método era 468 00:19:05,200 --> 00:19:05,980 este? 469 00:19:10,359 --> 00:19:11,460 es que a saber en qué 470 00:19:11,460 --> 00:19:13,519 proyecto lo tengo, espera, vamos a preguntárselo 471 00:19:13,519 --> 00:19:14,500 a este rápidamente 472 00:19:14,500 --> 00:19:19,819 A ver si me resuelve rápido 473 00:19:19,819 --> 00:19:22,460 Para convertir 474 00:19:22,460 --> 00:19:25,140 Recurso 475 00:19:25,140 --> 00:19:26,799 En stream 476 00:19:26,799 --> 00:19:28,019 En java 477 00:19:28,019 --> 00:19:31,039 A ver si se ha enterado 478 00:19:31,039 --> 00:19:35,130 Ah mira 479 00:19:35,130 --> 00:19:35,950 Vale 480 00:19:35,950 --> 00:19:44,619 Ah esto, vale que me falta el class 481 00:19:44,619 --> 00:19:47,420 Vale, vale, vale, por eso no me salía el método classloader 482 00:19:47,420 --> 00:19:49,140 Vale, pues entonces 483 00:19:49,140 --> 00:19:51,140 Esto es 484 00:19:51,140 --> 00:19:53,019 Gestión biblioteca punto class 485 00:19:53,019 --> 00:19:54,619 Que era lo que me faltaba 486 00:19:54,619 --> 00:19:56,119 Y ahora ya 487 00:19:56,119 --> 00:20:00,000 GetClassLoader 488 00:20:00,000 --> 00:20:01,240 ¿Qué? 489 00:20:02,440 --> 00:20:03,319 Sí 490 00:20:03,319 --> 00:20:07,319 GetClassLoader 491 00:20:07,319 --> 00:20:10,220 Y ahora convierto con el método este 492 00:20:10,220 --> 00:20:12,160 GetResourceAsStream 493 00:20:12,160 --> 00:20:14,200 Ahora ya sí este 494 00:20:14,200 --> 00:20:25,119 Vale 495 00:20:25,119 --> 00:20:28,140 Me voy a bajar con los puntitos abajo 496 00:20:28,140 --> 00:20:30,240 Para que se vea mejor 497 00:20:30,240 --> 00:20:33,599 Entonces cada clase 498 00:20:33,599 --> 00:20:35,619 Tiene un objeto cargador 499 00:20:35,619 --> 00:20:37,880 Cada clase tiene un objeto cargador 500 00:20:37,880 --> 00:20:39,519 Que yo lo puedo sacar 501 00:20:39,519 --> 00:20:41,259 Mi clase, si yo le doy a punto class 502 00:20:41,259 --> 00:20:43,220 Tiene un objeto cargador 503 00:20:43,220 --> 00:20:45,519 Que me permite a mí 504 00:20:45,519 --> 00:20:47,660 Hacer muchas cosas, entre ellas 505 00:20:47,660 --> 00:20:49,319 Este recurso 506 00:20:49,319 --> 00:20:50,940 Que está en la carpeta de recursos 507 00:20:50,940 --> 00:20:52,039 Convertirlo a una serie 508 00:20:52,039 --> 00:20:55,019 Y eso ya es independiente del classpath y de todo 509 00:20:55,019 --> 00:20:57,339 Y ahora ya este is 510 00:20:57,339 --> 00:20:58,519 Lo podemos meter aquí 511 00:20:58,519 --> 00:21:01,539 Y vamos a importar input string 512 00:21:01,539 --> 00:21:02,460 De java.io, claro 513 00:21:02,460 --> 00:21:04,960 Ya está 514 00:21:04,960 --> 00:21:06,960 entonces ya he convertido 515 00:21:06,960 --> 00:21:09,359 este recurso que está en la carpeta 516 00:21:09,359 --> 00:21:11,640 resources, lo he convertido en flujo 517 00:21:11,640 --> 00:21:13,420 y ahí ya salvo todo mi problema 518 00:21:13,420 --> 00:21:14,619 del classpath y de todo 519 00:21:14,619 --> 00:21:17,160 y esto es lo que hace por dentro el log4j 520 00:21:17,160 --> 00:21:21,210 ahora ya si que podremos 521 00:21:21,210 --> 00:21:22,690 arrancar, espero 522 00:21:22,690 --> 00:21:24,130 espero 523 00:21:24,130 --> 00:21:26,750 con nuestro 524 00:21:26,750 --> 00:21:27,609 vale 525 00:21:27,609 --> 00:21:31,089 vamos a ver si la aplicación 526 00:21:31,089 --> 00:21:32,430 aquí arranca correctamente 527 00:21:32,430 --> 00:21:36,700 perfecto 528 00:21:36,700 --> 00:21:39,019 ha arrancado la aplicación 529 00:21:39,019 --> 00:21:42,680 el log me lo dice arrancando aplicación 530 00:21:42,680 --> 00:21:43,559 y ya está 531 00:21:43,559 --> 00:21:46,339 pues ala, hemos pasado el primer escollo 532 00:21:46,339 --> 00:21:49,900 bueno 533 00:21:49,900 --> 00:21:55,119 primer escollo salvado, ahora ya vamos 534 00:21:55,119 --> 00:21:56,980 a leer y hacer cosas 535 00:21:56,980 --> 00:21:58,740 con el xml, vale 536 00:21:58,740 --> 00:22:04,700 pues venga 537 00:22:04,700 --> 00:22:08,000 cuando yo instancio 538 00:22:08,000 --> 00:22:10,359 inicializo el fichero 539 00:22:10,359 --> 00:22:12,559 y ahora ya lo primero que vamos a 540 00:22:12,559 --> 00:22:14,640 hacer va a ser cargar 541 00:22:14,640 --> 00:22:17,019 el DOM, eso es lo primero 542 00:22:17,019 --> 00:22:18,339 que vamos a hacer, cargar el DOM 543 00:22:18,339 --> 00:22:20,319 vale 544 00:22:20,319 --> 00:22:22,900 pues vamos a cargar el DOM mediante este 545 00:22:22,900 --> 00:22:23,279 método 546 00:22:23,279 --> 00:22:26,859 vale, vamos a ponerlo aquí 547 00:22:26,859 --> 00:22:31,140 no voy a hacer comentarios 548 00:22:31,140 --> 00:22:33,180 javadoc para no que quede muy 549 00:22:33,180 --> 00:22:36,920 pesado, cargamos 550 00:22:36,920 --> 00:22:38,940 el árbol 551 00:22:38,940 --> 00:22:39,740 DOM 552 00:22:39,740 --> 00:22:42,079 desde el 553 00:22:42,079 --> 00:22:44,640 fichero.xml 554 00:22:44,640 --> 00:22:46,559 esto es lo que va a hacer este método 555 00:22:46,559 --> 00:22:47,819 vale 556 00:22:47,819 --> 00:22:50,039 cargar el árbol DOM y ese árbol DOM 557 00:22:50,039 --> 00:22:51,980 guardarlo aquí, para que ahora ya el resto de 558 00:22:51,980 --> 00:22:53,440 métodos puedan usarlo, ya está 559 00:22:53,440 --> 00:22:56,380 pues venga, ¿cómo se carga el árbol DOM? 560 00:22:56,539 --> 00:22:57,299 pues para eso 561 00:22:57,299 --> 00:22:58,660 tenemos 562 00:22:58,660 --> 00:23:06,309 vale, mi clase tiene como parámetros clave 563 00:23:06,309 --> 00:23:08,450 propiedades clave, el fichero 564 00:23:08,450 --> 00:23:10,130 el recurso 565 00:23:10,130 --> 00:23:11,970 donde está el XML, el recurso 566 00:23:11,970 --> 00:23:14,190 que este es el que acabamos 567 00:23:14,190 --> 00:23:15,809 de instanciar 568 00:23:15,809 --> 00:23:17,930 así 569 00:23:17,930 --> 00:23:19,569 ¿verdad? new file, fichero 570 00:23:19,569 --> 00:23:22,170 Lo acabamos de instanciar, este objeto fichero 571 00:23:22,170 --> 00:23:23,710 Y ahora 572 00:23:23,710 --> 00:23:26,269 Tiene otra propiedad que es el DOM 573 00:23:26,269 --> 00:23:28,309 Y ese DOM 574 00:23:28,309 --> 00:23:30,150 Vamos a parsearlo 575 00:23:30,150 --> 00:23:31,890 Cargarlo desde el fichero 576 00:23:31,890 --> 00:23:32,849 Mediante este método 577 00:23:32,849 --> 00:23:34,990 Que ahora mismo está vacío, pero vamos a completarlo 578 00:23:34,990 --> 00:23:35,890 Este método está aquí abajo 579 00:23:35,890 --> 00:23:38,089 Vale, pues ahora ya sí 580 00:23:38,089 --> 00:23:41,710 Para parsear, cargar 581 00:23:41,710 --> 00:23:42,789 Ese 582 00:23:42,789 --> 00:23:45,910 Uy, he puesto el comentario donde no era 583 00:23:45,910 --> 00:23:47,710 Perdón, control x 584 00:23:47,710 --> 00:23:48,309 Aquí era 585 00:23:48,309 --> 00:23:53,490 Vale, pues para cargar el árbol DOM 586 00:23:53,490 --> 00:23:54,670 Desde el fichero xml 587 00:23:54,670 --> 00:23:59,210 Tenemos que primero 588 00:23:59,210 --> 00:24:00,609 Instanciar una factoría 589 00:24:00,609 --> 00:24:03,849 Ahora hablamos de un poquito de las factorías 590 00:24:03,849 --> 00:24:07,269 Que esto 591 00:24:07,269 --> 00:24:08,930 El document builder factory 592 00:24:08,930 --> 00:24:11,490 Esto, a ver 593 00:24:11,490 --> 00:24:13,170 Aquí sí que tengo que mirar la 594 00:24:13,170 --> 00:24:14,910 New instanera 595 00:24:14,910 --> 00:24:16,349 No, no hace falta mirar la chuleta 596 00:24:16,349 --> 00:24:21,740 Factory 597 00:24:21,740 --> 00:24:22,759 Punto 598 00:24:22,759 --> 00:24:25,740 New instance 599 00:24:25,740 --> 00:24:33,720 vale, primero 600 00:24:33,720 --> 00:24:40,829 instanciamos este objeto 601 00:24:40,829 --> 00:24:43,009 este objeto como veis 602 00:24:43,009 --> 00:24:44,670 se ha importado 603 00:24:44,670 --> 00:24:47,769 document builder factory 604 00:24:47,769 --> 00:24:50,190 de aquí 605 00:24:50,190 --> 00:24:51,730 vale 606 00:24:51,730 --> 00:24:59,099 voy a quitar este para luego cuando 607 00:24:59,099 --> 00:25:04,069 se ha importado de aquí 608 00:25:04,069 --> 00:25:05,809 vale, ahora 609 00:25:05,809 --> 00:25:08,170 este objeto que es, este objeto es un objeto 610 00:25:08,170 --> 00:25:09,329 que se llama factoría 611 00:25:09,329 --> 00:25:12,470 es otro patrón de diseño más 612 00:25:12,470 --> 00:25:15,829 en realidad, patrones de diseño ya nos suenan 613 00:25:15,829 --> 00:25:17,450 el singleton 614 00:25:17,450 --> 00:25:19,769 que es una forma de programar 615 00:25:19,769 --> 00:25:21,029 en la cual 616 00:25:21,029 --> 00:25:23,450 los constructores 617 00:25:23,450 --> 00:25:24,990 están prohibidos 618 00:25:24,990 --> 00:25:27,789 y lo que nos ofrecen las clases 619 00:25:27,789 --> 00:25:29,190 son métodos get 620 00:25:29,190 --> 00:25:31,750 y ese get ya se preocupa 621 00:25:31,750 --> 00:25:33,730 cuando tú lo invocas de mirar si hay ya alguna 622 00:25:33,730 --> 00:25:35,650 instancia hecha, si hay alguna instancia hecha 623 00:25:35,650 --> 00:25:36,970 te devuelve esa instancia 624 00:25:36,970 --> 00:25:39,829 y si no hay ninguna ya te crea un objeto propio 625 00:25:39,829 --> 00:25:41,529 y así nos aseguramos de que no hay 626 00:25:41,529 --> 00:25:43,750 múltiples instancias cuando 627 00:25:43,750 --> 00:25:45,710 solicitamos un objeto, múltiples 628 00:25:45,710 --> 00:25:47,589 instancias del mismo objeto cuando no nos 629 00:25:47,589 --> 00:25:49,609 hacen falta, vale, ese es el 630 00:25:49,609 --> 00:25:51,710 patrón singleton, el DAO pues ya lo sabemos 631 00:25:51,710 --> 00:25:53,410 y con ese trabajaremos más, claro 632 00:25:53,410 --> 00:25:54,930 porque es de acceso a datos 633 00:25:54,930 --> 00:25:57,930 y lo del patrón factoría que tiene muchos detalles 634 00:25:57,930 --> 00:25:59,250 y uno puede averiguar 635 00:25:59,250 --> 00:26:00,369 se trata de 636 00:26:00,369 --> 00:26:03,609 como estamos, cuando tenemos un framework 637 00:26:03,609 --> 00:26:05,750 de lo que sea, en este caso un framework de xml 638 00:26:05,750 --> 00:26:06,890 un framework de 639 00:26:06,890 --> 00:26:09,529 acceso a lo que sea 640 00:26:09,529 --> 00:26:12,910 muchas veces hay que instanciar muchos objetos 641 00:26:12,910 --> 00:26:14,970 bueno, pues la forma de organizar 642 00:26:14,970 --> 00:26:15,549 eso es 643 00:26:15,549 --> 00:26:18,009 yo me hago una clase 644 00:26:18,009 --> 00:26:20,170 que es una clase que se llama factoría 645 00:26:20,170 --> 00:26:21,269 que en este caso es esta 646 00:26:21,269 --> 00:26:24,250 acaban con el nombre factor 647 00:26:24,250 --> 00:26:25,569 y me hago una clase factoría 648 00:26:25,569 --> 00:26:27,769 y esa clase sirve 649 00:26:27,769 --> 00:26:30,430 para instanciar 650 00:26:30,430 --> 00:26:31,829 objetos de muchas otras 651 00:26:31,829 --> 00:26:34,289 y ya está, entonces yo ahora voy a tener que 652 00:26:34,289 --> 00:26:35,450 instanciar cosas 653 00:26:35,450 --> 00:26:37,130 pues las instancio 654 00:26:37,130 --> 00:26:39,809 a través de esta que es la fábrica 655 00:26:39,809 --> 00:26:41,710 de objetos, es como una fábrica de objetos 656 00:26:41,710 --> 00:26:43,670 descrito muy por encima 657 00:26:43,670 --> 00:26:43,970 vale 658 00:26:43,970 --> 00:26:47,910 bueno pues esta fábrica de objetos 659 00:26:47,910 --> 00:26:49,569 me va a permitir ya 660 00:26:49,569 --> 00:26:51,230 instanciar un document 661 00:26:51,230 --> 00:26:52,069 builder 662 00:26:52,069 --> 00:27:00,079 el document builder 663 00:27:00,079 --> 00:27:01,859 te lo instancia 664 00:27:01,859 --> 00:27:02,539 el 665 00:27:02,539 --> 00:27:05,460 document builder factory 666 00:27:05,460 --> 00:27:07,359 mediante 667 00:27:07,359 --> 00:27:09,680 creo que new document builder 668 00:27:09,680 --> 00:27:11,259 ese, ya está 669 00:27:11,259 --> 00:27:13,740 vale, vamos a 670 00:27:13,740 --> 00:27:15,460 importar document builder 671 00:27:15,460 --> 00:27:17,599 de java xml parsers 672 00:27:17,599 --> 00:27:19,480 y esto 673 00:27:19,480 --> 00:27:21,859 me puede 674 00:27:21,859 --> 00:27:22,779 dar una excepción 675 00:27:22,779 --> 00:27:24,759 pues no pasa nada 676 00:27:24,759 --> 00:27:32,769 vale, aquí estaría bien 677 00:27:32,769 --> 00:27:35,089 poner un log, pero no vamos a arrastrarlo todo el rato 678 00:27:35,089 --> 00:27:36,990 ya sabéis la dinámica 679 00:27:36,990 --> 00:27:38,990 log de todo lo que me apetezca documentar 680 00:27:38,990 --> 00:27:40,029 en un fichero, ya está 681 00:27:40,029 --> 00:27:42,630 si son errores, log error, si es información 682 00:27:42,630 --> 00:27:44,930 sin más, log info, si es detallitos 683 00:27:44,930 --> 00:27:46,829 De depuración, log.debug 684 00:27:46,829 --> 00:27:48,849 Como, pues por ejemplo aquí 685 00:27:48,849 --> 00:27:50,730 Podría, yo que sé 686 00:27:50,730 --> 00:27:52,730 Poner un log.debug 687 00:27:54,750 --> 00:28:01,200 Aquí lo que pasa es que 688 00:28:01,200 --> 00:28:03,839 El logger tendría que 689 00:28:03,839 --> 00:28:04,920 Sacarlo 690 00:28:04,920 --> 00:28:08,240 El logger tendría que ponerlo 691 00:28:08,240 --> 00:28:09,180 Como variable de clase 692 00:28:09,180 --> 00:28:16,960 Y aquí un logger 693 00:28:16,960 --> 00:28:26,700 Entrando 694 00:28:26,700 --> 00:28:29,039 Otra 695 00:28:29,039 --> 00:28:34,730 Cargando documento 696 00:28:34,730 --> 00:28:38,630 Entonces este sería un log 697 00:28:38,630 --> 00:28:39,730 De mucho detalle 698 00:28:39,730 --> 00:28:43,490 Un montón, la información de que estoy cargando documento 699 00:28:43,490 --> 00:28:45,250 Solo lo necesito 700 00:28:45,250 --> 00:28:46,589 En mi fase de depuración 701 00:28:46,589 --> 00:28:48,710 Cuando estoy en una fase inicial del desarrollo 702 00:28:48,710 --> 00:28:51,009 Cuando yo ya mande 703 00:28:51,009 --> 00:28:52,289 Esta aplicación a producción 704 00:28:52,289 --> 00:28:55,170 No entraré acá a quitar estos logs 705 00:28:55,170 --> 00:28:56,230 Esa es la ventaja 706 00:28:56,230 --> 00:28:58,950 Sino que lo que haré será irme aquí 707 00:28:58,950 --> 00:29:00,609 Y aquí poner error 708 00:29:00,609 --> 00:29:05,180 en cuanto pongamos aquí error 709 00:29:05,180 --> 00:29:07,539 ya está, ya no va a salir todo eso 710 00:29:07,539 --> 00:29:09,339 pero mientras 711 00:29:09,339 --> 00:29:11,200 esté en la fase de depuración inicial 712 00:29:11,200 --> 00:29:13,500 pues lo dejo así para verlo 713 00:29:13,500 --> 00:29:14,460 todo en el fichero 714 00:29:14,460 --> 00:29:18,920 vale 715 00:29:18,920 --> 00:29:20,440 la ventaja 716 00:29:20,440 --> 00:29:23,799 de que sea los 4J 717 00:29:23,799 --> 00:29:25,460 y no los 4 normal 718 00:29:25,460 --> 00:29:27,380 es que cambiándolo aquí 719 00:29:27,380 --> 00:29:29,220 no tengo que reiniciar la aplicación 720 00:29:29,220 --> 00:29:31,700 la aplicación cada cierto tiempo va a mirar 721 00:29:31,700 --> 00:29:32,680 si ha habido algún cambio 722 00:29:32,680 --> 00:29:34,539 ¿Cada cuánto tiempo? 723 00:29:34,759 --> 00:29:36,740 Cada lo que configure 724 00:29:36,740 --> 00:29:39,059 Una variable que es 725 00:29:39,059 --> 00:29:41,279 Monitor intervalo, aquí está sin configurar 726 00:29:41,279 --> 00:29:42,819 Luego lo tendrá por defecto 727 00:29:42,819 --> 00:29:43,839 Pero bueno, nos da igual 728 00:29:43,839 --> 00:29:45,200 Vale 729 00:29:45,200 --> 00:29:48,740 Venga, esto ya no me interesa 730 00:29:48,740 --> 00:29:51,079 ¿Dónde estamos? 731 00:29:51,200 --> 00:29:51,500 Aquí 732 00:29:51,500 --> 00:29:54,359 Vale 733 00:29:54,359 --> 00:29:59,180 Ah, sí, sí, claro, porque estoy en 734 00:29:59,180 --> 00:30:03,559 A menos que lo quisiera 735 00:30:03,559 --> 00:30:07,339 Bueno, espera, más que estático 736 00:30:07,339 --> 00:30:08,480 Que queda muy feo 737 00:30:08,480 --> 00:30:10,619 O lo pasemos por aquí 738 00:30:10,619 --> 00:30:12,700 O que lo, vale 739 00:30:12,700 --> 00:30:15,420 Pero bueno, venga, más cómodo que sea 740 00:30:15,420 --> 00:30:27,529 Si no 741 00:30:27,529 --> 00:30:29,670 Se lo ponemos a biblioteca y ya está 742 00:30:29,670 --> 00:30:30,450 Pero vale, casi 743 00:30:30,450 --> 00:30:31,970 Venga, pues hala 744 00:30:31,970 --> 00:30:35,289 ¿Dónde estamos? Encargar documento 745 00:30:35,289 --> 00:30:38,210 El document builder factory 746 00:30:38,210 --> 00:30:40,089 El document builder 747 00:30:40,089 --> 00:30:40,730 Y ahora 748 00:30:40,730 --> 00:30:44,730 Podemos tratar de parsear 749 00:30:44,730 --> 00:30:45,549 El árbol 750 00:30:45,549 --> 00:30:47,170 Que es este doc de aquí 751 00:30:47,170 --> 00:30:54,089 Porque el document builder ya me lo parsea 752 00:30:54,089 --> 00:30:56,269 Db.parse 753 00:30:56,269 --> 00:30:59,369 Y aquí mi fichero 754 00:30:59,369 --> 00:31:04,420 Y ahora espérate 755 00:31:04,420 --> 00:31:05,900 Que le añado la excepción 756 00:31:05,900 --> 00:31:12,980 Así 757 00:31:12,980 --> 00:31:15,039 Esto 758 00:31:15,039 --> 00:31:17,079 Pues nada, a partir de ahora 759 00:31:17,079 --> 00:31:18,339 Se convierte en un corta y pega 760 00:31:18,339 --> 00:31:20,779 Cada vez que queremos parsear un XML 761 00:31:20,779 --> 00:31:22,059 A un árbol DOM 762 00:31:22,059 --> 00:31:24,900 Es que ya es hacer el factory 763 00:31:24,900 --> 00:31:26,059 El factory 764 00:31:26,059 --> 00:31:28,640 Me permite instanciar 765 00:31:28,640 --> 00:31:30,660 El builder, que es el que 766 00:31:30,660 --> 00:31:32,579 Me parsea 767 00:31:32,579 --> 00:31:34,900 Y ahora el builder me parsea 768 00:31:34,900 --> 00:31:36,640 Del fichero al documento 769 00:31:36,640 --> 00:31:38,839 ¿Vale? Y ya está, ya tenemos 770 00:31:38,839 --> 00:31:39,880 El DOM guardado ahí 771 00:31:39,880 --> 00:31:46,019 ¿Vale? Esto es simplemente 772 00:31:46,019 --> 00:31:47,759 Para pasar al 773 00:31:47,759 --> 00:31:49,160 El doc 774 00:31:49,160 --> 00:31:50,920 Como veis descarga el fichero 775 00:31:50,920 --> 00:31:51,700 Uy esto 776 00:31:51,700 --> 00:31:54,519 El doc 777 00:31:54,519 --> 00:31:57,240 Cuidado porque clases document hay muchas 778 00:31:57,240 --> 00:31:59,440 Imaginaos que yo no tengo aquí el import 779 00:31:59,440 --> 00:32:00,579 Este de aquí 780 00:32:00,579 --> 00:32:02,380 No tengo el import 781 00:32:02,380 --> 00:32:04,960 Entonces import de document 782 00:32:04,960 --> 00:32:07,480 Pues cuidadín 783 00:32:07,480 --> 00:32:08,720 No es este 784 00:32:08,720 --> 00:32:10,400 Es este 785 00:32:10,400 --> 00:32:12,799 No es este de aquí 786 00:32:12,799 --> 00:32:14,900 Vale 787 00:32:14,900 --> 00:32:19,079 Sí, pero no va a ser el tuyo 788 00:32:19,079 --> 00:32:23,390 Bueno, pues ya tenemos 789 00:32:23,390 --> 00:32:24,690 Este cargado 790 00:32:24,690 --> 00:32:26,289 Y ahora ya podemos hacer cosas 791 00:32:26,289 --> 00:32:27,529 Por ejemplo, vamos a lo más 792 00:32:27,529 --> 00:32:29,990 Ahora ya se trata de ver 793 00:32:29,990 --> 00:32:31,309 Simplemente 794 00:32:31,309 --> 00:32:34,089 Los métodos que te ofrece 795 00:32:34,089 --> 00:32:35,890 El objeto document 796 00:32:35,890 --> 00:32:38,150 El DOM para navegar 797 00:32:38,150 --> 00:32:39,190 Y ya está 798 00:32:39,190 --> 00:32:42,890 Y luego con esos métodos podemos ya hacer cualquier cosa 799 00:32:42,890 --> 00:32:45,109 Pues por ejemplo 800 00:32:45,109 --> 00:32:47,069 Vamos a listar 801 00:32:47,069 --> 00:32:48,490 Los libros que tenemos 802 00:32:48,490 --> 00:32:50,910 Bueno, pues el doc este 803 00:32:50,910 --> 00:32:53,470 Tiene un montonazo de métodos 804 00:32:53,470 --> 00:32:55,490 ¿Vale? Tiene un montón de ellos 805 00:32:55,490 --> 00:32:58,190 No vamos a verlos todos 806 00:32:58,190 --> 00:33:00,210 Pero los básicos para hacer cosas 807 00:33:00,210 --> 00:33:02,750 Pues tiene 808 00:33:02,750 --> 00:33:04,250 El 809 00:33:04,250 --> 00:33:09,910 Este 810 00:33:09,910 --> 00:33:12,930 El más utilizado 811 00:33:12,930 --> 00:33:13,589 Que es 812 00:33:13,589 --> 00:33:20,690 Entonces devuélveme todos los nodos elemento que se correspondan con esta etiqueta. 813 00:33:20,849 --> 00:33:22,589 Por ejemplo, yo quiero ver libros. 814 00:33:23,450 --> 00:33:25,289 Pues los libros, ¿dónde están? 815 00:33:25,450 --> 00:33:26,930 En nodos con etiqueta libro. 816 00:33:28,029 --> 00:33:31,009 Pues entonces ponemos aquí libro. 817 00:33:32,349 --> 00:33:34,009 Y me devuelve todo. 818 00:33:34,190 --> 00:33:35,049 ¿Cómo me lo devuelve? 819 00:33:35,369 --> 00:33:37,690 En una lista propia suya. 820 00:33:37,690 --> 00:33:42,730 Una lista propia suya 821 00:33:42,730 --> 00:33:44,569 Que desgraciadamente no podemos 822 00:33:44,569 --> 00:33:45,670 Convertir a string 823 00:33:45,670 --> 00:33:48,690 Para practicar con labras 824 00:33:48,690 --> 00:33:49,670 Pero podemos 825 00:33:49,670 --> 00:33:51,349 ¿Eh? 826 00:33:53,490 --> 00:33:54,930 Bueno, ahora podemos 827 00:33:54,930 --> 00:33:55,609 ¿Vale? 828 00:33:56,029 --> 00:33:58,789 Se importa del sitio correcto 829 00:33:58,789 --> 00:34:00,809 Y ahora aquí tenemos una lista de nodos 830 00:34:00,809 --> 00:34:02,630 Todos los nodos 831 00:34:02,630 --> 00:34:05,130 Que se llamen 832 00:34:05,130 --> 00:34:06,789 Libro, todos los nodos elementos 833 00:34:06,789 --> 00:34:07,670 Que se llame el libro 834 00:34:07,670 --> 00:34:10,909 Ahora ya podemos recorrer esta lista de nodos 835 00:34:10,909 --> 00:34:25,300 Vale, ¿cómo se va sacando 836 00:34:25,300 --> 00:34:27,380 Cada uno de los nodos 837 00:34:27,380 --> 00:34:28,000 Elemento? 838 00:34:30,000 --> 00:34:30,519 Vale 839 00:34:30,519 --> 00:34:33,239 Pues cada uno de los nodos 840 00:34:33,239 --> 00:34:34,019 Elemento 841 00:34:34,019 --> 00:34:36,480 Que yo voy a ir uno por uno 842 00:34:36,480 --> 00:34:39,039 Se saca dentro de esta lista 843 00:34:39,039 --> 00:34:39,940 Libros 844 00:34:39,940 --> 00:34:42,940 Con item, no con get 845 00:34:42,940 --> 00:34:44,619 Sino con item y 846 00:34:44,619 --> 00:34:47,099 Porque esa manía de cambiar las cosas 847 00:34:47,099 --> 00:34:48,780 no es manía, es que 848 00:34:48,780 --> 00:34:50,579 yo que sé, se llama así 849 00:34:50,579 --> 00:34:52,800 entonces 850 00:34:52,800 --> 00:34:55,340 libros item 851 00:34:55,340 --> 00:34:57,139 y te lo devuelve 852 00:34:57,139 --> 00:34:57,880 en clase node 853 00:34:57,880 --> 00:35:00,880 pero la clase node es subclase 854 00:35:00,880 --> 00:35:01,539 de element 855 00:35:01,539 --> 00:35:04,420 entonces se puede hacer un casting 856 00:35:04,420 --> 00:35:06,280 y hacer un casting 857 00:35:06,280 --> 00:35:08,239 a element nos habilita 858 00:35:08,239 --> 00:35:10,599 más métodos, entonces 859 00:35:10,599 --> 00:35:13,059 en lugar de dejarlo como node 860 00:35:13,059 --> 00:35:14,880 que podríamos dejarlo como node 861 00:35:14,880 --> 00:35:16,780 y ya está importando nodo 862 00:35:16,780 --> 00:35:20,739 Podríamos importar nodo y dejarlo así 863 00:35:20,739 --> 00:35:22,320 Y ahora con este libro 864 00:35:22,320 --> 00:35:23,599 Ver todo lo que podemos hacer 865 00:35:23,599 --> 00:35:26,880 Bueno, pues si hacemos el casting a element 866 00:35:26,880 --> 00:35:28,199 Y lo dejamos como element 867 00:35:28,199 --> 00:35:30,420 Nos habilita otros métodos 868 00:35:30,420 --> 00:35:31,059 ¿Vale? 869 00:35:31,059 --> 00:35:34,059 Todo el modelo es propio del doc 870 00:35:34,059 --> 00:35:35,440 Sí, sí, sí 871 00:35:35,440 --> 00:35:36,739 Son todos métodos del doc 872 00:35:36,739 --> 00:35:39,340 Entonces, bueno, vamos a ver 873 00:35:39,340 --> 00:35:43,360 ¿Qué queremos hacer con el libro? 874 00:35:44,159 --> 00:35:44,880 Pues queremos 875 00:35:44,880 --> 00:35:46,679 El libro sabemos que tiene 876 00:35:46,679 --> 00:35:49,679 sabemos que tiene 877 00:35:49,679 --> 00:35:52,460 donde está gestión biblioteca 878 00:35:52,460 --> 00:35:54,039 tiene un título 879 00:35:54,039 --> 00:35:55,179 un autor 880 00:35:55,179 --> 00:35:57,280 y un género 881 00:35:57,280 --> 00:36:00,260 pues entonces ahora podemos 882 00:36:00,260 --> 00:36:02,460 ir haciendo lo siguiente 883 00:36:02,460 --> 00:36:04,420 a ver 884 00:36:04,420 --> 00:36:06,280 vamos a ponerlo 885 00:36:06,280 --> 00:36:08,039 como element que me da más flexibilidad 886 00:36:08,039 --> 00:36:10,219 haciendo 887 00:36:10,219 --> 00:36:11,179 el casting 888 00:36:11,179 --> 00:36:14,019 primero importamos 889 00:36:14,019 --> 00:36:16,019 element y luego hacemos 890 00:36:16,019 --> 00:36:16,679 el casting 891 00:36:16,679 --> 00:36:23,539 y ahora 892 00:36:23,539 --> 00:36:24,980 pues por ejemplo vamos a 893 00:36:24,980 --> 00:36:26,960 vamos a mostrar 894 00:36:26,960 --> 00:36:29,519 vamos a mostrar solamente 895 00:36:29,519 --> 00:36:32,099 el título 896 00:36:32,099 --> 00:36:33,719 y el autor 897 00:36:33,719 --> 00:36:37,500 pues vamos a sacar 898 00:36:37,500 --> 00:36:40,789 el título 899 00:36:40,789 --> 00:36:44,719 lo podemos sacar de la siguiente manera 900 00:36:44,719 --> 00:36:53,590 este sería 901 00:36:53,590 --> 00:36:57,179 este sería 902 00:36:57,179 --> 00:36:58,579 ¿verdad? 903 00:36:59,360 --> 00:37:02,659 Todos los nodos título que cuelgan del elemento libro. 904 00:37:02,940 --> 00:37:05,219 Todos los nodos título que cuelgan del elemento libro. 905 00:37:05,380 --> 00:37:06,519 Y te lo devuelve de la misma manera. 906 00:37:06,940 --> 00:37:08,820 Pero claro, me lo devolvería ¿cómo? 907 00:37:09,019 --> 00:37:09,840 En node list. 908 00:37:10,539 --> 00:37:14,699 Vale, pero como yo sé que solamente hay un nodo título. 909 00:37:14,920 --> 00:37:15,480 Pues castearlo. 910 00:37:15,599 --> 00:37:17,340 Pues no, castearlo no. 911 00:37:17,619 --> 00:37:18,980 No puedo castear un elemento en una lista. 912 00:37:19,340 --> 00:37:21,239 Puedo quedarme con el primero. 913 00:37:21,800 --> 00:37:23,079 Y tercero. 914 00:37:24,300 --> 00:37:24,739 ¿Vale? 915 00:37:25,139 --> 00:37:26,159 Y a los siete te lo voy a castear. 916 00:37:26,860 --> 00:37:27,300 Vale. 917 00:37:27,300 --> 00:37:29,699 Y ahora ya sí le hago el casting 918 00:37:29,699 --> 00:37:33,659 Y ahora ya podría poner 919 00:37:33,659 --> 00:37:36,659 Claro 920 00:37:36,659 --> 00:37:39,199 Porque solo hay un título 921 00:37:39,199 --> 00:37:41,539 Si no sería una node list tendría que recogerlo 922 00:37:41,539 --> 00:37:42,679 Título 923 00:37:42,679 --> 00:37:45,340 Y aquí título 924 00:37:45,340 --> 00:37:47,000 Claro, pero título es el nodo elemento 925 00:37:47,000 --> 00:37:49,679 ¿Cómo saco yo lo que cuelga 926 00:37:49,679 --> 00:37:51,559 De título que a su vez es un nodo texto? 927 00:37:52,159 --> 00:37:53,219 Pues hay un método 928 00:37:53,219 --> 00:37:54,679 Que es getTextContext 929 00:37:54,679 --> 00:37:56,639 Que te saca 930 00:37:56,639 --> 00:37:59,400 el nodo texto que cuelgue de él 931 00:37:59,400 --> 00:38:00,840 aunque hubiese más nodos en él 932 00:38:00,840 --> 00:38:04,000 sí, te saca solo el texto 933 00:38:04,000 --> 00:38:05,159 que cuelgue de él 934 00:38:05,159 --> 00:38:05,679 vale 935 00:38:05,679 --> 00:38:07,800 sí, sí 936 00:38:07,800 --> 00:38:11,239 a ver, si es la primera vez que uno lo ve 937 00:38:11,239 --> 00:38:13,260 puede que sí, pero es que luego 938 00:38:13,260 --> 00:38:15,019 es lo más natural del mundo 939 00:38:15,019 --> 00:38:17,260 y cualquiera de estas cosas se hace en un pispás 940 00:38:17,260 --> 00:38:18,739 lo que pasa es que si la primera vez que uno lo ve 941 00:38:18,739 --> 00:38:21,519 pues hombre, se le puede hacer efectivamente 942 00:38:21,519 --> 00:38:23,320 pero luego 943 00:38:23,320 --> 00:38:24,800 al final son cuatro métodos 944 00:38:24,800 --> 00:38:28,599 No son tantos métodos 945 00:38:28,599 --> 00:38:29,519 Si es que estamos usando 946 00:38:29,519 --> 00:38:33,079 Solo estamos usando este 947 00:38:33,079 --> 00:38:34,500 Claro, pero en este caso 948 00:38:34,500 --> 00:38:36,380 Sí que es factible porque solo vas a tener 949 00:38:36,380 --> 00:38:37,460 Un título, un autor 950 00:38:37,460 --> 00:38:39,719 Bueno, pero si no lo sigues recorriendo 951 00:38:39,719 --> 00:38:40,840 Es lo mismo todo el rato 952 00:38:40,840 --> 00:38:44,019 Ahora 953 00:38:44,019 --> 00:38:48,699 Vale 954 00:38:48,699 --> 00:38:50,460 Título, contexto 955 00:38:50,460 --> 00:38:51,420 Context 956 00:38:51,420 --> 00:38:55,179 Autor 957 00:38:55,179 --> 00:38:57,019 Vale, a ver 958 00:38:57,019 --> 00:38:59,360 Lo que quiero es que 959 00:38:59,360 --> 00:39:00,840 Conozcamos esto un poquito 960 00:39:00,840 --> 00:39:02,679 Su uso y sus posibilidades 961 00:39:02,679 --> 00:39:05,539 No meternos en detalle 962 00:39:05,539 --> 00:39:07,260 Y ver todo porque echaríamos 963 00:39:07,260 --> 00:39:09,500 Una cantidad de tiempo que no renta 964 00:39:09,500 --> 00:39:10,559 ¿Vale? 965 00:39:11,199 --> 00:39:13,219 No vamos a echar una cantidad de tiempo que no renta 966 00:39:13,219 --> 00:39:14,079 Porque luego esto 967 00:39:14,079 --> 00:39:16,780 A saber si lo usáis o no 968 00:39:16,780 --> 00:39:19,039 Solamente ver por encima 969 00:39:19,039 --> 00:39:20,159 Un poco sus posibilidades 970 00:39:20,159 --> 00:39:25,099 No se sabe 971 00:39:25,099 --> 00:39:27,599 Pero tenéis que conocerlo todo 972 00:39:27,599 --> 00:39:29,159 O dicho de otra manera 973 00:39:29,159 --> 00:39:29,940 Yo tengo que dar 974 00:39:29,940 --> 00:39:31,679 Que menos que los contenidos 975 00:39:31,679 --> 00:39:34,280 ¿Y qué van a tener el examen? 976 00:39:34,360 --> 00:39:35,480 Todo lo que estoy mencionando 977 00:39:35,480 --> 00:39:38,619 Pero es la vida, chicos 978 00:39:38,619 --> 00:39:41,639 Estos son aplicaciones grandes 979 00:39:41,639 --> 00:39:42,619 Con millones de cosas 980 00:39:42,619 --> 00:39:44,880 Y tenemos 5 horas a la semana 981 00:39:44,880 --> 00:39:46,480 Y tenéis que manejaros en ese 982 00:39:46,480 --> 00:39:47,800 Vale 983 00:39:47,800 --> 00:39:51,260 Bueno, vosotros 984 00:39:51,260 --> 00:39:53,659 podéis con esto y más, de verdad 985 00:39:53,659 --> 00:39:55,760 yo no puedo 986 00:39:55,760 --> 00:39:57,800 tratar como un niño 987 00:39:57,800 --> 00:39:59,539 de cole, porque no soy niño de cole 988 00:39:59,539 --> 00:40:01,739 en absoluto, estáis muy lejos de eso 989 00:40:01,739 --> 00:40:03,340 vale 990 00:40:03,340 --> 00:40:05,860 de este método, que es lo único 991 00:40:05,860 --> 00:40:07,820 hasta ahora, con lo que hemos visto hasta ahora 992 00:40:07,820 --> 00:40:09,760 que es lo único, con lo que 993 00:40:09,760 --> 00:40:11,780 la única conclusión interesante 994 00:40:11,780 --> 00:40:12,860 que hemos sacado de esto 995 00:40:12,860 --> 00:40:15,739 pues que mediante tres líneas de copia 996 00:40:15,739 --> 00:40:17,780 y pega, uno parsea 997 00:40:17,780 --> 00:40:18,579 el fichero 998 00:40:18,579 --> 00:40:21,019 a su árbol DOC 999 00:40:21,019 --> 00:40:22,960 vale, mediante técnicas de copia y pepa 1000 00:40:22,960 --> 00:40:25,000 y una vez que uno tiene su doc 1001 00:40:25,000 --> 00:40:26,800 que es la clave, el doc 1002 00:40:26,800 --> 00:40:28,760 pues tiene métodos para hacer cosas 1003 00:40:28,760 --> 00:40:30,820 y este es básico 1004 00:40:30,820 --> 00:40:33,480 pero es que este es básico 1005 00:40:33,480 --> 00:40:35,159 que es el que ya 1006 00:40:35,159 --> 00:40:37,559 tenemos que conocer porque este sí que es básico 1007 00:40:37,559 --> 00:40:39,099 me saca 1008 00:40:39,099 --> 00:40:41,179 todos los nodos, elementos 1009 00:40:41,179 --> 00:40:43,059 que se llamen así 1010 00:40:43,059 --> 00:40:44,780 y me los guarda en una lista 1011 00:40:44,780 --> 00:40:46,980 y yo recorro la lista 1012 00:40:46,980 --> 00:40:49,260 y con cada nodo de cada uno 1013 00:40:49,260 --> 00:40:50,760 de ellos, que los saco de esta manera 1014 00:40:50,760 --> 00:40:53,139 hago ya lo que quiera 1015 00:40:53,139 --> 00:40:54,840 y en particular, ¿qué quiero hacer? 1016 00:40:55,900 --> 00:40:56,679 pues sacar 1017 00:40:56,679 --> 00:40:59,320 de él, por eso aquí he puesto 1018 00:40:59,320 --> 00:41:01,199 libro, porque son solo los que cuelgan 1019 00:41:01,199 --> 00:41:02,239 de él, aquí he puesto doc 1020 00:41:02,239 --> 00:41:04,719 todos los que cuelgan de doc 1021 00:41:04,719 --> 00:41:06,780 si yo lo veo así, lo entiendo 1022 00:41:06,780 --> 00:41:09,500 pero de repente veo, libro.getElementById 1023 00:41:09,500 --> 00:41:11,219 pues todos los nodos 1024 00:41:11,219 --> 00:41:13,440 títulos que cuelgan del nodo elemento libro 1025 00:41:13,440 --> 00:41:15,059 y en vez de devolverte un element, te devuelves un node 1026 00:41:15,059 --> 00:41:16,800 que tienes que castear al elemento 1027 00:41:16,800 --> 00:41:18,340 te devuelve un node list 1028 00:41:18,340 --> 00:41:20,320 por eso le ponemos el ítem 0 1029 00:41:20,320 --> 00:41:21,679 para que se quede con el primero 1030 00:41:21,679 --> 00:41:24,440 bueno, a ver, pero es el primer método que estamos haciendo 1031 00:41:24,440 --> 00:41:26,659 con esto, que igual por eso se os hace un poco 1032 00:41:26,659 --> 00:41:27,659 raro 1033 00:41:27,659 --> 00:41:30,039 en cuanto hagamos dos, tres métodos más 1034 00:41:30,039 --> 00:41:31,179 pues ya está 1035 00:41:31,179 --> 00:41:36,420 esto es home, home, home 1036 00:41:36,420 --> 00:41:37,440 no creo que hayan trabajado 1037 00:41:37,440 --> 00:41:38,980 vale 1038 00:41:38,980 --> 00:41:54,260 Pues venga 1039 00:41:54,260 --> 00:41:55,960 Vamos a hacer este método 1040 00:41:55,960 --> 00:41:59,719 Vamos a sacar todos los libros 1041 00:41:59,719 --> 00:42:02,960 Copiamos el de arriba 1042 00:42:02,960 --> 00:42:06,059 Vamos a sacar todos los libros 1043 00:42:06,059 --> 00:42:08,119 ahora 1044 00:42:08,119 --> 00:42:09,579 vamos a recorrer 1045 00:42:09,579 --> 00:42:11,440 los libros 1046 00:42:11,440 --> 00:42:16,900 todo esto es programar 1047 00:42:16,900 --> 00:42:18,400 si es que es programar, no es nada 1048 00:42:18,400 --> 00:42:20,539 ahora, de cada libro 1049 00:42:20,539 --> 00:42:23,639 un segundito 1050 00:42:23,639 --> 00:42:25,260 ahora vamos a terminarlo 1051 00:42:25,260 --> 00:42:26,179 que no vamos a terminar en nada 1052 00:42:26,179 --> 00:42:28,780 y os vais a sostenir 1053 00:42:28,780 --> 00:42:30,079 lo que vayáis a hacer 1054 00:42:30,079 --> 00:42:32,519 espera un momento 1055 00:42:32,519 --> 00:42:33,980 vamos a acabarlo 1056 00:42:33,980 --> 00:42:36,460 tenemos todos los libros 1057 00:42:36,460 --> 00:42:38,659 vamos libro por libro 1058 00:42:38,659 --> 00:43:02,269 De cada libro vamos a sacar el autor, si es que luego es copia y pega y lo de arriba, vamos a sacar el autor. Aquí tenemos el autor del libro y ahora, si autor.loquelecuelga, que es el, es uno de los textos, sí, eso, 1059 00:43:02,269 --> 00:43:25,849 Lo que es igual que el buscado, es igual que el autor buscado, entonces tengo que añadir a mis títulos, tengo que añadir a mis títulos el título. 1060 00:43:25,849 --> 00:43:29,429 Entonces, el título lo puedo sacar 1061 00:43:29,429 --> 00:43:31,070 Como lo he sacado antes 1062 00:43:31,070 --> 00:43:33,710 El título lo he sacado así 1063 00:43:33,710 --> 00:43:40,599 Si esto luego se hace de corrido, muchachos 1064 00:43:40,599 --> 00:43:43,699 Claro, saco el título 1065 00:43:43,699 --> 00:43:46,780 Y lo añado a 1066 00:43:46,780 --> 00:43:48,780 Títulos 1067 00:43:48,780 --> 00:43:51,599 Títulos.add 1068 00:43:51,599 --> 00:43:56,780 Título.getTextContext 1069 00:43:56,780 --> 00:44:01,389 ¡Hala! Y ya está el método 1070 00:44:01,389 --> 00:44:03,869 Vale 1071 00:44:03,869 --> 00:44:06,550 He cogido todos los libros 1072 00:44:06,550 --> 00:44:10,590 He ido libro por libro 1073 00:44:10,590 --> 00:44:12,769 He sacado el autor 1074 00:44:12,769 --> 00:44:16,309 Siempre tiro de ese método 1075 00:44:16,309 --> 00:44:17,090 Siempre en realidad 1076 00:44:17,090 --> 00:44:23,039 Del autor 1077 00:44:23,039 --> 00:44:25,119 Si es el buscado, pues ya está 1078 00:44:25,119 --> 00:44:26,719 Pues venga 1079 00:44:26,719 --> 00:44:28,440 Vamos a probarlo 1080 00:44:28,440 --> 00:44:29,480 Por si hemos hecho algo mal 1081 00:44:29,480 --> 00:44:32,119 Llamando a 1082 00:44:32,119 --> 00:44:35,500 gestión 1083 00:44:35,500 --> 00:44:37,679 punto 1084 00:44:37,679 --> 00:44:40,300 un segundo, ya me voy 1085 00:44:40,300 --> 00:44:40,900 ya me voy 1086 00:44:40,900 --> 00:44:44,099 vamos a buscar título 1087 00:44:44,099 --> 00:44:44,800 por autor 1088 00:44:44,800 --> 00:44:48,119 esto me da una, y vamos a buscar 1089 00:44:48,119 --> 00:44:49,440 a que autor vamos a buscar 1090 00:44:49,440 --> 00:44:52,139 vamos a buscar a este 1091 00:44:52,139 --> 00:44:56,599 mismo, vamos a 1092 00:44:56,599 --> 00:44:58,380 buscar a este 1093 00:44:58,380 --> 00:45:02,920 y ahora 1094 00:45:02,920 --> 00:45:04,139 esto va a dar una lista 1095 00:45:04,139 --> 00:45:06,239 la vamos a 1096 00:45:06,239 --> 00:45:08,780 pasar a stream 1097 00:45:08,780 --> 00:45:10,800 para mostrarla 1098 00:45:10,800 --> 00:45:11,539 con el for each 1099 00:45:11,539 --> 00:45:13,320 y tan joder 1100 00:45:13,320 --> 00:45:14,900 cancino 1101 00:45:14,900 --> 00:45:16,780 a ver 1102 00:45:16,780 --> 00:45:21,789 la vamos a pasar a stream 1103 00:45:21,789 --> 00:45:24,829 y así ya podemos llamar al for each 1104 00:45:24,829 --> 00:45:26,909 y al for each 1105 00:45:26,909 --> 00:45:27,969 ya le pasamos 1106 00:45:27,969 --> 00:45:30,309 el system.out 1107 00:45:30,309 --> 00:45:32,929 printl 1108 00:45:32,929 --> 00:45:35,889 vale pues ya está 1109 00:45:35,889 --> 00:45:38,030 buscamos títulos por autor 1110 00:45:38,030 --> 00:45:39,949 Y vamos a mostrarlos todos aquí 1111 00:45:39,949 --> 00:45:42,150 Vamos a poner aquí esto 1112 00:45:42,150 --> 00:45:44,050 Para distinguir del listado anterior 1113 00:45:44,050 --> 00:45:50,099 A ver si me busca los de este 1114 00:45:50,099 --> 00:45:53,619 Pues sí, efectivamente 1115 00:45:53,619 --> 00:45:55,360 Me ha encontrado este de aquí 1116 00:45:55,360 --> 00:46:02,730 Estupendo 1117 00:46:02,730 --> 00:46:03,829 Vale 1118 00:46:03,829 --> 00:46:06,110 A ver 1119 00:46:06,110 --> 00:46:11,849 Vale 1120 00:46:11,849 --> 00:46:15,610 pues a ver si 1121 00:46:15,610 --> 00:46:17,570 sois capaces 1122 00:46:17,570 --> 00:46:18,670 de hacer 1123 00:46:18,670 --> 00:46:21,489 sin mucha ayuda de EchaGPT 1124 00:46:21,489 --> 00:46:23,809 libros 1125 00:46:23,809 --> 00:46:25,230 un segundo, el de libros 1126 00:46:25,230 --> 00:46:27,469 eliminar, este ya implica 1127 00:46:27,469 --> 00:46:29,329 modificar, que no hemos 1128 00:46:29,329 --> 00:46:31,650 y agregar, eliminar, es que estos ya son 1129 00:46:31,650 --> 00:46:33,769 modificar que no solo consulta 1130 00:46:33,769 --> 00:46:35,389 pero hombre, este por lo menos 1131 00:46:35,389 --> 00:46:37,610 hacedlo y ya el próximo día 1132 00:46:37,610 --> 00:46:39,329 aprendemos a modificar que nos falta 1133 00:46:39,329 --> 00:46:41,530 no solo a consultar, consultar es que 1134 00:46:41,530 --> 00:46:43,469 es esto que hemos hecho, tú vas navegando y ya está 1135 00:46:43,469 --> 00:46:45,449 aprendemos a modificar y ya está 1136 00:46:45,449 --> 00:46:46,929 es que luego esto ya es práctica 1137 00:46:46,929 --> 00:46:49,489 y muy rápido, sin añadir dependencias 1138 00:46:49,489 --> 00:46:51,670 sin cargar la aplicación porque esto no pesa nada 1139 00:46:51,670 --> 00:46:53,829 pues puedes hacer consultas y cosas 1140 00:46:53,829 --> 00:46:54,829 ¿vale? 1141 00:46:55,369 --> 00:46:57,170 pero a ver, alguien iba a preguntar