1 00:00:00,000 --> 00:00:01,980 Vale, pues sí, eso no lo había pensado nunca. 2 00:00:02,240 --> 00:00:06,259 No lo sé. 3 00:00:07,339 --> 00:00:09,619 Se podrían medir los milisegundos. 4 00:00:10,560 --> 00:00:14,640 Podríamos ponerlo en una línea y ponerlo así y medir los milisegundos que tarda. 5 00:00:15,039 --> 00:00:15,759 O nanosegundos. 6 00:00:18,420 --> 00:00:23,440 Pero bueno, los nanosegundos en una vida entera, ¿qué significa? 7 00:00:24,280 --> 00:00:27,059 Venga, entonces, lo que he añadido simplemente. 8 00:00:27,059 --> 00:00:31,140 la opción 4, insertar módulo en un alumno 9 00:00:31,140 --> 00:00:35,219 entonces la opción 4, pide los datos del módulo 10 00:00:35,219 --> 00:00:39,140 que es este método auxiliar para pedir el nombre y la nota 11 00:00:39,140 --> 00:00:43,299 del módulo, sin más, pide el NIF del alumno 12 00:00:43,299 --> 00:00:45,759 y ahora llama a este método 13 00:00:45,759 --> 00:00:49,899 insert módulo del objeto este dado de aquí 14 00:00:49,899 --> 00:00:55,439 este método de aquí, lo que pasa es que este método tenemos que implementarle 15 00:00:55,439 --> 00:00:57,479 Tenemos los otros tres, pero nos falta este 16 00:00:57,479 --> 00:00:59,140 Vamos a implementar este, ya el último 17 00:00:59,140 --> 00:01:00,700 Y probamos la aplicación 18 00:01:00,700 --> 00:01:03,079 Insertar módulo a un alumno 19 00:01:03,079 --> 00:01:04,420 Entonces 20 00:01:04,420 --> 00:01:07,219 Si 21 00:01:07,219 --> 00:01:10,900 Aquí abriríamos con 22 00:01:10,900 --> 00:01:12,099 Object input string 23 00:01:12,099 --> 00:01:14,219 Hola 24 00:01:14,219 --> 00:01:15,340 ¿Se puede? 25 00:01:18,939 --> 00:01:20,459 Ay, Dios mío 26 00:01:20,459 --> 00:01:23,299 Que generación esta, que nos va a llevar al desastre 27 00:01:23,299 --> 00:01:27,079 Vale 28 00:01:27,079 --> 00:01:29,640 Vamos a volver a 29 00:01:29,640 --> 00:01:32,459 Vamos a volver a copiar esto 30 00:01:32,459 --> 00:01:34,560 Porque estamos leyendo 31 00:01:34,560 --> 00:01:36,000 Entonces voy a volver a copiar 32 00:01:36,000 --> 00:01:38,120 Lo de recuperar por NIF 33 00:01:38,120 --> 00:01:39,819 Y ahora ya modifico 34 00:01:39,819 --> 00:01:43,239 Copio entre el recuperar por NIF 35 00:01:43,239 --> 00:01:44,900 Porque estamos recuperando por NIF 36 00:01:44,900 --> 00:01:46,879 Lo que pasa es que en este caso no para devolver 37 00:01:46,879 --> 00:01:49,319 Sino solo para insertar 38 00:01:49,319 --> 00:01:50,819 Entonces 39 00:01:50,819 --> 00:01:56,180 Aquí si el fichero no existe 40 00:01:56,180 --> 00:01:58,340 o la longitud es 0 41 00:01:58,340 --> 00:01:59,939 no tiene sentido insertar módulo 42 00:01:59,939 --> 00:02:02,359 entonces aquí podríamos, ya que tenemos 43 00:02:02,359 --> 00:02:04,420 un void, vamos a aprovechar 44 00:02:04,420 --> 00:02:06,500 y aprovecharle 45 00:02:06,500 --> 00:02:08,020 en lugar de que estemos ahí perdiendo el tiempo 46 00:02:08,020 --> 00:02:10,400 vamos a aprovecharle con un boolean que sea 47 00:02:10,400 --> 00:02:12,400 true si te lo he hecho, false si no te lo he hecho 48 00:02:12,400 --> 00:02:14,240 si devolviéramos algo 49 00:02:14,240 --> 00:02:16,400 no nos quedaría más remedio que avisar con una excepción 50 00:02:16,400 --> 00:02:18,300 pero como lo tenemos ahí desocupado 51 00:02:18,300 --> 00:02:20,159 pues venga 52 00:02:20,159 --> 00:02:22,060 ala 53 00:02:22,060 --> 00:02:24,460 si no existe 54 00:02:24,460 --> 00:02:26,099 falso, ahora vamos a ver que existe 55 00:02:26,099 --> 00:02:27,400 pues recuperamos al alumno 56 00:02:27,400 --> 00:02:30,240 y cuando ya tenemos al alumno 57 00:02:30,240 --> 00:02:32,020 en lugar de mandarle 58 00:02:32,020 --> 00:02:33,219 al resultado 59 00:02:33,219 --> 00:02:38,319 en lugar de mandarle al resultado 60 00:02:38,319 --> 00:02:39,699 lo que tenemos que hacer es 61 00:02:39,699 --> 00:02:42,659 a.getModules 62 00:02:42,659 --> 00:02:44,719 y con getModules 63 00:02:44,719 --> 00:02:46,240 .addModule 64 00:02:46,240 --> 00:02:47,340 y ya está 65 00:02:47,340 --> 00:02:49,419 es lo que tenemos que hacer con él 66 00:02:49,419 --> 00:02:55,770 y podemos irnos 67 00:02:55,770 --> 00:02:57,550 Aunque esto es muy feo 68 00:02:57,550 --> 00:02:59,629 Y si Rosa me viera 69 00:02:59,629 --> 00:03:00,629 Me mataría 70 00:03:00,629 --> 00:03:02,610 Pero no está 71 00:03:02,610 --> 00:03:05,169 Así que voy a poner aquí un retuntru 72 00:03:05,169 --> 00:03:07,009 Y ya está, ¿vale? 73 00:03:07,650 --> 00:03:08,590 Y me piro de ahí 74 00:03:08,590 --> 00:03:11,789 A ver, la verdad es que 75 00:03:11,789 --> 00:03:13,090 Este es demasiado feo 76 00:03:13,090 --> 00:03:15,169 Porque es que ni cierro el flujo ni cierro nada 77 00:03:15,169 --> 00:03:17,210 No, es que hasta a mí me duele hacer esto 78 00:03:17,210 --> 00:03:19,430 Con lo vaga que soy 79 00:03:19,430 --> 00:03:20,650 Hasta a mí me duele 80 00:03:20,650 --> 00:03:21,629 Entonces 81 00:03:21,629 --> 00:03:25,090 Sí, pero 82 00:03:25,090 --> 00:03:27,629 Puedo hacer un try cat 83 00:03:27,629 --> 00:03:29,770 Sí, puedo leer 84 00:03:29,770 --> 00:03:31,090 Este aquí dentro, dices 85 00:03:31,090 --> 00:03:33,710 Sí, puedo hacer 86 00:03:33,710 --> 00:03:34,469 Este try 87 00:03:34,469 --> 00:03:37,009 Que lea el este dentro, pero bueno 88 00:03:37,009 --> 00:03:38,389 Vamos a complicarlo 89 00:03:38,389 --> 00:03:39,990 Y ya está 90 00:03:39,990 --> 00:03:43,330 Sí, a ver 91 00:03:43,330 --> 00:03:45,650 El try con recursos 92 00:03:45,650 --> 00:03:46,830 Es una tontería 93 00:03:46,830 --> 00:03:48,569 El try siempre lo usamos así 94 00:03:48,569 --> 00:03:51,569 Pero el try se le pueden poner unos paréntesis aquí 95 00:03:51,569 --> 00:03:53,889 Claro 96 00:03:53,889 --> 00:03:56,210 ¿y para qué se suele usar el try 97 00:03:56,210 --> 00:03:58,110 con recursos? cuando tú dentro 98 00:03:58,110 --> 00:04:00,030 del try vas a usar flujos 99 00:04:00,030 --> 00:04:02,069 ¿vale? entonces 100 00:04:02,069 --> 00:04:04,289 pues puedes abrir 101 00:04:04,289 --> 00:04:06,150 el flujo aquí, entonces ese 102 00:04:06,150 --> 00:04:08,409 recurso en lugar de luego tener que cerrarlo 103 00:04:08,409 --> 00:04:10,229 específicamente pues se cierra 104 00:04:10,229 --> 00:04:11,830 automáticamente ¿vale? 105 00:04:12,430 --> 00:04:13,830 entonces yo no lo tendría que 106 00:04:13,830 --> 00:04:15,509 instanciar aquí, pero bueno 107 00:04:15,509 --> 00:04:17,649 para no complicar este código 108 00:04:17,649 --> 00:04:20,290 vamos ahora mismo a dejarlo, ya lo usamos en otra 109 00:04:20,290 --> 00:04:21,430 ocasión 110 00:04:21,430 --> 00:04:24,230 Entonces en lugar del return true 111 00:04:24,230 --> 00:04:26,750 Que aquí no lo voy a hacer 112 00:04:26,750 --> 00:04:28,810 Porque este se que me quedaría 113 00:04:28,810 --> 00:04:29,569 Sin cerrar 114 00:04:29,569 --> 00:04:32,829 Pues vamos a salir 115 00:04:32,829 --> 00:04:34,810 Correctamente del try catch 116 00:04:34,810 --> 00:04:36,730 Con su finally 117 00:04:36,730 --> 00:04:38,529 Y el return 118 00:04:38,529 --> 00:04:39,910 Ahora ya si que lo hacemos aquí 119 00:04:39,910 --> 00:04:45,100 Y lo que si que ocurre 120 00:04:45,100 --> 00:04:46,819 Es que hay caminos que se me han quedado 121 00:04:46,819 --> 00:04:47,319 Sin return 122 00:04:47,319 --> 00:04:50,879 Se me ha quedado sin return 123 00:04:50,879 --> 00:04:51,939 Este 124 00:04:51,939 --> 00:04:56,019 Si sale un error de estos 125 00:04:56,019 --> 00:04:57,040 Yo quiero un falso 126 00:04:57,040 --> 00:05:02,779 Y si sale un error de estos 127 00:05:02,779 --> 00:05:03,720 Yo quiero un falso 128 00:05:03,720 --> 00:05:07,990 Y ahora ya sí que tengo 129 00:05:07,990 --> 00:05:09,589 Todos los caminos contemplados 130 00:05:09,589 --> 00:05:11,850 No, ¿hay algún camino? 131 00:05:11,949 --> 00:05:13,610 Me falta por contemplar 132 00:05:13,610 --> 00:05:15,310 No, es que en el DAO 133 00:05:15,310 --> 00:05:18,149 Ah, es por la clase DAO 134 00:05:18,149 --> 00:05:19,589 Vale, vale, vale 135 00:05:19,589 --> 00:05:21,829 Entonces, aquí 136 00:05:21,829 --> 00:05:22,949 Esto es Boolean 137 00:05:22,949 --> 00:05:29,600 Y en el DAO implementación 138 00:05:29,600 --> 00:05:30,819 Pues listo 139 00:05:30,839 --> 00:05:33,079 Vale 140 00:05:33,079 --> 00:05:36,550 Ala, pues ya lo tenemos 141 00:05:36,550 --> 00:05:39,410 Vamos a probar a ver si esto tiene algún sentido o no 142 00:05:39,410 --> 00:05:42,089 Como el fichero ya es 143 00:05:42,089 --> 00:05:43,990 Ah bueno, el cambio de la cabecera 144 00:05:43,990 --> 00:05:45,310 Que para eso nos hemos hecho la clase 145 00:05:45,310 --> 00:05:47,850 Ese cambio afectaba al save 146 00:05:47,850 --> 00:05:49,790 A este de aquí 147 00:05:49,790 --> 00:05:52,129 Al save del DAO implementación 148 00:05:52,129 --> 00:05:54,790 Exacto 149 00:05:54,790 --> 00:05:56,589 El save que está 150 00:05:56,589 --> 00:05:58,389 Aquí 151 00:05:58,389 --> 00:06:01,089 Entonces, ahora aquí sí que hay que hacer 152 00:06:01,089 --> 00:06:03,009 Si 153 00:06:03,009 --> 00:06:08,990 Fichero 154 00:06:08,990 --> 00:06:11,209 Alumnos 155 00:06:11,209 --> 00:06:14,709 No, ¿cómo se llama? 156 00:06:14,889 --> 00:06:15,870 Si fichero alumnos 157 00:06:15,870 --> 00:06:19,870 Si fichero alumnos 158 00:06:19,870 --> 00:06:21,790 Save 159 00:06:21,790 --> 00:06:22,189 Aquí 160 00:06:22,189 --> 00:06:25,860 No existe 161 00:06:25,860 --> 00:06:33,550 O su longitud es vacía 162 00:06:33,550 --> 00:06:50,569 Es igual a cero 163 00:06:50,569 --> 00:06:52,269 Entonces 164 00:06:52,269 --> 00:06:54,370 Efectivamente 165 00:06:54,370 --> 00:06:56,529 este objeto de aquí 166 00:06:56,529 --> 00:06:58,589 vamos a declarar la referencia afuera 167 00:06:58,589 --> 00:07:00,569 y lo instanciamos dentro de 168 00:07:00,569 --> 00:07:01,769 live, para 169 00:07:01,769 --> 00:07:04,470 no hacerlo en un bloque local 170 00:07:04,470 --> 00:07:06,970 a live, entonces la referencia 171 00:07:06,970 --> 00:07:08,269 es un output stream 172 00:07:08,269 --> 00:07:15,019 este es null y ahora 173 00:07:15,019 --> 00:07:18,660 si el fichero 174 00:07:18,660 --> 00:07:20,860 no existe 175 00:07:20,860 --> 00:07:22,560 lo creamos 176 00:07:22,560 --> 00:07:26,540 con la instancia original 177 00:07:26,540 --> 00:07:28,720 pero si 178 00:07:28,720 --> 00:07:29,480 si existe 179 00:07:29,480 --> 00:07:30,959 entonces 180 00:07:30,959 --> 00:07:33,639 lo creamos 181 00:07:33,639 --> 00:07:35,240 donde me falta, no da igual 182 00:07:35,240 --> 00:07:37,019 porque es la superclase 183 00:07:37,019 --> 00:07:39,779 entonces 184 00:07:39,779 --> 00:07:41,139 vale 185 00:07:41,139 --> 00:07:43,459 o sea esta es superclase 186 00:07:43,459 --> 00:07:44,060 de los dos 187 00:07:44,060 --> 00:07:46,939 la referencia la pongo de la superclase 188 00:07:46,939 --> 00:07:48,720 porque si no tendría que hacer dos referencias 189 00:07:48,720 --> 00:07:50,879 bueno, poner el object que 190 00:07:50,879 --> 00:07:53,420 la otra es subclase, también valdría 191 00:07:53,420 --> 00:07:54,000 efectivamente 192 00:07:54,000 --> 00:07:57,079 y si no, pues hacemos lo mismo 193 00:07:57,079 --> 00:07:58,680 pero con la otra versión 194 00:07:58,680 --> 00:08:07,250 Y ahora este de aquí 195 00:08:07,250 --> 00:08:09,310 Sería object output string 196 00:08:09,310 --> 00:08:10,509 Sin 197 00:08:10,509 --> 00:08:13,230 Cabecera 198 00:08:13,230 --> 00:08:25,500 Importado 199 00:08:25,500 --> 00:08:26,339 Vale 200 00:08:26,339 --> 00:08:30,620 Y esto de aquí es 201 00:08:30,620 --> 00:08:33,940 El constructor no es visible 202 00:08:33,940 --> 00:08:36,580 Ah 203 00:08:36,580 --> 00:08:38,960 Me lo he puesto solo y no me he enterado 204 00:08:38,960 --> 00:08:39,759 Vale 205 00:08:39,759 --> 00:08:45,139 Ahora si es visible 206 00:08:45,139 --> 00:08:46,419 Y 207 00:08:46,419 --> 00:08:48,600 Aún así tenemos 208 00:08:48,600 --> 00:08:51,960 Ah, bueno, vale 209 00:08:51,960 --> 00:08:53,720 Pues vais a tener razón 210 00:08:53,720 --> 00:08:57,080 Object 211 00:08:57,080 --> 00:08:58,700 Vale, por vaga 212 00:08:58,700 --> 00:09:00,340 Venga 213 00:09:00,340 --> 00:09:06,629 Vale, pues ya está 214 00:09:06,629 --> 00:09:10,549 Ya está toda completa 215 00:09:10,549 --> 00:09:13,049 Vamos a borrar el fichero viejo 216 00:09:13,049 --> 00:09:14,350 De alumnos 217 00:09:14,350 --> 00:09:16,549 El que estaba corrupto 218 00:09:17,889 --> 00:09:18,370 Uy 219 00:09:18,370 --> 00:09:20,649 Refresh, qué bien 220 00:09:20,649 --> 00:09:25,720 Vamos a borrar los dos 221 00:09:25,720 --> 00:09:35,419 Y ahora, a ver si somos capaces de que funcione todo sin ningún error 222 00:09:35,419 --> 00:09:38,460 Fichero de alumnos 223 00:09:38,460 --> 00:09:40,360 Alumnos 224 00:09:40,360 --> 00:09:41,919 Insertamos uno 225 00:09:41,919 --> 00:09:43,120 1, 2, 3, 4 226 00:09:43,120 --> 00:09:44,519 1, 2, 3, 4 227 00:09:44,519 --> 00:09:47,419 Recuperar alumno 228 00:09:47,419 --> 00:09:48,419 1, 2, 3, 4 229 00:09:48,419 --> 00:09:50,440 Este, vale 230 00:09:50,440 --> 00:09:52,120 Vamos a insertar otro 231 00:09:52,120 --> 00:09:55,340 2, 2, 2, 2, 2, 2 232 00:09:55,340 --> 00:09:57,259 Aparentemente insertado 233 00:09:57,259 --> 00:09:59,759 Vamos a ver si esta vez no ha corrompido el fichero 234 00:09:59,759 --> 00:10:02,259 Vamos a recuperar el segundo 235 00:10:02,259 --> 00:10:04,759 Perfecto 236 00:10:04,759 --> 00:10:06,659 Si recuperamos el primero 237 00:10:06,659 --> 00:10:09,730 También está 238 00:10:09,730 --> 00:10:11,149 Luego insertar, recuperar 239 00:10:11,149 --> 00:10:14,029 Con esa clase sin cabecera funciona 240 00:10:14,029 --> 00:10:16,289 Y ahora vamos a hacerlo de dos módulos 241 00:10:16,289 --> 00:10:18,230 Vamos a insertar 242 00:10:18,230 --> 00:10:18,970 Un módulo 243 00:10:18,970 --> 00:10:22,129 De nombre, tenía que haber puesto nombre módulo 244 00:10:22,129 --> 00:10:23,190 Porque es poco explicativo 245 00:10:23,190 --> 00:10:25,429 De nombre, datos 246 00:10:25,429 --> 00:10:27,649 Y nota, un 10 247 00:10:27,649 --> 00:10:28,870 ¿A qué alumno? 248 00:10:28,990 --> 00:10:30,090 1, 1, 1, 1 249 00:10:30,090 --> 00:10:32,370 veremos a ver 250 00:10:32,370 --> 00:10:34,429 y ahora 251 00:10:34,429 --> 00:10:35,789 vamos a mostrar 252 00:10:35,789 --> 00:10:38,870 la nota de el alumno 253 00:10:38,870 --> 00:10:40,070 1111 254 00:10:40,070 --> 00:10:42,809 en su módulo 255 00:10:42,809 --> 00:10:44,210 datos 256 00:10:44,210 --> 00:10:46,769 magnífico 257 00:10:47,590 --> 00:10:48,690 no sé si es un error 258 00:10:48,690 --> 00:10:50,850 con lo cual tenemos la oportunidad de ver que ha pasado aquí 259 00:10:50,850 --> 00:10:53,009 porque el uso lo he hecho bien 260 00:10:53,009 --> 00:10:54,309 había que pedirle 261 00:10:54,309 --> 00:10:55,470 mostrar nota 262 00:10:55,470 --> 00:10:58,789 no value 263 00:10:58,789 --> 00:11:00,990 present en el optional, no ha 264 00:11:00,990 --> 00:11:02,809 encontrado un módulo que se llame 265 00:11:02,809 --> 00:11:04,789 datos, o sea 266 00:11:04,789 --> 00:11:06,289 no lo ha debido insertar bien 267 00:11:06,289 --> 00:11:08,789 ah, es que somos 268 00:11:08,789 --> 00:11:09,990 bastante idiotas 269 00:11:09,990 --> 00:11:11,769 sí 270 00:11:11,769 --> 00:11:15,049 claro, es que, pero por qué no me decís las cosas 271 00:11:15,049 --> 00:11:16,250 si las veis 272 00:11:16,250 --> 00:11:19,129 cuando hemos hecho el método 273 00:11:19,129 --> 00:11:20,990 insertar alumno 274 00:11:20,990 --> 00:11:22,070 hemos recuperado al alumno 275 00:11:22,070 --> 00:11:24,929 le hemos enseñado el módulo, pero luego ese alumno 276 00:11:24,929 --> 00:11:26,110 no se ha ido al 277 00:11:26,110 --> 00:11:28,669 al fichero, o sea que hay que ser tontos 278 00:11:28,669 --> 00:11:30,870 ¿no? está claro el problema ¿no? 279 00:11:31,509 --> 00:11:32,990 es decir, no hemos actualizado 280 00:11:32,990 --> 00:11:34,610 nada, vale, claro 281 00:11:34,610 --> 00:11:36,950 es que lo hemos hecho todo así a lo 282 00:11:36,950 --> 00:11:40,120 vale, entonces 283 00:11:40,120 --> 00:11:42,399 aquí, insertar 284 00:11:42,399 --> 00:11:44,480 módulo es un ejemplo de que estamos 285 00:11:44,480 --> 00:11:46,539 modificando el fichero 286 00:11:46,539 --> 00:11:48,480 luego aquí como trabajamos 287 00:11:48,480 --> 00:11:50,519 con un 288 00:11:50,519 --> 00:11:52,440 fichero temporal, recordáis 289 00:11:52,440 --> 00:11:54,580 del año pasado ¿no? abrimos para leer 290 00:11:54,580 --> 00:11:55,460 este 291 00:11:55,460 --> 00:11:58,379 cada 292 00:11:58,379 --> 00:12:01,200 objeto que vamos leyendo 293 00:12:01,200 --> 00:12:03,679 si es el que tengo que modificar 294 00:12:03,679 --> 00:12:04,960 o sea, si no lo es 295 00:12:04,960 --> 00:12:06,960 lo escribo en el temporal tal cual 296 00:12:06,960 --> 00:12:09,059 y si es el que tengo que modificar 297 00:12:09,059 --> 00:12:10,220 lo escribo modificado 298 00:12:10,220 --> 00:12:12,919 cuando ya hemos terminado, borramos el primero 299 00:12:12,919 --> 00:12:13,740 y nombramos el otro 300 00:12:13,740 --> 00:12:16,700 así es como trabajábamos cuando modificábamos un fichero 301 00:12:16,700 --> 00:12:18,200 de acceso secuencial 302 00:12:18,200 --> 00:12:20,759 entonces, aquí 303 00:12:20,759 --> 00:12:22,940 insertar módulo 304 00:12:22,940 --> 00:12:24,700 para leer 305 00:12:24,700 --> 00:12:25,840 abrimos el primero 306 00:12:25,840 --> 00:12:27,580 Pero tenemos que crear 307 00:12:27,580 --> 00:12:30,179 Uno temporal para escribir 308 00:12:30,179 --> 00:12:37,779 Output 309 00:12:37,779 --> 00:12:39,500 Stream 310 00:12:39,500 --> 00:12:41,779 New 311 00:12:41,779 --> 00:12:42,799 File 312 00:12:42,799 --> 00:12:44,240 Output 313 00:12:44,240 --> 00:12:47,220 Stream 314 00:12:47,220 --> 00:12:48,820 Pues 315 00:12:48,820 --> 00:12:53,659 El nombre que nos dé la gana 316 00:12:53,659 --> 00:12:54,299 Temp 317 00:12:54,299 --> 00:13:00,779 Vale, entonces me he creado uno para escribir 318 00:13:00,779 --> 00:13:02,399 Que es 319 00:13:02,399 --> 00:13:04,919 El que va a ser el definitivo 320 00:13:04,919 --> 00:13:07,500 Luego tendría que cambiarle el nombre y borrar el otro 321 00:13:07,500 --> 00:13:11,350 Y esto 322 00:13:11,350 --> 00:13:12,929 Está lógicamente 323 00:13:12,929 --> 00:13:14,649 Sin declarar 324 00:13:14,649 --> 00:13:23,289 OutputStream 325 00:13:23,289 --> 00:13:25,610 Vale, aquí 326 00:13:25,610 --> 00:13:30,820 Hace 327 00:13:30,820 --> 00:13:32,220 No sé cuánto 328 00:13:32,220 --> 00:13:34,080 Me encontré con una cosa curiosa 329 00:13:34,080 --> 00:13:35,379 Que seguramente vosotros ya sabíais 330 00:13:35,379 --> 00:13:37,080 Y yo no era consciente 331 00:13:37,080 --> 00:13:39,039 Que como era un fichero auxiliar 332 00:13:39,039 --> 00:13:41,899 Pues a mí no se me ocurrió otra cosa que llamarle 333 00:13:41,899 --> 00:13:43,299 Aus al fichero 334 00:13:43,299 --> 00:13:45,360 Pues fíjate por donde 335 00:13:45,360 --> 00:13:46,940 aux es el único nombre de fichero 336 00:13:46,940 --> 00:13:49,159 o uno de los poquitos que no puedo usar en Windows 337 00:13:49,159 --> 00:13:51,259 porque aux tiene 338 00:13:51,259 --> 00:13:53,259 un flujo propio 339 00:13:53,259 --> 00:13:55,419 asociado para Windows, en Linux no habría 340 00:13:55,419 --> 00:13:57,559 problema, puedes llamar a un fichero 341 00:13:57,559 --> 00:13:58,600 aux, no pasa nada 342 00:13:58,600 --> 00:14:00,580 pero en Windows no puede 343 00:14:00,580 --> 00:14:03,139 si yo pongo aquí aux 344 00:14:03,139 --> 00:14:05,419 pues va a dar un error, que encima el error es poco 345 00:14:05,419 --> 00:14:07,320 explicativo, entonces 346 00:14:07,320 --> 00:14:09,299 hasta que me di cuenta de que el problema 347 00:14:09,299 --> 00:14:11,340 era que un sistema Windows 348 00:14:11,340 --> 00:14:13,220 no admite un nombre de fichero aux 349 00:14:13,220 --> 00:14:15,399 Porque ya tiene su propio flujo asociado 350 00:14:15,399 --> 00:14:16,620 Pues 351 00:14:16,620 --> 00:14:19,179 Perdí ahí unos cuantos minutos 352 00:14:19,179 --> 00:14:20,539 Vale 353 00:14:20,539 --> 00:14:22,919 Ahora 354 00:14:22,919 --> 00:14:25,379 ¿Qué vamos a hacer con cada alumno? 355 00:14:26,100 --> 00:14:27,039 Leemos alumno 356 00:14:27,039 --> 00:14:29,580 Si es el que tenemos que modificar 357 00:14:29,580 --> 00:14:31,340 Lo modificamos 358 00:14:31,340 --> 00:14:34,850 Bueno, no hace falta 359 00:14:34,850 --> 00:14:37,330 Y luego ya 360 00:14:37,330 --> 00:14:39,509 Ese alumno se va al fichero 361 00:14:39,509 --> 00:14:41,129 De maniobras 362 00:14:41,129 --> 00:14:41,769 O el temporal 363 00:14:41,769 --> 00:14:45,539 Right 364 00:14:45,539 --> 00:14:47,279 object 365 00:14:47,279 --> 00:14:50,909 a, vale 366 00:14:50,909 --> 00:14:53,509 entonces el fichero temporal 367 00:14:53,509 --> 00:14:55,429 se va quedando 368 00:14:55,429 --> 00:14:56,370 con 369 00:14:56,370 --> 00:14:59,629 todos los alumnos 370 00:14:59,629 --> 00:15:01,990 leemos alumno, si hay que modificarlo 371 00:15:01,990 --> 00:15:03,509 se modifica y se va al temporal 372 00:15:03,509 --> 00:15:06,090 entonces el fichero temporal ya se queda 373 00:15:06,090 --> 00:15:07,809 con todos los alumnos modificados 374 00:15:07,809 --> 00:15:10,230 lo que pasa es que claro, hay que eliminar el temporal 375 00:15:10,230 --> 00:15:12,009 y cambiar el nombre al otro, pero para eso tenemos 376 00:15:12,009 --> 00:15:12,990 los métodos de file 377 00:15:12,990 --> 00:15:17,519 o los de path 378 00:15:17,519 --> 00:15:20,240 Entonces cuando ya hemos terminado 379 00:15:20,240 --> 00:15:22,220 Y ya tenemos todos los flujos cerrados 380 00:15:22,220 --> 00:15:24,700 Que será aquí 381 00:15:24,700 --> 00:15:29,480 Ya tenemos todos los flujos cerrados 382 00:15:29,480 --> 00:15:30,600 Que ya será aquí 383 00:15:30,600 --> 00:15:32,480 Ahora ya solamente nos falta 384 00:15:32,480 --> 00:15:37,120 Borrar y renombrar 385 00:15:37,120 --> 00:15:38,940 Entonces vamos a tener que hacer 386 00:15:38,940 --> 00:15:41,480 Venga vamos a hacerlo con pad para variar 387 00:15:42,340 --> 00:15:44,879 Pad fichero 1 388 00:15:44,879 --> 00:15:48,340 Fichero original 389 00:15:48,340 --> 00:15:56,009 Igual a 390 00:15:56,009 --> 00:15:58,330 Pads.get 391 00:15:58,330 --> 00:16:03,429 Y aquí el nombre de mi fichero 392 00:16:03,429 --> 00:16:04,470 Que es 393 00:16:04,470 --> 00:16:08,950 Bueno, lo que pasa es que el original 394 00:16:08,950 --> 00:16:11,409 Es el fichero alumnos 395 00:16:11,409 --> 00:16:12,889 Entonces 396 00:16:12,889 --> 00:16:14,470 La verdad es que 397 00:16:14,470 --> 00:16:16,470 Como ya lo tengo en file el fichero alumnos 398 00:16:16,470 --> 00:16:18,309 La verdad es que es un poco tontería 399 00:16:18,309 --> 00:16:19,850 Voy a hacer el file del otro y ya está 400 00:16:19,850 --> 00:16:24,870 El original es el que tiene los datos originales 401 00:16:24,870 --> 00:16:25,470 Fichero alumno 402 00:16:25,470 --> 00:16:28,409 Sí, ese, ese, claro 403 00:16:28,409 --> 00:16:31,350 Bueno, el que yo estoy llamando original es a ese 404 00:16:31,350 --> 00:16:32,509 Vale, entonces 405 00:16:32,509 --> 00:16:33,950 El fichero temporal 406 00:16:33,950 --> 00:16:38,919 Es igual a new file 407 00:16:38,919 --> 00:16:40,299 De tem 408 00:16:40,299 --> 00:16:42,539 Y ahora 409 00:16:42,539 --> 00:16:44,100 ¿Qué tenemos que hacer? 410 00:16:45,299 --> 00:16:46,240 Pues vamos a 411 00:16:46,240 --> 00:16:48,179 Cambiar el nombre 412 00:16:48,179 --> 00:16:50,259 De fichero alumnos 413 00:16:50,259 --> 00:16:53,279 bueno antes vamos a borrar 414 00:16:53,279 --> 00:16:55,399 porque si no el sistema operativo colapsaría 415 00:16:55,399 --> 00:16:57,320 en un agujero negro 416 00:16:57,320 --> 00:16:57,799 dime 417 00:16:57,799 --> 00:17:01,220 porque es que no tengo esa referencia 418 00:17:01,220 --> 00:17:03,279 de antes, la unidad que tengo 419 00:17:03,279 --> 00:17:05,000 era para el 420 00:17:05,000 --> 00:17:06,680 object output string aquí 421 00:17:06,680 --> 00:17:11,400 y en el object output string 422 00:17:11,400 --> 00:17:12,680 se lo he dado directamente 423 00:17:12,680 --> 00:17:15,180 entonces como no tengo la referencia file la tengo que 424 00:17:15,180 --> 00:17:15,759 hacer abajo 425 00:17:15,759 --> 00:17:21,700 aquí es que no puedo abrirlo 426 00:17:21,700 --> 00:17:23,700 simultáneamente el mismo para leer y escribir? 427 00:17:23,700 --> 00:17:28,990 Sí, no. 428 00:17:28,990 --> 00:17:30,990 O sea, file 429 00:17:30,990 --> 00:17:32,990 no, file es un puntero 430 00:17:32,990 --> 00:17:34,990 a un recurso 431 00:17:34,990 --> 00:17:36,990 del sistema de archivos con esa ruta. 432 00:17:36,990 --> 00:17:38,990 Pero no lo modifica ni le toca 433 00:17:38,990 --> 00:17:40,990 ni hace nada. Entonces 434 00:17:40,990 --> 00:17:42,990 lo primero que vamos a hacer va a ser 435 00:17:42,990 --> 00:17:44,990 borrar el original 436 00:17:44,990 --> 00:17:48,940 que es fichero alumnos. 437 00:17:48,940 --> 00:17:50,940 Fichero alumnos punto fuera. 438 00:17:50,940 --> 00:17:52,940 Este fuera. 439 00:17:52,940 --> 00:17:54,940 Y ahora al temporal 440 00:17:54,940 --> 00:18:05,619 Vamos a cambiarle el nombre para que se llame como el original o el del principio. 441 00:18:06,880 --> 00:18:07,599 Y ya está. 442 00:18:15,769 --> 00:18:20,450 Fichero TEM hace referencia al nombre TEM. 443 00:18:21,450 --> 00:18:25,509 Y ahora, ese recurso del sistema de archivos que ahora mismo está con el nombre TEM, 444 00:18:25,509 --> 00:18:30,450 pues ese recurso del sistema de archivos, renómbralo con el nombre que tiene este recurso del sistema de archivos. 445 00:18:30,549 --> 00:18:33,069 Ese recurso ya no existe, pero nos da igual. 446 00:18:33,390 --> 00:18:35,849 Es que claro, si no hubiéramos hecho el delete antes 447 00:18:35,849 --> 00:18:37,609 El sistema operativo colapsaría 448 00:18:37,609 --> 00:18:39,630 Porque diría, tengo dos recursos, no puedo 449 00:18:39,630 --> 00:18:41,250 ¿Vale? 450 00:18:41,309 --> 00:18:42,910 Pero sigue asociado al nombre 451 00:18:42,910 --> 00:18:45,089 Aunque ya vas a hacer un punto delete 452 00:18:45,089 --> 00:18:47,529 Claro, yo he hecho un punto delete 453 00:18:47,529 --> 00:18:49,410 Pero el objeto file sigue existiendo 454 00:18:49,410 --> 00:18:51,930 Asociado a ese nombre, al nombre alumnos 455 00:18:51,930 --> 00:18:54,170 Aunque ese recurso ya no existe 456 00:18:54,170 --> 00:18:55,869 Claro, ese recurso ya no existe 457 00:18:55,869 --> 00:18:57,650 Pero sigue asociado al nombre alumnos 458 00:18:57,650 --> 00:18:58,190 Entonces 459 00:18:58,190 --> 00:19:01,990 Entonces, los alumnos que no has añadido un módulo 460 00:19:01,990 --> 00:19:02,789 No son alumnos 461 00:19:02,789 --> 00:19:28,930 Sí, porque los estoy escribiendo igualmente aquí en este if. Es decir, yo leo y todos ellos los escribo. Leo y escribo. Solo alguno de ellos lo escribo además con una modificación. Pero leer y escribir, leer y escribir, leer y escribir se hace con todos. Pero si alguno fuera el del if correspondiente, ese además hay una modificación previa antes de escribirlo. 462 00:19:28,930 --> 00:19:35,170 Claro, es que insert módulo a un alumno 463 00:19:35,170 --> 00:19:37,029 implica, yo abro el original 464 00:19:37,029 --> 00:19:38,190 con todos los alumnos 465 00:19:38,190 --> 00:19:40,750 voy cogiendo cada uno de ellos 466 00:19:40,750 --> 00:19:43,269 ¿Tengo que modificarte? No, te pasas al temporal 467 00:19:43,269 --> 00:19:45,289 ¿Tengo que modificarte? No, te pasas 468 00:19:45,289 --> 00:19:47,049 ¿Tengo que modificarte? Sí, te modifico 469 00:19:47,049 --> 00:19:48,650 y te paso, y ahora ya 470 00:19:48,650 --> 00:19:50,630 borro este y renombro este 471 00:19:50,630 --> 00:19:52,410 y el efecto final es 472 00:19:52,410 --> 00:19:55,170 que están todos los alumnos tal cual, salvo uno 473 00:19:55,170 --> 00:19:56,650 que se ha copiado o modificado 474 00:19:56,650 --> 00:20:03,700 Bueno, creo que es lo que he hecho 475 00:20:03,700 --> 00:20:06,480 Entonces, aquí 476 00:20:06,480 --> 00:20:15,319 Si solo creas alumnos sin añadirle módulos 477 00:20:15,319 --> 00:20:17,559 No estás siempre tirando de alumnos 478 00:20:17,559 --> 00:20:21,799 Si solo creas alumnos sin añadir módulos 479 00:20:21,799 --> 00:20:25,180 Bueno, crea alumnos sin módulos 480 00:20:25,180 --> 00:20:26,259 Es que no te entiendo la pregunta 481 00:20:26,259 --> 00:20:30,940 Sí, o sea, la aplicación siempre usa... 482 00:20:30,940 --> 00:20:34,359 Claro, en cuanto hay una modificación, 483 00:20:34,599 --> 00:20:35,660 pero tira en ese momento, 484 00:20:36,279 --> 00:20:36,960 crea un temporal 485 00:20:36,960 --> 00:20:39,059 y luego le cambia el nombre. 486 00:20:39,359 --> 00:20:41,140 O sea, el fichero físicamente se ha movido, 487 00:20:41,559 --> 00:20:43,099 pero cuando ese método ha terminado 488 00:20:43,099 --> 00:20:45,160 se sigue llamando como se llamaba, 489 00:20:45,299 --> 00:20:46,519 con lo cual la aplicación le da lo mismo. 490 00:20:47,380 --> 00:20:47,779 ¿Vale? 491 00:20:50,980 --> 00:20:51,420 Entonces, 492 00:20:53,819 --> 00:20:54,859 estos deletes 493 00:20:54,859 --> 00:20:57,500 son peligrosos 494 00:20:57,500 --> 00:20:58,000 porque 495 00:20:58,000 --> 00:21:00,940 solamente, este 496 00:21:00,940 --> 00:21:02,319 delete de hecho 497 00:21:02,319 --> 00:21:05,359 devuelve un boolean, un boolean que te dice 498 00:21:05,359 --> 00:21:07,000 si realmente lo ha borrado o no 499 00:21:07,000 --> 00:21:09,460 porque borrar un fichero no es tan fácil 500 00:21:09,460 --> 00:21:10,599 solo lo va a borrar 501 00:21:10,599 --> 00:21:13,279 si el fichero está absolutamente soltado 502 00:21:13,279 --> 00:21:15,160 de todos los que 503 00:21:15,160 --> 00:21:16,319 navegan por ahí 504 00:21:16,319 --> 00:21:18,099 claro, entonces 505 00:21:18,099 --> 00:21:21,079 en este caso nosotros lo hemos soltado 506 00:21:21,079 --> 00:21:22,920 sí 507 00:21:22,920 --> 00:21:24,859 Debería poder ser cerrado 508 00:21:24,859 --> 00:21:26,940 Pero si hay algún otro proceso para que lo tenga abierto 509 00:21:26,940 --> 00:21:28,940 Yo es que con los deletes 510 00:21:28,940 --> 00:21:30,420 Esto siempre me vuelvo loca 511 00:21:30,420 --> 00:21:31,380 Porque 512 00:21:31,380 --> 00:21:33,960 A veces me funciona, a veces no 513 00:21:33,960 --> 00:21:35,880 Entonces aquí siempre hay que asegurarse de que 514 00:21:35,880 --> 00:21:38,480 Lo tenga uno todo bien cerrado 515 00:21:38,480 --> 00:21:41,279 Como tengas algo abierto y no te hayas dado cuenta 516 00:21:41,279 --> 00:21:41,980 Ya lo han liado 517 00:21:41,980 --> 00:21:44,839 Ahora mismo lo tengo todo cerradísimo 518 00:21:44,839 --> 00:21:45,799 Vale 519 00:21:45,799 --> 00:21:48,420 Venga, vamos a volver a 520 00:21:48,420 --> 00:21:48,900 Dime 521 00:21:48,900 --> 00:22:03,660 Sí, aplicaciones como esta 522 00:22:03,660 --> 00:22:05,200 Podemos poner muchas 523 00:22:05,200 --> 00:22:09,980 A ver, aquí no hay ejercicios cortos 524 00:22:09,980 --> 00:22:11,400 ¿Vale? 525 00:22:11,500 --> 00:22:13,660 Entonces, enunciados de aplicaciones 526 00:22:14,259 --> 00:22:15,480 Para que hagan cosas 527 00:22:15,480 --> 00:22:16,259 Claro que sí 528 00:22:16,259 --> 00:22:18,400 Vamos a ir dejando continuamente 529 00:22:18,400 --> 00:22:21,900 Más del resto del contenido 530 00:22:21,900 --> 00:22:23,319 Que de esto, porque esto de ficheros 531 00:22:23,319 --> 00:22:26,119 Pues tampoco quiero que perdamos demasiado tiempo 532 00:22:26,119 --> 00:22:27,200 Porque no lo vais a usar mucho 533 00:22:27,200 --> 00:22:30,099 pero eso sí, no son ejercicios 534 00:22:30,099 --> 00:22:32,039 de programación que se hacen en un PIPAS 535 00:22:32,039 --> 00:22:33,980 si queréis practicar tenéis que 536 00:22:33,980 --> 00:22:35,500 hacerlos, claro 537 00:22:35,500 --> 00:22:37,839 claro 538 00:22:37,839 --> 00:22:40,140 sí, pero ya es pues eso 539 00:22:40,140 --> 00:22:42,079 una aplicación, un ejercicio 540 00:22:42,079 --> 00:22:43,779 corto es que no se puede hacer 541 00:22:43,779 --> 00:22:44,920 claro 542 00:22:44,920 --> 00:22:49,900 sí, hay que hacer métodos 543 00:22:49,900 --> 00:22:51,960 que hagan cosas y para probarlos pues tienes que 544 00:22:51,960 --> 00:22:53,140 hacer, vale, pero sí 545 00:22:53,140 --> 00:22:56,039 tranquilo que si quieres podrás practicar 546 00:22:56,039 --> 00:22:57,140 vale 547 00:22:57,140 --> 00:23:01,259 Estamos diciendo que ahora sí 548 00:23:01,259 --> 00:23:02,839 Que vamos a probar esta cosa 549 00:23:02,839 --> 00:23:14,500 Ya teníamos un fichero de alumnos 550 00:23:14,500 --> 00:23:15,559 Que no se había tocado 551 00:23:15,559 --> 00:23:17,400 Porque el alumno no hacía nada 552 00:23:17,400 --> 00:23:19,200 Así que vamos a seguir usando ese 553 00:23:19,200 --> 00:23:21,079 Vamos a ver 554 00:23:21,079 --> 00:23:22,460 Uy, es que le he dado aquí sin querer 555 00:23:22,460 --> 00:23:25,200 Vamos a ver si siguen estando los alumnos que estaban 556 00:23:25,200 --> 00:23:27,220 Efectivamente 557 00:23:27,220 --> 00:23:28,460 Sigue estando este 558 00:23:28,460 --> 00:23:31,099 Y sigue estando 559 00:23:31,099 --> 00:23:33,140 Este otro, pero que no tenía módulo 560 00:23:33,140 --> 00:23:34,519 Porque el insertar no funcionaba 561 00:23:34,519 --> 00:23:55,460 Vamos a ver si ahora podemos insertar algo. Nombre de módulo. Nota. NIF del alumno. Al primero de ellos. Bien. Entonces, este lo esperábamos. 562 00:23:55,460 --> 00:23:59,220 Sí, lo esperábamos 563 00:23:59,220 --> 00:24:01,019 Porque yo todo el rato me he ido dejando 564 00:24:01,019 --> 00:24:05,079 No, alumno serializable 565 00:24:05,079 --> 00:24:06,640 Pero cuando me he ido a serializable 566 00:24:06,640 --> 00:24:07,680 Yo lo he ido dejando 567 00:24:07,680 --> 00:24:09,960 A ver si en algún momento conectabais 568 00:24:09,960 --> 00:24:11,619 ¿Recordáis? 569 00:24:11,759 --> 00:24:12,759 Alumno serializable 570 00:24:12,759 --> 00:24:15,240 Pero es que alumno tiene módulos dentro 571 00:24:15,240 --> 00:24:17,240 También tienen que ser serializables 572 00:24:17,240 --> 00:24:20,599 Y módulo no lo he puesto serializable 573 00:24:20,599 --> 00:24:23,960 Pero este error no es peligroso 574 00:24:23,960 --> 00:24:25,440 Porque es que me lo dice tal cual. 575 00:24:26,720 --> 00:24:28,339 Me dice módulo no es serializable. 576 00:24:29,440 --> 00:24:29,660 ¿Vale? 577 00:24:29,700 --> 00:24:31,059 Entonces, aunque se me haya olvidado. 578 00:24:31,539 --> 00:24:33,220 Pero yo cuando uso una lista, ¿cuándo sería? 579 00:24:33,420 --> 00:24:45,619 Cuando guardas una lista entera de... 580 00:24:45,619 --> 00:24:47,000 ¿Cuándo se guarda la lista de alumnos? 581 00:24:53,400 --> 00:24:55,119 No sé exactamente. 582 00:24:56,380 --> 00:24:56,819 No lo sé. 583 00:24:56,900 --> 00:24:57,839 Podríamos probarlo. 584 00:25:00,069 --> 00:25:00,869 Pero eso no ha quedado hecho. 585 00:25:01,549 --> 00:25:02,529 Puede ser que no. 586 00:25:02,529 --> 00:25:05,829 Porque la forma en la que lo envuelve la lista, no lo sé. 587 00:25:06,009 --> 00:25:08,049 No sabría responderte ahora mismo. 588 00:25:08,450 --> 00:25:10,049 Serializable 589 00:25:10,049 --> 00:25:14,009 Pero bueno, es que este lo estamos 590 00:25:14,009 --> 00:25:15,450 Serializando específicamente 591 00:25:15,450 --> 00:25:17,450 Más que nada que nos ha salido el error 592 00:25:17,450 --> 00:25:18,569 Pues bueno, vamos a 593 00:25:18,569 --> 00:25:22,170 ¿Eh? 594 00:25:27,339 --> 00:25:27,819 Ya 595 00:25:27,819 --> 00:25:30,960 Vale, cuando una clase 596 00:25:30,960 --> 00:25:32,680 La hacemos que implemente serializable 597 00:25:32,680 --> 00:25:34,700 Nos suele salir un aviso 598 00:25:34,700 --> 00:25:35,579 Amarillo 599 00:25:35,579 --> 00:25:38,480 En realidad este aviso siempre lo ignoramos 600 00:25:38,480 --> 00:25:40,599 porque nosotros ya usamos 601 00:25:40,599 --> 00:25:42,440 nuestras propias claves en realidad 602 00:25:42,440 --> 00:25:44,880 este aviso amarillo está relacionado 603 00:25:44,880 --> 00:25:46,319 con cuidado 604 00:25:46,319 --> 00:25:48,539 con una idea básica 605 00:25:48,539 --> 00:25:50,660 cuidado cuando tus objetos 606 00:25:50,660 --> 00:25:52,559 se van a sitios 607 00:25:52,559 --> 00:25:53,900 que no son tu aplicación 608 00:25:53,900 --> 00:25:56,579 sea bases de datos o sea 609 00:25:56,579 --> 00:25:57,799 ficheros, cuidado 610 00:25:57,799 --> 00:26:01,099 porque deberías mantener la unicidad 611 00:26:01,099 --> 00:26:03,180 un criterio de unicidad de todos ellos 612 00:26:03,180 --> 00:26:03,720 cuidadín 613 00:26:03,720 --> 00:26:07,299 de ahí las claves primarias, de las bases de datos 614 00:26:07,299 --> 00:26:09,240 etcétera, para meter la audiencia. Normalmente 615 00:26:09,240 --> 00:26:11,259 uno ya se gestiona esas cosas 616 00:26:11,259 --> 00:26:13,259 y nosotros lo estamos gestionando con el 617 00:26:13,259 --> 00:26:16,599 NIF, que no sé yo si es una 618 00:26:16,599 --> 00:26:18,319 elección muy buena para una clave primaria 619 00:26:18,319 --> 00:26:20,000 pero bueno 620 00:26:20,000 --> 00:26:21,920 entonces este te dice, oye 621 00:26:21,920 --> 00:26:24,940 igual puedes añadir 622 00:26:24,940 --> 00:26:26,859 un parámetro 623 00:26:26,859 --> 00:26:28,460 que es el parámetro 624 00:26:28,460 --> 00:26:30,460 la clave de serialización 625 00:26:30,460 --> 00:26:31,859 que 626 00:26:31,859 --> 00:26:33,359 va a ser único 627 00:26:33,359 --> 00:26:35,880 y esa clave de serialización 628 00:26:35,880 --> 00:26:38,259 pues clases 629 00:26:38,259 --> 00:26:39,740 que serializan 630 00:26:39,740 --> 00:26:41,880 usan métodos que a lo mejor 631 00:26:41,880 --> 00:26:44,039 lo necesitan y necesitan 632 00:26:44,039 --> 00:26:45,460 la garantía de que sea único 633 00:26:45,460 --> 00:26:47,420 va un poco por ahí, pero normalmente 634 00:26:47,420 --> 00:26:49,660 normalmente uno gestiona 635 00:26:49,660 --> 00:26:52,180 sus propios criterios de seguridad con sus propias claves 636 00:26:52,180 --> 00:26:53,819 otra cosa es que tú de repente 637 00:26:53,819 --> 00:26:55,380 incorpores un framework o algo 638 00:26:55,380 --> 00:26:57,859 que te exija que esté 639 00:26:57,859 --> 00:26:59,559 ese parámetro, que te lo exija 640 00:26:59,559 --> 00:27:01,480 ¿vale? pues si te lo exige lo pones 641 00:27:01,480 --> 00:27:04,019 en algún caso, ahora mismo 642 00:27:04,019 --> 00:27:05,140 no me viene a la cabeza cuál 643 00:27:05,140 --> 00:27:08,039 pero en algún ejemplo de alguna cosa que usamos 644 00:27:08,039 --> 00:27:10,400 en algún momento más adelante, una muy específica 645 00:27:10,400 --> 00:27:12,440 como eso no tengas 646 00:27:12,440 --> 00:27:14,180 este parámetro aquí 647 00:27:14,180 --> 00:27:16,099 de serialización, se queja 648 00:27:16,099 --> 00:27:17,799 porque lo usa específicamente 649 00:27:17,799 --> 00:27:21,160 ¿vale? entonces 650 00:27:21,160 --> 00:27:23,480 haberlo puesto aquí me vale 651 00:27:23,480 --> 00:27:25,279 para algo, para quitar el amarillo ahora mismo 652 00:27:25,279 --> 00:27:27,240 porque no lo estamos usando y nadie lo está usando 653 00:27:27,240 --> 00:27:29,740 pues para eso vale 654 00:27:29,740 --> 00:27:30,940 para quitar el amarillo 655 00:27:30,940 --> 00:27:34,529 venga, pues 656 00:27:34,529 --> 00:27:36,750 vamos a 657 00:27:36,750 --> 00:27:38,690 siguiente intento de ejecutar 658 00:27:38,690 --> 00:27:41,130 aquí a lo mejor ya se nos ha roto el fichero 659 00:27:41,130 --> 00:27:46,750 Pero cuando he intentado escribirlo, no sé si ya se habrá roto el fichero. 660 00:27:46,849 --> 00:27:47,349 Vamos a ver. 661 00:27:48,490 --> 00:27:49,130 Espera, vamos a... 662 00:27:52,289 --> 00:27:58,890 A mí aquí, cuidado, porque es que para que el delete funcione, asegurar de que están todos los procesos cerrados. 663 00:27:59,109 --> 00:27:59,670 ¿Ves a decir algo? 664 00:27:59,769 --> 00:28:05,769 ¿Es que se refiere hasta cuando vas a crear un repositorio y Bernatel que te pide que pongas la clave primaria? 665 00:28:09,380 --> 00:28:10,680 No me refiero a eso. 666 00:28:10,680 --> 00:28:12,140 Cuando lleguemos a eso 667 00:28:12,140 --> 00:28:14,500 Lo sacas, acuérdate 668 00:28:14,500 --> 00:28:17,380 Para, yo estaba pensando en otra cosa 669 00:28:17,380 --> 00:28:19,240 Pero eso puede ser también 670 00:28:19,240 --> 00:28:20,420 Una oportunidad pues para ver 671 00:28:20,420 --> 00:28:22,740 Una forma de usar ese parámetro 672 00:28:22,740 --> 00:28:23,380 ¿Vale? 673 00:28:25,220 --> 00:28:27,380 Vale, pues venga 674 00:28:27,380 --> 00:28:28,920 Ejecutamos esto 675 00:28:28,920 --> 00:28:30,980 Ahora sí que sí, fichero 676 00:28:30,980 --> 00:28:33,180 Alumnos, vamos a ver si se ha 677 00:28:33,180 --> 00:28:34,140 Roto el fichero 678 00:28:34,140 --> 00:28:36,859 Un, dos, tres y cuatro 679 00:28:36,859 --> 00:28:39,140 Parece que no se ha roto 680 00:28:39,140 --> 00:28:41,160 Un, dos, tres y cuatro 681 00:28:41,160 --> 00:28:43,000 Parece que no se ha roto 682 00:28:43,000 --> 00:28:44,740 Ahora sí que vamos a insertar 683 00:28:44,740 --> 00:28:46,359 Un módulo 684 00:28:46,359 --> 00:28:48,759 A ver si ahora ya lo hacemos bien 685 00:28:48,759 --> 00:28:50,940 Nota 10 686 00:28:50,940 --> 00:28:52,619 NIF de alumno 687 00:28:52,619 --> 00:28:56,619 El adiós es por 688 00:28:56,619 --> 00:28:58,660 Algún break se me ha escapado en el switch case 689 00:28:58,660 --> 00:29:01,480 Porque si no 690 00:29:01,480 --> 00:29:03,140 No se da cuenta de que saca el adiós todo el rato 691 00:29:03,140 --> 00:29:04,039 Vale 692 00:29:04,039 --> 00:29:07,099 Ya hemos insertado y ahora vamos a mostrar 693 00:29:07,099 --> 00:29:09,420 Ahora ya sí que va a llamar a toda su sucesión 694 00:29:09,420 --> 00:29:10,279 De funciones lambda 695 00:29:10,279 --> 00:29:12,759 del alumno 1111 696 00:29:12,759 --> 00:29:14,640 el nombre de módulo datos 697 00:29:14,640 --> 00:29:16,039 un 10 698 00:29:16,039 --> 00:29:18,740 que con estas pruebas 699 00:29:18,740 --> 00:29:20,400 garantizamos que lo hemos hecho perfecto, no 700 00:29:20,400 --> 00:29:21,980 seguro que nos podemos hacer más pruebas 701 00:29:21,980 --> 00:29:24,160 y empiezan a salir errores por todos lados 702 00:29:24,160 --> 00:29:26,099 pero lo que nos interesa a nosotros 703 00:29:26,099 --> 00:29:28,000 lo que de alguna manera queríamos hacer 704 00:29:28,000 --> 00:29:29,599 suficiente 705 00:29:29,599 --> 00:29:34,670 vale, pues entonces 706 00:29:34,670 --> 00:29:36,650 la visión general de lo que es 707 00:29:36,650 --> 00:29:37,950 un DAO está claro, no 708 00:29:37,950 --> 00:29:42,720 aquí ya casi 709 00:29:42,720 --> 00:29:44,839 Lo único que nos ha quedado un poquito feo 710 00:29:44,839 --> 00:29:45,759 Y vamos a dejar 711 00:29:45,759 --> 00:29:48,000 Vamos a intentar dejarlo un pelín más bonito 712 00:29:48,000 --> 00:29:49,660 Antes de irnos 713 00:29:49,660 --> 00:29:52,079 Lo que nos ha quedado un poco feo 714 00:29:52,079 --> 00:29:53,640 Es esto de 715 00:29:53,640 --> 00:29:59,019 Espera, voy a asegurarme con el refresh 716 00:29:59,019 --> 00:30:00,259 De que ha borrado el temp 717 00:30:00,259 --> 00:30:02,299 Que ni me ha 718 00:30:02,299 --> 00:30:07,000 ¿Veis? El delete ha funcionado 719 00:30:07,000 --> 00:30:09,160 Porque me ha borrado el temp y ha quedado solo alumnos 720 00:30:09,160 --> 00:30:12,000 De hecho, si no, no me habría hecho lo de recuperar correctamente 721 00:30:12,000 --> 00:30:13,980 Bueno, todo funciona estupendo 722 00:30:13,980 --> 00:30:16,859 Pero que es un poco feo de esta aplicación 723 00:30:16,859 --> 00:30:19,400 Bueno vamos a darle a salir 724 00:30:19,400 --> 00:30:23,339 Lo que es un poco feo 725 00:30:23,339 --> 00:30:24,319 De esta aplicación 726 00:30:24,319 --> 00:30:27,559 Es que cada vez que la arranquemos 727 00:30:27,559 --> 00:30:28,640 Porque 728 00:30:28,640 --> 00:30:30,079 Tenga que llegar alguien ahí 729 00:30:30,079 --> 00:30:32,160 Entonces cuando se reinician los servidores 730 00:30:32,160 --> 00:30:34,019 Pues se inician por la noche 731 00:30:34,019 --> 00:30:37,019 Entonces si tienes que pagar a un tío que está ahí por la noche 732 00:30:37,019 --> 00:30:38,359 Para cuando se inicia el servidor 733 00:30:38,359 --> 00:30:40,839 Y la aplicación meter el nombre del usuario 734 00:30:40,839 --> 00:30:42,460 Verte el nombre del fichero 735 00:30:42,460 --> 00:30:43,880 Pues no te sale rentable 736 00:30:43,880 --> 00:30:45,759 claro 737 00:30:45,759 --> 00:30:48,799 lo natural es que los parámetros 738 00:30:48,799 --> 00:30:51,019 de configuración 739 00:30:51,019 --> 00:30:53,180 inicial de una aplicación 740 00:30:53,180 --> 00:30:54,220 no los dejas meter tú a mano 741 00:30:54,220 --> 00:30:56,500 que esté en un fichero y tú lo leas 742 00:30:56,500 --> 00:30:58,799 claro, lo podríamos hacer patatero 743 00:30:58,799 --> 00:31:00,559 meterlo en un fichero y leerlo con un file reader 744 00:31:00,559 --> 00:31:02,299 pero hombre, primero 745 00:31:02,299 --> 00:31:04,859 aparte de que es patatero, como es algo 746 00:31:04,859 --> 00:31:05,960 que se hace tanto 747 00:31:05,960 --> 00:31:08,859 tener parámetros de configuración en un fichero 748 00:31:08,859 --> 00:31:11,119 es algo que se hace tanto, pues ya hay una clase 749 00:31:11,119 --> 00:31:12,859 que te facilita 750 00:31:12,859 --> 00:31:15,359 tanto escribir parámetros de configuración 751 00:31:15,359 --> 00:31:17,299 como leerlos, que es la clase 752 00:31:17,299 --> 00:31:19,380 properties, que lo que te facilita 753 00:31:19,380 --> 00:31:21,259 es leer y escribir 754 00:31:21,259 --> 00:31:23,279 en los famosos ficheros properties 755 00:31:23,279 --> 00:31:24,220 o de propiedades 756 00:31:24,220 --> 00:31:27,059 entonces aquí lo ideal es que uno 757 00:31:27,059 --> 00:31:28,339 dijera, vamos a ver 758 00:31:28,339 --> 00:31:30,920 ¿cuáles son los parámetros 759 00:31:30,920 --> 00:31:33,059 de inicialización de esta aplicación? 760 00:31:33,299 --> 00:31:35,400 este sencillo, el nombre del fichero 761 00:31:35,400 --> 00:31:36,480 solo el nombre del fichero 762 00:31:36,480 --> 00:31:38,500 pero podrían ser muchos, podrían ser 763 00:31:38,500 --> 00:31:41,460 la URL de la base de datos, el puerto, el usuario 764 00:31:41,460 --> 00:31:42,240 podrían ser muchos 765 00:31:42,240 --> 00:31:44,339 En este caso es el nombre del fichero 766 00:31:44,339 --> 00:31:46,099 ¿Vale? Pero ese 767 00:31:46,099 --> 00:31:48,839 Único dato vamos a ponerlo 768 00:31:48,839 --> 00:31:49,980 En un fichero de propiedades 769 00:31:49,980 --> 00:31:52,740 Aparte no lo vamos a tener al tío ahí toda la noche 770 00:31:52,740 --> 00:31:53,660 Para escribir esto 771 00:31:53,660 --> 00:31:55,200 Pues venga 772 00:31:55,200 --> 00:31:57,799 Nos hacemos un fichero de propiedades 773 00:31:57,799 --> 00:32:00,539 Que debería estar en el pad 774 00:32:00,539 --> 00:32:02,779 Del sistema 775 00:32:02,779 --> 00:32:04,700 Aquí como todavía 776 00:32:04,700 --> 00:32:06,740 No hemos metido una estructura 777 00:32:06,740 --> 00:32:07,259 De maven 778 00:32:07,259 --> 00:32:10,559 Pues para asegurarnos de que está 779 00:32:10,559 --> 00:32:12,779 en el path del sistema, vamos a poner el raíz 780 00:32:12,779 --> 00:32:13,339 y ya está 781 00:32:13,339 --> 00:32:16,819 pero cuando ya necesitemos dependencias 782 00:32:16,819 --> 00:32:18,980 y ya le demos a este fichero para facilitar 783 00:32:18,980 --> 00:32:20,599 eso, una estructura de maven, pues hay una 784 00:32:20,599 --> 00:32:22,640 carpeta específica para ese tipo de recursos 785 00:32:22,640 --> 00:32:23,779 que está en el path, etc. 786 00:32:24,859 --> 00:32:26,400 pero ahora mismo no tenemos esa estructura 787 00:32:26,400 --> 00:32:28,119 tenemos la por defecto de Eclipse 788 00:32:28,119 --> 00:32:30,559 entonces, para que la máquina 789 00:32:30,559 --> 00:32:32,680 virtual encuentre ese fichero 790 00:32:32,680 --> 00:32:34,680 sí o sí, sin problemas 791 00:32:34,680 --> 00:32:36,579 vamos a ponerlo en la carpeta 792 00:32:36,579 --> 00:32:38,880 que esté en el path, recordad que el path 793 00:32:38,880 --> 00:32:40,500 para la máquina virtual 794 00:32:40,500 --> 00:32:42,400 son todas las rutas 795 00:32:42,400 --> 00:32:44,180 de las cuales cuelgan 796 00:32:44,180 --> 00:32:46,500 paquetes o clases que necesitan 797 00:32:46,500 --> 00:32:48,640 bueno, pues el raíz 798 00:32:48,640 --> 00:32:49,500 está en el path 799 00:32:49,500 --> 00:32:52,559 y no solo el raíz 800 00:32:52,559 --> 00:32:54,200 sino también estos paquetes 801 00:32:54,200 --> 00:32:55,420 también están en el path, etc. 802 00:32:56,579 --> 00:32:58,539 entonces vamos a poner en el raíz 803 00:32:58,539 --> 00:33:01,099 directamente un ficherito que es el de propiedades 804 00:33:01,099 --> 00:33:04,990 y no pasa nada porque 805 00:33:04,990 --> 00:33:06,750 está en el raíz, en el raíz de las aplicaciones 806 00:33:06,750 --> 00:33:08,309 van muchos ficheros de configuración 807 00:33:08,309 --> 00:33:09,289 si no tienen un 808 00:33:09,289 --> 00:33:11,950 ni maven, ni gradle, ni nada de eso 809 00:33:11,950 --> 00:33:14,210 Venga, vamos a ponerle aquí un fichero 810 00:33:14,210 --> 00:33:17,109 Venga 811 00:33:17,109 --> 00:33:19,049 Pues nada 812 00:33:19,049 --> 00:33:21,910 Normalmente este fichero 813 00:33:21,910 --> 00:33:25,670 Tiene como extensión properties 814 00:33:25,670 --> 00:33:29,059 ¿Vale? 815 00:33:29,660 --> 00:33:30,539 0 properties 816 00:33:30,539 --> 00:33:33,140 ¿Es necesario 817 00:33:33,140 --> 00:33:36,519 Que se llame con extensión .properties? 818 00:33:36,980 --> 00:33:37,500 Pues no 819 00:33:37,500 --> 00:33:39,680 Porque luego la clase properties 820 00:33:39,680 --> 00:33:41,220 Ya cuando lo abramos 821 00:33:41,220 --> 00:33:42,700 Ya le decimos como se llama y todo 822 00:33:42,700 --> 00:33:56,240 Pero de nuevo, si todos nos ponemos de acuerdo en que los ficheros de propiedades tengan extensión properties, cuando tú vas a abrir una aplicación de alguien y quieres ver su configuración inicial, buscas un fichero que se llame properties. 823 00:33:57,140 --> 00:34:04,619 Si nos llega la gana llamarlo hola Pepito, pues el que abre la aplicación no se le pasaría por la cabeza que hay en hola Pepito. 824 00:34:04,920 --> 00:34:06,559 Si le llamamos properties sí que se le pasa. 825 00:34:07,559 --> 00:34:22,679 Pues ahora, los ficheros de propiedades, para que la clase properties los maneje, tienen un formato que es propiedad, igual valor, propiedad, igual valor, propiedad, igual valor, cada una de una línea diferente. 826 00:34:23,179 --> 00:34:27,960 Bueno, pues aquí qué única propiedad nos interesa, el nombre del fichero, ya está. 827 00:34:27,960 --> 00:34:30,780 Pues venga, esa propiedad la vamos a llamar 828 00:34:30,780 --> 00:34:31,880 Fichero, por ejemplo 829 00:34:31,880 --> 00:34:34,840 Y aquí 830 00:34:34,840 --> 00:34:38,460 Y aquí pongo yo el valor que yo quiera 831 00:34:38,460 --> 00:34:40,300 A la alumnos 832 00:34:40,300 --> 00:34:41,659 Ya está 833 00:34:41,659 --> 00:34:44,460 Que dentro de tres días 834 00:34:44,460 --> 00:34:46,320 Ha cambiado mi fichero de alumnos 835 00:34:46,320 --> 00:34:47,500 Lo cambio aquí 836 00:34:47,500 --> 00:34:48,880 En el properties 837 00:34:48,880 --> 00:34:52,260 Y no tengo que tener a un tío cada vez que arranca la aplicación 838 00:34:52,260 --> 00:34:52,840 Metiéndolo 839 00:34:52,840 --> 00:34:56,260 Bueno, pues entonces 840 00:34:56,260 --> 00:34:58,460 Ahora lo único que ocurre es que cuando la aplicación 841 00:34:58,460 --> 00:34:58,980 Arranca 842 00:34:58,980 --> 00:35:01,659 En el punto en el que arranca 843 00:35:01,659 --> 00:35:04,500 Que en este caso mío es aquí directamente 844 00:35:04,500 --> 00:35:06,159 En lugar del 845 00:35:06,159 --> 00:35:08,000 System.out.println que es horrible 846 00:35:08,000 --> 00:35:10,440 Y el scan.nestline y todo esto 847 00:35:10,440 --> 00:35:11,099 Que es horrible 848 00:35:11,099 --> 00:35:13,780 Me voy a abrir 849 00:35:13,780 --> 00:35:16,460 Una clase 850 00:35:16,460 --> 00:35:17,400 Properties 851 00:35:17,400 --> 00:35:28,250 ¿Vale? Que esto está en Java 852 00:35:28,250 --> 00:35:30,309 Útil, a ver, voy a ver si me acuerdo 853 00:35:30,309 --> 00:35:31,329 De memoria y si no 854 00:35:31,329 --> 00:35:33,510 Lo chuleteamos 855 00:35:33,510 --> 00:35:37,639 ¿Vale? Y esta clase 856 00:35:37,639 --> 00:35:39,940 Es la que te permite trabajar 857 00:35:39,940 --> 00:35:41,360 Con ficheros de properties 858 00:35:41,360 --> 00:35:44,460 Entonces lo primero que hay que hacer 859 00:35:44,460 --> 00:35:47,630 Es cargarlo 860 00:35:47,630 --> 00:35:50,010 Para lo cual 861 00:35:50,010 --> 00:35:50,869 Tendrá un load 862 00:35:50,869 --> 00:35:53,630 Y aquí le tenemos que pasar 863 00:35:53,630 --> 00:35:56,570 El file input string asociado al fichero 864 00:35:56,570 --> 00:35:58,030 Pues no pasa nada 865 00:35:58,030 --> 00:36:00,130 Le paso yo el file input 866 00:36:00,130 --> 00:36:04,030 String 867 00:36:04,610 --> 00:36:06,630 Asociado a mi fichero 868 00:36:06,630 --> 00:36:07,710 De propiedades 869 00:36:07,710 --> 00:36:09,829 Que se llama en mi caso 870 00:36:09,829 --> 00:36:10,469 Lo he llamado 871 00:36:10,469 --> 00:36:13,309 Conv.properties 872 00:36:13,309 --> 00:36:14,050 Vale 873 00:36:14,050 --> 00:36:16,789 Entonces este nombre 874 00:36:16,789 --> 00:36:18,469 Si que no va a cambiar nunca 875 00:36:18,469 --> 00:36:19,989 Uno hace la aplicación y este nombre 876 00:36:19,989 --> 00:36:21,469 Permanece siempre así 877 00:36:21,469 --> 00:36:24,630 Por tanto no tenemos que reescribir este código 878 00:36:24,630 --> 00:36:27,969 No se como lo he llamado 879 00:36:27,969 --> 00:36:29,550 Lo he llamado fichero.properties 880 00:36:29,550 --> 00:36:32,610 Vale 881 00:36:32,610 --> 00:36:33,789 Pues entonces 882 00:36:33,789 --> 00:36:36,989 Aquí file input string 883 00:36:36,989 --> 00:36:45,210 A ver 884 00:36:45,210 --> 00:36:46,610 Decíais que 885 00:36:46,610 --> 00:36:49,289 Si no me lo ofrece aquí porque tengo 886 00:36:49,289 --> 00:36:50,789 Alguna otra cosa rara o lo que sea 887 00:36:50,789 --> 00:36:52,690 Que hay un atajo para que lo importe 888 00:36:52,690 --> 00:36:53,650 Lo decías tú antes 889 00:36:53,650 --> 00:36:55,309 ¿Cuál? 890 00:36:58,070 --> 00:36:58,590 Oh 891 00:36:58,590 --> 00:37:03,179 Vale, los atajos me dan 892 00:37:03,179 --> 00:37:04,719 Un miedo siempre, pero bueno 893 00:37:04,719 --> 00:37:06,519 Algunos están bien 894 00:37:06,519 --> 00:37:09,500 Vale 895 00:37:09,500 --> 00:37:11,940 Vale, pues entonces ahora 896 00:37:11,940 --> 00:37:13,679 una vez que lo tenemos cargado 897 00:37:13,679 --> 00:37:15,920 ahora ya podemos sacar la propiedad que nos dé la gana 898 00:37:15,920 --> 00:37:18,039 con getProperty y la clave 899 00:37:18,039 --> 00:37:20,159 la clave como se llamaba 900 00:37:20,159 --> 00:37:21,780 la clave la hemos llamado fichero 901 00:37:21,780 --> 00:37:23,920 getProperty 902 00:37:23,920 --> 00:37:25,559 y le damos la clave 903 00:37:25,559 --> 00:37:27,780 y ya está 904 00:37:27,780 --> 00:37:28,980 y esta propiedad 905 00:37:28,980 --> 00:37:31,659 ya es el string valor 906 00:37:31,659 --> 00:37:33,619 entonces la podemos ya poner aquí 907 00:37:33,619 --> 00:37:36,260 alumno de implementación 908 00:37:36,260 --> 00:37:37,639 new file 909 00:37:37,639 --> 00:37:41,780 y le pasamos esto 910 00:37:41,780 --> 00:38:00,860 vale 911 00:38:00,860 --> 00:38:03,300 este te puede lanzar lógicamente 912 00:38:03,300 --> 00:38:13,429 una excepción y aquí 913 00:38:13,429 --> 00:38:17,059 aquí lo único es que 914 00:38:17,059 --> 00:38:17,880 uno ya decide 915 00:38:17,880 --> 00:38:21,039 pues que hace, si no puedes cargar 916 00:38:21,039 --> 00:38:23,119 el fichero, no vas a poder, la propiedad 917 00:38:23,119 --> 00:38:24,440 no va a ser correcta, entonces aquí 918 00:38:24,440 --> 00:38:25,880 no hace falta que lo pongamos 919 00:38:25,880 --> 00:38:27,679 o bien 920 00:38:27,679 --> 00:38:30,079 le dices al usuario 921 00:38:30,079 --> 00:38:32,860 me falta parámetro de configuración 922 00:38:32,860 --> 00:38:35,159 introdúcelo o cerramos la aplicación 923 00:38:35,159 --> 00:38:37,000 por falta de fichero 924 00:38:37,000 --> 00:38:39,280 de configuración, lo que uno decida 925 00:38:39,280 --> 00:38:44,820 podemos aquí decirle 926 00:38:44,820 --> 00:38:45,539 directamente 927 00:38:45,539 --> 00:38:48,519 le podemos, mala, para que 928 00:38:48,519 --> 00:38:52,619 me faltan datos de inicio 929 00:38:52,619 --> 00:38:56,079 y le hacemos un 930 00:38:56,079 --> 00:38:58,719 system.exit 931 00:38:58,719 --> 00:39:00,820 y a tomar por saco 932 00:39:00,820 --> 00:39:18,010 vale, pues esto sería mucho mejor 933 00:39:18,010 --> 00:39:19,949 que cambio el 934 00:39:19,949 --> 00:39:21,769 fichero de alumnos en algún momento, lo cambio 935 00:39:21,769 --> 00:39:23,289 en el fichero de configuración 936 00:39:23,289 --> 00:39:24,449 Y ya está 937 00:39:24,449 --> 00:39:25,150 ¿Vale? 938 00:39:28,400 --> 00:39:31,960 Eso sí, la aplicación la tendría que recargar 939 00:39:31,960 --> 00:39:32,940 ¿Vale? 940 00:39:33,500 --> 00:39:35,000 La aplicación la tendría que recargar 941 00:39:35,000 --> 00:39:37,699 Pero bueno, eso lo hago 942 00:39:37,699 --> 00:39:39,659 En el momento en el que yo cambio esto 943 00:39:39,659 --> 00:39:40,840 Porque cargo la aplicación 944 00:39:40,840 --> 00:39:43,500 Porque no se recarga automáticamente 945 00:39:43,500 --> 00:39:45,139 El properties 946 00:39:45,139 --> 00:39:46,900 ¿Vale? 947 00:39:49,800 --> 00:39:50,880 Y ya está 948 00:39:50,880 --> 00:39:55,900 Ya está, ya está 949 00:39:55,900 --> 00:39:59,019 Vamos a ver que no hayamos escrito algo mal 950 00:39:59,019 --> 00:39:59,820 En el properties 951 00:39:59,820 --> 00:40:02,519 No hemos debido escribir algo mal 952 00:40:02,519 --> 00:40:03,019 Porque 953 00:40:03,019 --> 00:40:05,920 Porque ha entrado 954 00:40:05,920 --> 00:40:08,340 Entonces sí 955 00:40:08,340 --> 00:40:10,139 Ha leído bien del properties 956 00:40:10,139 --> 00:40:12,820 Y ya está 957 00:40:12,820 --> 00:40:14,239 ¿Vale? 958 00:40:17,679 --> 00:40:19,039 Venga, pues ahora ya sí que