1 00:00:00,000 --> 00:00:03,140 Habéis hecho algo así 2 00:00:03,140 --> 00:00:04,599 Entonces aquí habrá que 3 00:00:04,599 --> 00:00:13,250 Habrá que 4 00:00:13,250 --> 00:00:15,269 Localizar la empresa 5 00:00:15,269 --> 00:00:18,309 Y como la empresa está en un set 6 00:00:18,309 --> 00:00:20,809 Para localizarla hay que iterar por ella 7 00:00:20,809 --> 00:00:22,969 Si tuviéramos un map 8 00:00:22,969 --> 00:00:24,989 Es más fácil porque tenemos el método get por clave 9 00:00:24,989 --> 00:00:27,250 Y pa, de golpe nos sale la empresa por la clave 10 00:00:27,250 --> 00:00:28,530 Como no está en un map 11 00:00:28,530 --> 00:00:30,829 Sino que está en un set, pues para localizarla hay que iterar 12 00:00:30,829 --> 00:00:32,289 Vale, pues una vez que hemos iterado 13 00:00:32,289 --> 00:00:34,530 Ya le pondremos la sede 14 00:00:34,530 --> 00:00:35,750 que me han dado en su 15 00:00:35,750 --> 00:00:37,509 map de sedes 16 00:00:37,509 --> 00:00:39,670 en su map de sedes 17 00:00:39,670 --> 00:00:42,270 pero para localizarla hay que iterar 18 00:00:42,270 --> 00:00:43,090 entonces 19 00:00:43,090 --> 00:00:46,409 pues para iterar, pues bueno 20 00:00:46,409 --> 00:00:50,329 le he puesto un iterador 21 00:00:50,329 --> 00:00:51,789 para que nos lo veamos del iterador 22 00:00:51,789 --> 00:00:53,329 y ahora ya iteramos 23 00:00:53,329 --> 00:00:56,429 para cada empresa, si es la que 24 00:00:56,429 --> 00:00:57,210 estamos buscando 25 00:00:57,210 --> 00:00:59,070 si es la que estamos buscando 26 00:00:59,070 --> 00:01:01,869 cojo su 27 00:01:01,869 --> 00:01:04,329 primero voy a mirar a ver si no está 28 00:01:04,329 --> 00:01:06,170 esa sede ya que quiero meter 29 00:01:06,170 --> 00:01:08,989 si no está, la meto 30 00:01:08,989 --> 00:01:10,849 y devuelvo true 31 00:01:10,849 --> 00:01:12,269 vale, he podido meter la sede 32 00:01:12,269 --> 00:01:14,170 que no está 33 00:01:14,170 --> 00:01:15,810 perdón, que sí que estaba 34 00:01:15,810 --> 00:01:18,129 que sí que contenía ya esa sede 35 00:01:18,129 --> 00:01:20,250 pues devuelvo false, no hago nada 36 00:01:20,250 --> 00:01:22,109 ya está, algo así 37 00:01:22,109 --> 00:01:22,930 ya está, ¿no? 38 00:01:24,650 --> 00:01:25,769 entonces aquí, repito 39 00:01:25,769 --> 00:01:27,950 para localizar la empresa en un set 40 00:01:27,950 --> 00:01:28,969 tenemos que recorrerlo 41 00:01:28,969 --> 00:01:31,629 bueno, pues he recorrido con un iterador 42 00:01:31,629 --> 00:01:34,010 ya la hemos localizado a través de este if, ya está 43 00:01:34,010 --> 00:01:35,870 Ahora, ¿qué queremos hacer con esa empresa? 44 00:01:36,010 --> 00:01:38,349 Con esa empresa queremos coger sus sedes 45 00:01:38,349 --> 00:01:38,989 Que es un map 46 00:01:38,989 --> 00:01:40,969 Para ver si ya está 47 00:01:40,969 --> 00:01:43,530 La que me han pedido que meta, que es esta 48 00:01:43,530 --> 00:01:44,629 Para ver si ya está 49 00:01:44,629 --> 00:01:50,000 Si no está, le pongo la nueva sede 50 00:01:50,000 --> 00:01:51,560 Y ya está, y el método termina 51 00:01:51,560 --> 00:01:54,040 Que sí que estaba 52 00:01:54,040 --> 00:01:55,799 Pues devuelvo false 53 00:01:55,799 --> 00:01:57,500 Y ya el que haga este método 54 00:01:57,500 --> 00:01:59,560 Diga, oye, que ya existía la sede, no existía 55 00:01:59,560 --> 00:02:01,120 Y 56 00:02:01,120 --> 00:02:03,659 Y el error este 57 00:02:03,659 --> 00:02:05,439 Yo creo que tengo una llave de más o de menos 58 00:02:05,439 --> 00:02:17,900 Esta es la del while 59 00:02:17,900 --> 00:02:21,129 Esta es esta 60 00:02:21,129 --> 00:02:22,650 La del método 61 00:02:22,650 --> 00:02:24,210 ¿Eh? 62 00:02:24,909 --> 00:02:25,870 ¿Qué me falta? 63 00:02:27,129 --> 00:02:28,610 A ver, pero no sé dónde 64 00:02:28,610 --> 00:02:29,810 Porque, a ver, esta es la del while 65 00:02:29,810 --> 00:02:32,629 Ah, no, esta me sobra entonces 66 00:02:32,629 --> 00:02:33,729 Espera, vamos a ver 67 00:02:33,729 --> 00:02:36,469 Sí, porque esta es la del if 68 00:02:36,469 --> 00:02:38,650 Ah, vale, vale, es que esta es 69 00:02:38,650 --> 00:02:40,069 Me estoy liando 70 00:02:40,069 --> 00:02:41,990 A ver, voy por partes 71 00:02:41,990 --> 00:02:43,530 Esta está clara, que es esta 72 00:02:43,530 --> 00:02:46,610 Esta es la del if, vale, entonces sí, me falta 73 00:02:46,610 --> 00:02:47,789 Porque esta es la del método 74 00:02:47,789 --> 00:02:49,909 Vale, me falta la del while 75 00:02:49,909 --> 00:02:57,990 Sí, pero 76 00:02:57,990 --> 00:02:58,949 Vale 77 00:02:58,949 --> 00:03:06,490 Vale 78 00:03:06,490 --> 00:03:12,409 Y ahora ya me falta 79 00:03:12,409 --> 00:03:14,550 Este error de compilación, lógicamente me da 80 00:03:14,550 --> 00:03:16,710 Porque yo aquí estoy saliendo 81 00:03:16,710 --> 00:03:17,969 Por true o saliendo por false 82 00:03:17,969 --> 00:03:20,169 Asumiendo que he encontrado la empresa 83 00:03:20,169 --> 00:03:21,229 Asumiendo que la encuentro 84 00:03:21,229 --> 00:03:24,250 Porque si yo no encuentro la empresa, este while termina 85 00:03:24,250 --> 00:03:26,569 y yo no he entrado nunca ni aquí ni aquí 86 00:03:26,569 --> 00:03:28,810 entonces puede que la empresa no exista 87 00:03:28,810 --> 00:03:30,210 y entonces yo me encuentro en este punto 88 00:03:30,210 --> 00:03:32,550 y en este punto también tengo que hacer 89 00:03:32,550 --> 00:03:33,090 algún return 90 00:03:33,090 --> 00:03:36,250 bueno pues en este caso 91 00:03:36,250 --> 00:03:38,310 yo llego aquí si la empresa no está 92 00:03:38,310 --> 00:03:40,590 entonces si la empresa no está tampoco he podido dar 93 00:03:40,590 --> 00:03:42,650 de alta nada, pues aquí entonces tiene sentido 94 00:03:42,650 --> 00:03:43,629 que yo diga false 95 00:03:43,629 --> 00:03:46,389 es decir, el método 96 00:03:46,389 --> 00:03:48,389 solo va a devolver true 97 00:03:48,389 --> 00:03:50,789 solo si se ha podido dar de alta 98 00:03:50,789 --> 00:03:52,629 correctamente una sede en la empresa 99 00:03:52,629 --> 00:03:54,949 es decir, si la funcionalidad se pudo completar 100 00:03:54,949 --> 00:03:56,930 la sede se dio de alta en la empresa 101 00:03:56,930 --> 00:03:59,349 si no se pudo completar la funcionalidad 102 00:03:59,349 --> 00:04:01,349 bien porque la sede ya existía 103 00:04:01,349 --> 00:04:03,650 o porque la empresa no está 104 00:04:03,650 --> 00:04:04,569 devuelve false 105 00:04:04,569 --> 00:04:07,789 y no puedo distinguir más 106 00:04:07,789 --> 00:04:10,069 el que usa este método no puede distinguir 107 00:04:10,069 --> 00:04:11,550 el false de donde viene, no puede 108 00:04:11,550 --> 00:04:12,509 no puede 109 00:04:12,509 --> 00:04:15,250 porque solamente hay un posible valor de retorno 110 00:04:15,250 --> 00:04:16,949 si yo quisiera 111 00:04:16,949 --> 00:04:19,910 que el que llama al método pueda distinguir 112 00:04:19,910 --> 00:04:21,370 si el error ha sido 113 00:04:21,370 --> 00:04:23,610 porque no existe la empresa 114 00:04:23,610 --> 00:04:25,629 o el error ha sido porque existiendo la empresa 115 00:04:25,629 --> 00:04:27,769 ya tenía la sede. Si quisiera 116 00:04:27,769 --> 00:04:29,629 esa distinción, ¿qué tendría 117 00:04:29,629 --> 00:04:31,449 que hacer? ¿Qué herramienta podría utilizar? 118 00:04:34,689 --> 00:04:35,850 Tendría que generarme 119 00:04:35,850 --> 00:04:36,730 excepciones. 120 00:04:37,769 --> 00:04:39,389 Empresa no encontrada exception. 121 00:04:40,470 --> 00:04:42,089 Sede ya existente exception. 122 00:04:43,310 --> 00:04:43,889 Y aquí 123 00:04:43,889 --> 00:04:45,329 en lugar de retun, hacer un throw. 124 00:04:45,870 --> 00:04:47,730 Throw, aquí en lugar de 125 00:04:47,730 --> 00:04:49,110 este retun falso, es decir, throw 126 00:04:49,110 --> 00:04:51,009 sede ya existente exception. 127 00:04:51,509 --> 00:04:53,490 Y aquí hacer throw 128 00:04:53,490 --> 00:04:55,310 empresa no existente exception 129 00:04:55,310 --> 00:04:57,610 esa sería la otra utilidad de programación 130 00:04:57,610 --> 00:04:59,509 que yo podría usar, si quisiera distinguir eso 131 00:04:59,509 --> 00:05:01,569 pero bueno, en este caso 132 00:05:01,569 --> 00:05:03,430 pues el que me llame al método, cuando 133 00:05:03,430 --> 00:05:05,509 le devuelva, se dirá, no se pudo completar 134 00:05:05,509 --> 00:05:07,509 la funcionalidad, y ya está, no le damos más detalles 135 00:05:07,509 --> 00:05:08,230 de por qué no se pudo 136 00:05:08,230 --> 00:05:11,189 bueno, pues venga 137 00:05:11,189 --> 00:05:12,089 5 138 00:05:12,089 --> 00:05:15,850 asignar una empresa a un alumno 139 00:05:15,850 --> 00:05:17,509 dado código de 140 00:05:17,509 --> 00:05:19,689 empresa, código de NIA y patatín 141 00:05:19,689 --> 00:05:23,300 vale, y aquí efectivamente 142 00:05:23,300 --> 00:05:25,199 me dice, cuidado 143 00:05:25,199 --> 00:05:27,500 si pasa algo de esto 144 00:05:27,500 --> 00:05:28,680 avisa con una excepción 145 00:05:28,680 --> 00:05:36,750 pues venga, a ver 146 00:05:36,750 --> 00:05:39,569 este método, vamos a poner la cabecera 147 00:05:39,569 --> 00:05:41,449 y se queda ahí, vamos a 148 00:05:41,449 --> 00:05:49,019 se avisará, entonces con avisarse 149 00:05:49,019 --> 00:05:50,000 ese es el retún falso 150 00:05:50,000 --> 00:05:53,019 claro, claro, luego ya el que llame 151 00:05:53,019 --> 00:05:55,240 al método, ese falso, que lo use en su vista 152 00:05:55,240 --> 00:05:57,199 poniendo un mensajito 153 00:05:57,199 --> 00:05:57,720 lo que quiera 154 00:05:57,720 --> 00:06:04,500 Vale, en 4, 5 es la que estamos 155 00:06:04,500 --> 00:06:06,220 Asignar empresa, alumno, dado 156 00:06:06,220 --> 00:06:08,060 Vamos a poner la cabecera y 157 00:06:08,060 --> 00:06:20,860 Empresa, alumno 158 00:06:20,860 --> 00:06:23,000 Entonces, ¿qué datos van a hacer falta 159 00:06:23,000 --> 00:06:24,620 Para asignar una empresa a un alumno? 160 00:06:25,139 --> 00:06:26,860 Pues código de empresa, código de alumno 161 00:06:26,860 --> 00:06:28,399 Y la sede en la que va a trabajar, ¿verdad? 162 00:06:30,279 --> 00:06:31,139 Código de empresa 163 00:06:31,139 --> 00:06:32,100 Sede y alumno 164 00:06:32,100 --> 00:06:34,240 Las únicas tres cosas que hacen falta 165 00:06:34,240 --> 00:06:37,519 Pues 166 00:06:37,519 --> 00:06:43,540 Code 167 00:06:43,540 --> 00:06:44,800 Empresa 168 00:06:44,800 --> 00:06:51,089 Code, sede 169 00:06:51,089 --> 00:06:53,610 y nia del alumno 170 00:06:53,610 --> 00:07:03,180 vale 171 00:07:03,180 --> 00:07:04,220 y 172 00:07:04,220 --> 00:07:06,480 int 173 00:07:06,480 --> 00:07:10,319 y este método 174 00:07:10,319 --> 00:07:15,620 va a tener que 175 00:07:15,620 --> 00:07:18,850 lanzar 176 00:07:18,850 --> 00:07:23,240 lanzar 177 00:07:23,240 --> 00:07:27,920 empresa sede 178 00:07:27,920 --> 00:07:28,480 exception 179 00:07:28,480 --> 00:07:31,939 si no existe empresa o sede dentro 180 00:07:31,939 --> 00:07:32,519 de la empresa 181 00:07:32,519 --> 00:07:40,319 y también puede ser que lance 182 00:07:40,319 --> 00:07:42,079 esto otro 183 00:07:42,079 --> 00:07:48,139 alumno exception 184 00:07:48,139 --> 00:07:55,300 vale 185 00:07:55,300 --> 00:07:58,399 bueno vamos a completar este por eso de la excepción 186 00:07:58,399 --> 00:08:00,040 y luego vamos a hacer 187 00:08:00,040 --> 00:08:01,740 algún otro pero no todos 188 00:08:01,740 --> 00:08:03,920 para luego ya hacer la vista 189 00:08:03,920 --> 00:08:05,939 hacer ya una vista para que la aplicación funcione 190 00:08:05,939 --> 00:08:07,720 entonces aquí 191 00:08:07,720 --> 00:08:10,040 lo primero que tenemos que hacer son estas dos 192 00:08:10,040 --> 00:08:12,139 excepciones, estas dos vamos a tener que crearlas 193 00:08:12,139 --> 00:08:14,180 nosotros porque obviamente no son excepciones que existen 194 00:08:14,180 --> 00:08:15,279 en la máquina virtual de Java 195 00:08:15,279 --> 00:08:18,199 hay que crearlas, pues para eso 196 00:08:18,199 --> 00:08:19,459 nos hacemos un paquete 197 00:08:19,459 --> 00:08:27,029 exception 198 00:08:27,029 --> 00:08:31,680 venga, pues este 199 00:08:31,680 --> 00:08:33,580 paquete exception que tenga 200 00:08:33,580 --> 00:08:37,929 una primera clase 201 00:08:37,929 --> 00:08:38,990 voy a ver que 202 00:08:38,990 --> 00:08:41,350 alumno exception, empresa sede exception 203 00:08:41,350 --> 00:08:45,820 empresa sede 204 00:08:45,820 --> 00:08:47,120 exception 205 00:08:47,120 --> 00:08:50,710 ala 206 00:08:50,710 --> 00:08:55,909 esta que herede 207 00:08:55,909 --> 00:08:57,330 de exception 208 00:08:57,330 --> 00:09:02,980 y le hacemos un constructor con el 209 00:09:02,980 --> 00:09:04,940 mensajito que nos dé la gana y ya está 210 00:09:04,940 --> 00:09:20,539 pues era 211 00:09:20,539 --> 00:09:23,100 no existe la sede, no existe 212 00:09:23,100 --> 00:09:25,139 la empresa o la sede, para cualquiera de esas 213 00:09:25,139 --> 00:09:26,980 dos cosas, se daba ese 214 00:09:26,980 --> 00:09:29,259 o no existía la empresa, o bien no existía 215 00:09:29,259 --> 00:09:31,039 la sede dentro de la empresa, para cualquiera de las dos 216 00:09:31,039 --> 00:09:33,059 salía esto, ala, esta 217 00:09:33,059 --> 00:09:35,259 ya está, y ahora 218 00:09:35,259 --> 00:09:37,279 nos falta la otra, alumno 219 00:09:37,279 --> 00:09:55,309 excepción, vale 220 00:09:55,309 --> 00:09:56,389 pues un constructor 221 00:09:56,389 --> 00:10:06,039 vale, uy, que hago yo 222 00:10:06,039 --> 00:10:15,220 no existe 223 00:10:15,220 --> 00:10:16,500 el alumno era, no 224 00:10:16,500 --> 00:10:25,080 ala, pues estas excepciones son para avisar 225 00:10:25,080 --> 00:10:27,120 de estas dos cosas, no existe 226 00:10:27,120 --> 00:10:29,299 el alumno que quieres dar de alta en una empresa 227 00:10:29,299 --> 00:10:31,179 o no existe 228 00:10:31,179 --> 00:10:33,240 la empresa o la sede en la que quieres 229 00:10:33,240 --> 00:10:35,100 situar a ese alumno. Esas excepciones son 230 00:10:35,100 --> 00:10:37,100 para avisar de eso. Entonces, el método de 231 00:10:37,100 --> 00:10:39,200 avisar con excepciones es mucho más específico 232 00:10:39,200 --> 00:10:41,120 obviamente y más complejo que 233 00:10:41,120 --> 00:10:42,279 mediante un retunfalse. 234 00:10:42,740 --> 00:10:44,759 El que usa el método sabe que cuando 235 00:10:44,759 --> 00:10:46,580 recibe un false algo raro ha pasado. 236 00:10:47,419 --> 00:10:48,960 Pero este al menos tiene una información 237 00:10:48,960 --> 00:10:51,120 más completa. El problema 238 00:10:51,120 --> 00:10:52,440 ¿cuál es? Que tiene que capturar. 239 00:10:54,610 --> 00:10:56,470 Vale, pues nada. Entonces, ahora ya 240 00:10:56,470 --> 00:10:57,730 sí que podemos hacer el método. 241 00:10:57,730 --> 00:10:59,350 que el método nos dice 242 00:10:59,350 --> 00:11:00,570 asignar empresa a un alumno 243 00:11:00,570 --> 00:11:03,389 entonces el alumno donde tiene 244 00:11:03,389 --> 00:11:05,629 las empresas puestas 245 00:11:05,629 --> 00:11:07,909 pues las tiene aquí 246 00:11:07,909 --> 00:11:09,629 entonces 247 00:11:09,629 --> 00:11:10,570 habrá que ver 248 00:11:10,570 --> 00:11:12,710 primero hay que localizar el alumno 249 00:11:12,710 --> 00:11:14,809 aquí, hay que localizarlo 250 00:11:14,809 --> 00:11:16,990 porque si el alumno no existe 251 00:11:16,990 --> 00:11:18,789 se lanza la primera de las excepciones 252 00:11:18,789 --> 00:11:20,970 y una vez localizado 253 00:11:20,970 --> 00:11:23,029 ahora ya hay que meter 254 00:11:23,029 --> 00:11:25,669 hay que añadir 255 00:11:25,669 --> 00:11:27,009 en este array un código 256 00:11:27,009 --> 00:11:27,549 y una 257 00:11:27,549 --> 00:11:31,330 perdón, no estoy liando 258 00:11:31,330 --> 00:11:33,129 empresa 259 00:11:33,129 --> 00:11:34,509 tiene código y 260 00:11:34,509 --> 00:11:37,210 entonces hay que ponerle aquí en empresa su código 261 00:11:37,210 --> 00:11:39,090 y su sede, pero hay que ver previamente 262 00:11:39,090 --> 00:11:40,909 que esa empresa y que esa sede estén aquí 263 00:11:40,909 --> 00:11:43,389 porque si no están se lanza la excepción 264 00:11:43,389 --> 00:11:46,970 vale, pues entonces, ya está, primero 265 00:11:46,970 --> 00:11:48,669 vamos a comprobar a ver si el alumno existe 266 00:11:48,669 --> 00:11:50,850 porque si no existe lanzamos la excepción 267 00:11:50,850 --> 00:11:52,529 ¿el alumno dónde está? 268 00:11:52,730 --> 00:11:54,649 el alumno está en un set 269 00:11:54,649 --> 00:11:56,169 luego hay que recorrerlo 270 00:11:56,169 --> 00:11:57,769 Hay que recorrerlo. 271 00:11:58,370 --> 00:12:03,710 Entonces, lo primero que podemos hacer es para... 272 00:12:03,710 --> 00:12:06,009 Así como... 273 00:12:06,009 --> 00:12:10,570 Vale, pues venga, vamos a recorrerlo con un for each esta vez para variar. 274 00:12:10,710 --> 00:12:15,789 Pues para cada alumno A en alumnos. 275 00:12:18,200 --> 00:12:23,009 Vale, para cada alumno A en alumnos. 276 00:12:23,009 --> 00:12:35,769 Entonces, si a.getNia es igual a el Nia del alumno que me han pasado 277 00:12:35,769 --> 00:12:38,570 Ah, lo he llamado alumno 278 00:12:38,570 --> 00:12:41,649 Mejor si este parámetro lo llamo Nia, ¿no? 279 00:12:45,049 --> 00:12:46,950 Es igual a este Nia 280 00:12:46,950 --> 00:12:52,289 Vale, pues este sería el alumno al que tengo que fijarle 281 00:12:52,289 --> 00:12:54,870 A este alumno tendría que fijarle aquí 282 00:12:54,870 --> 00:12:56,669 En setEmpresa 283 00:12:56,669 --> 00:12:59,389 Tendría que fijarle un array 284 00:12:59,389 --> 00:13:01,190 Con el código de empresa 285 00:13:01,190 --> 00:13:02,929 Y con el código de la sede, algo así 286 00:13:02,929 --> 00:13:13,159 ¿Vale? Esta sería la idea 287 00:13:13,159 --> 00:13:15,179 ¿Vale? 288 00:13:16,360 --> 00:13:17,659 ¿Vale? Pero yo lo he hecho así 289 00:13:17,659 --> 00:13:18,879 Para tener claro que tendríamos que hacer 290 00:13:18,879 --> 00:13:20,539 Pero recordad que esta forma 291 00:13:20,539 --> 00:13:23,080 De darle valor a arrays 292 00:13:23,080 --> 00:13:24,159 Solo vale 293 00:13:24,159 --> 00:13:27,340 Solo le vale al compilador cuando estamos dando 294 00:13:27,340 --> 00:13:29,120 Un primer valor a un array declarado 295 00:13:29,120 --> 00:13:30,519 Entonces yo lo he puesto aquí 296 00:13:30,519 --> 00:13:32,960 Entonces esto no lo haríamos así, lógicamente 297 00:13:32,960 --> 00:13:33,980 Aquí tendríamos que hacer 298 00:13:33,980 --> 00:13:41,019 Lo hacemos así 299 00:13:41,019 --> 00:13:44,600 Pero sí, nos falta verificar si existe o no 300 00:13:44,600 --> 00:13:46,240 ¿Vale? 301 00:13:47,100 --> 00:13:47,659 Entonces 302 00:13:47,659 --> 00:13:50,580 Ahora esto sí que me deja hacerlo así 303 00:13:50,580 --> 00:13:53,080 Y ahora aquí ya podría ponerle 304 00:13:53,080 --> 00:13:54,620 Esto 305 00:13:54,620 --> 00:13:59,799 ¿Vale? Esto sería 306 00:13:59,799 --> 00:14:02,240 Sin lanzar ninguna excepción 307 00:14:02,240 --> 00:14:03,259 Sin verificar nada 308 00:14:03,259 --> 00:14:05,019 Este sería el método que no verifica nada 309 00:14:05,019 --> 00:14:07,139 Recorre la raíz de alumnos 310 00:14:07,139 --> 00:14:08,740 Cuando encuentra el alumno 311 00:14:08,740 --> 00:14:11,039 cuyo NIA es el que estoy buscando 312 00:14:11,039 --> 00:14:13,299 le pone como empresa 313 00:14:13,299 --> 00:14:15,039 y sede la que me acaban de dar 314 00:14:15,039 --> 00:14:17,480 ¿vale? este sería el método 315 00:14:17,480 --> 00:14:19,139 sin hacer ninguna verificación 316 00:14:19,139 --> 00:14:20,779 sin lanzar excepciones ni nada 317 00:14:20,779 --> 00:14:21,639 sin hacer ninguna 318 00:14:21,639 --> 00:14:25,539 ¿vale? pero a ver, no, vamos a hacer esas verificaciones 319 00:14:25,539 --> 00:14:26,820 es decir 320 00:14:26,820 --> 00:14:28,320 antes de fijar yo 321 00:14:28,320 --> 00:14:30,899 esto vamos a ver si realmente 322 00:14:30,899 --> 00:14:32,539 existe la empresa 323 00:14:32,539 --> 00:14:34,899 entonces vamos a hacernos aquí 324 00:14:34,899 --> 00:14:39,179 las empresas 325 00:14:39,179 --> 00:14:41,139 ¿dónde están? las empresas están aquí en un set 326 00:14:41,139 --> 00:14:43,580 vale, pues entonces yo aquí puedo hacer tranquilamente 327 00:14:43,580 --> 00:14:46,240 si 328 00:14:46,240 --> 00:14:50,409 mi array de empresas 329 00:14:50,409 --> 00:14:52,110 perdón, mi set de empresas 330 00:14:52,110 --> 00:14:54,330 no contiene, por eso le he puesto un 331 00:14:54,330 --> 00:14:55,649 no delante 332 00:14:55,649 --> 00:14:57,950 no contiene 333 00:14:57,950 --> 00:15:00,470 a una empresa con ese código 334 00:15:00,470 --> 00:15:01,129 de empresa 335 00:15:01,129 --> 00:15:04,129 no tengo un constructor solo por código 336 00:15:04,129 --> 00:15:06,669 una pena, voy a tener que ponerlo aquí 337 00:15:06,669 --> 00:15:10,200 igual a 338 00:15:10,200 --> 00:15:17,320 aquí sería mucho más bonito tener un constructor 339 00:15:17,320 --> 00:15:18,159 solo por código 340 00:15:18,159 --> 00:15:20,159 setCódigo 341 00:15:20,159 --> 00:15:22,679 con empresa 342 00:15:22,679 --> 00:15:26,940 y aquí le pongo e 343 00:15:26,940 --> 00:15:28,639 vale 344 00:15:28,639 --> 00:15:31,620 vale, pues si mis empresas 345 00:15:31,620 --> 00:15:33,080 no contienen 346 00:15:33,080 --> 00:15:35,320 una empresa igual a esta 347 00:15:35,320 --> 00:15:37,059 o lo que es lo mismo 348 00:15:37,059 --> 00:15:39,220 con ese código de empresa, porque la igualdad 349 00:15:39,220 --> 00:15:40,519 en empresa iba por código, ¿no? 350 00:15:41,200 --> 00:15:43,299 empresa tenía su 351 00:15:43,299 --> 00:15:44,919 Hasco de equals por código 352 00:15:44,919 --> 00:15:47,000 Hasco de equals por código 353 00:15:47,000 --> 00:15:48,700 Bueno, pues entonces 354 00:15:48,700 --> 00:15:51,279 Si no contiene una empresa con ese, ya está 355 00:15:51,279 --> 00:15:53,559 No hago nada más, lanzo una excepción y se acabó 356 00:15:53,559 --> 00:15:54,899 New 357 00:15:54,899 --> 00:15:56,940 Empresa exception 358 00:15:56,940 --> 00:15:59,320 Empresa sede exception 359 00:15:59,320 --> 00:16:08,860 Ah, la he avisado 360 00:16:08,860 --> 00:16:09,860 Vale 361 00:16:09,860 --> 00:16:21,039 Ah, que no le he puesto 362 00:16:21,039 --> 00:16:22,980 Public a las excepciones, no las he puesto 363 00:16:22,980 --> 00:16:24,519 Public al constructor, claro 364 00:16:24,519 --> 00:16:26,220 Entonces no puedo usar el constructor 365 00:16:26,220 --> 00:16:28,799 Vale, public 366 00:16:28,799 --> 00:16:34,570 ya está, vale 367 00:16:34,570 --> 00:16:37,070 throw, me dice, oye cuidado 368 00:16:37,070 --> 00:16:38,950 que como es step, tienes que avisar 369 00:16:38,950 --> 00:16:40,169 con el 0 y luego lo ponemos, vale 370 00:16:40,169 --> 00:16:42,509 primera situación de error 371 00:16:42,509 --> 00:16:44,730 identificada 372 00:16:44,730 --> 00:16:46,509 si la empresa no existe, empresa 373 00:16:46,509 --> 00:16:48,529 ahora, que más 374 00:16:48,529 --> 00:16:50,889 si la empresa existe 375 00:16:50,889 --> 00:16:52,470 pero la empresa 376 00:16:52,470 --> 00:16:54,929 no tiene una sede 377 00:16:54,929 --> 00:16:57,250 no tiene una sede 378 00:16:57,250 --> 00:16:58,809 con ese código 379 00:16:58,809 --> 00:17:00,450 también tengo que lanzar la excepción 380 00:17:00,450 --> 00:17:02,350 vale, pues venga 381 00:17:02,350 --> 00:17:04,369 vamos a localizar esa empresa 382 00:17:04,369 --> 00:17:06,109 vamos a localizarla 383 00:17:06,109 --> 00:17:08,410 y vamos a ver si tiene 384 00:17:08,410 --> 00:17:09,130 una sede así 385 00:17:09,130 --> 00:17:11,849 como las empresas están en un set 386 00:17:11,849 --> 00:17:14,529 no hay un get, como en los 387 00:17:14,529 --> 00:17:16,410 put, no lo hay, como en los map 388 00:17:16,410 --> 00:17:17,210 perdón, entonces 389 00:17:17,210 --> 00:17:20,069 no me queda más remedio que iterar 390 00:17:20,069 --> 00:17:22,509 para cada empresa 391 00:17:22,509 --> 00:17:24,289 en empresas, todo este rollo 392 00:17:24,289 --> 00:17:26,329 es repetir una y otra vez el manejo de colecciones 393 00:17:26,329 --> 00:17:27,250 que no liemos, etc 394 00:17:27,250 --> 00:17:30,430 para cada empresa es 395 00:17:30,430 --> 00:17:32,369 aquí me dices, uy, cuánta E, Dios mío 396 00:17:32,369 --> 00:17:33,730 me estoy estresando, pues venga 397 00:17:33,730 --> 00:17:34,970 así mejor 398 00:17:34,970 --> 00:17:37,390 para cada empresa 399 00:17:37,390 --> 00:17:39,150 si 400 00:17:39,150 --> 00:17:42,789 empresa.getCódigo 401 00:17:42,789 --> 00:17:44,509 resulta que 402 00:17:44,509 --> 00:17:45,950 es igual 403 00:17:45,950 --> 00:17:48,230 al código de empresa 404 00:17:48,230 --> 00:17:50,230 ya la tengo localizada, ¿vale? 405 00:17:50,470 --> 00:17:52,490 y además sé que voy a entrar aquí, seguro 406 00:17:52,490 --> 00:17:54,529 sí o sí, sé que voy a entrar, porque si no 407 00:17:54,529 --> 00:17:55,670 habría salido ya por aquí 408 00:17:55,670 --> 00:17:58,390 habría salido ya con el throw, entonces alguna vez 409 00:17:58,390 --> 00:18:00,029 voy a entrar aquí, vale, pues ahora que tengo que ver 410 00:18:00,029 --> 00:18:02,170 Tengo que ver si esta empresa 411 00:18:02,170 --> 00:18:04,210 Tiene en su map 412 00:18:04,210 --> 00:18:06,690 Alguna sede con este código 413 00:18:06,690 --> 00:18:09,930 Esto es mucho más fácil de ver 414 00:18:09,930 --> 00:18:10,890 Porque está en un map 415 00:18:10,890 --> 00:18:13,190 Entonces me puedo hacer un get 416 00:18:13,190 --> 00:18:15,690 Y me puedo hacer 417 00:18:15,690 --> 00:18:16,869 Sim 418 00:18:16,869 --> 00:18:19,710 Emp.get 419 00:18:19,710 --> 00:18:22,890 Sedes 420 00:18:22,890 --> 00:18:26,250 Y tiene un contains key 421 00:18:26,250 --> 00:18:29,430 Contains key 422 00:18:29,430 --> 00:18:32,750 el código de sede 423 00:18:32,750 --> 00:18:33,509 que me han pasado 424 00:18:33,509 --> 00:18:38,480 y le pongo el no delante 425 00:18:38,480 --> 00:18:41,079 si el map de sedes de esta empresa 426 00:18:41,079 --> 00:18:42,359 no contiene 427 00:18:42,359 --> 00:18:44,559 una sede con ese código 428 00:18:44,559 --> 00:18:46,200 pues entonces ahora ya 429 00:18:46,200 --> 00:18:48,599 lanza esta excepción también 430 00:18:48,599 --> 00:18:50,059 porque será para recorrer 431 00:18:50,059 --> 00:18:51,880 para recoger 432 00:18:51,880 --> 00:18:53,819 listo, ya está 433 00:18:53,819 --> 00:18:57,079 ya tengo verificadas las dos primeras 434 00:18:57,079 --> 00:18:58,980 de las tres posibles causas de error 435 00:18:58,980 --> 00:19:01,259 que 436 00:19:01,259 --> 00:19:06,119 no tenga yo una empresa 437 00:19:06,119 --> 00:19:07,500 contenida en mi set de empresas 438 00:19:07,500 --> 00:19:09,259 con ese código 439 00:19:09,259 --> 00:19:11,480 que dentro de mi set 440 00:19:11,480 --> 00:19:14,119 que dentro de esa empresa que sí que existe 441 00:19:14,119 --> 00:19:15,039 ya en este caso 442 00:19:15,039 --> 00:19:17,740 no tenga una sede con ese código 443 00:19:17,740 --> 00:19:19,819 vale, ahora que llego a este punto 444 00:19:19,819 --> 00:19:22,319 la empresa existe 445 00:19:22,319 --> 00:19:24,339 y además tiene una sede 446 00:19:24,339 --> 00:19:25,400 con ese código, vale 447 00:19:25,400 --> 00:19:28,259 ahora, el siguiente caso de error es que yo no haya 448 00:19:28,259 --> 00:19:30,200 encontrado nunca a este alumno 449 00:19:30,200 --> 00:19:32,440 bueno, pues podemos avisar a esto lo más sencillo 450 00:19:32,440 --> 00:19:33,720 que yo lo modifique ahora 451 00:19:33,720 --> 00:19:35,019 de esta manera 452 00:19:35,019 --> 00:19:39,960 inicialmente asumo que no existe alumno 453 00:19:39,960 --> 00:19:42,259 y si alguna vez 454 00:19:42,259 --> 00:19:44,119 entro aquí es porque encontré el alumno 455 00:19:44,119 --> 00:19:45,700 entonces pongo ya existe 456 00:19:45,700 --> 00:19:47,779 alumno 457 00:19:47,779 --> 00:19:50,200 igual a true 458 00:19:50,200 --> 00:19:51,980 vale 459 00:19:51,980 --> 00:19:53,980 entonces cuando mi for ha terminado 460 00:19:53,980 --> 00:19:56,019 mi for ha terminado puede haber ocurrido 461 00:19:56,019 --> 00:19:57,940 dos cosas, que nunca jamás haya encontrado 462 00:19:57,940 --> 00:19:59,579 al alumno, luego este if nunca entró 463 00:19:59,579 --> 00:20:01,740 o que si haya encontrado al alumno 464 00:20:01,740 --> 00:20:03,740 y le haya puesto la empresa, que es de lo que se trataba 465 00:20:03,740 --> 00:20:05,539 Encontré por la empresa 466 00:20:05,539 --> 00:20:08,140 Vale, entonces yo ahora ya aquí puedo hacer 467 00:20:08,140 --> 00:20:09,579 Oye, si no existe 468 00:20:09,579 --> 00:20:13,130 Si no existe alumno 469 00:20:13,130 --> 00:20:15,109 En ese caso 470 00:20:15,109 --> 00:20:17,329 Me haces el throw 471 00:20:17,329 --> 00:20:25,599 Y apaña 472 00:20:25,599 --> 00:20:29,779 Importo alumno exception 473 00:20:29,779 --> 00:20:33,220 Y ya tengo mi método completo 474 00:20:33,220 --> 00:20:36,240 Avisando de todas las opciones, recorriendo todas las colecciones 475 00:20:36,240 --> 00:20:37,779 Haciendo todo 476 00:20:37,779 --> 00:20:39,720 Claro, el compilador me dice 477 00:20:39,720 --> 00:20:42,599 Cuidado, este método puede lanzar excepciones 478 00:20:42,599 --> 00:20:44,680 tienes que avisar aquí con un throws 479 00:20:44,680 --> 00:20:46,240 no pasa nada 480 00:20:46,240 --> 00:20:48,720 avisamos con un throws 481 00:20:48,720 --> 00:20:50,019 ala, avisado 482 00:20:50,019 --> 00:20:53,559 este método puede lanzar estas dos excepciones 483 00:20:53,559 --> 00:20:57,519 recordad que si fueran del tipo 484 00:20:57,519 --> 00:20:59,140 runTimeException 485 00:20:59,140 --> 00:21:00,039 no haría falta 486 00:21:00,039 --> 00:21:03,900 pero como son excepciones y más, sí 487 00:21:03,900 --> 00:21:06,299 y aquí tengo un error yo 488 00:21:06,299 --> 00:21:06,700 ¿dónde? 489 00:21:10,809 --> 00:21:11,970 unhandledException 490 00:21:11,970 --> 00:21:15,049 ya, pero es que le he puesto aquí 491 00:21:15,049 --> 00:21:17,569 Ah, es que no me ha hecho el throws de las dos a la vez 492 00:21:17,569 --> 00:21:19,190 Pues venga, añádeme el throws 493 00:21:19,190 --> 00:21:20,890 Throws, ya está 494 00:21:20,890 --> 00:21:23,869 Vale, entonces me puede lanzar 495 00:21:23,869 --> 00:21:26,089 Dos diferentes, esta y esta 496 00:21:26,089 --> 00:21:27,250 Ese método de dos 497 00:21:27,250 --> 00:21:31,740 Bueno, pues ya tenemos unas cuantas 498 00:21:31,740 --> 00:21:34,160 Funcionalidades a hacer con los alumnos, con los profes 499 00:21:34,160 --> 00:21:35,779 Dado ni de profesor 500 00:21:35,779 --> 00:21:37,640 Esto, el mismo rollo de siempre 501 00:21:37,640 --> 00:21:39,819 Buscar, no sé cuántos 502 00:21:39,819 --> 00:21:49,789 Vale, entonces 503 00:21:49,789 --> 00:21:51,829 Cuando uno se pone a hacer la vista 504 00:21:51,829 --> 00:21:54,430 ahora claro, la vista es un rollo porque tendría que ver 505 00:21:54,430 --> 00:21:56,390 madre mía, ¿cómo organizo yo 506 00:21:56,390 --> 00:21:58,569 meter los datos para todo esto? 507 00:21:58,690 --> 00:22:00,730 pues lo ideal sería a lo mejor hacer varias paneles 508 00:22:00,730 --> 00:22:02,769 un panel alumnos, otro panel profesos 509 00:22:02,769 --> 00:22:03,769 otro panel empresas 510 00:22:03,769 --> 00:22:06,690 y a lo mejor en cada panel poner los componentes 511 00:22:06,690 --> 00:22:07,849 para cada cosa 512 00:22:07,849 --> 00:22:09,990 ¿vale? 513 00:22:10,769 --> 00:22:12,890 por ejemplo, vamos a 514 00:22:12,890 --> 00:22:14,910 hacer 515 00:22:14,910 --> 00:22:16,569 una vista rápida 516 00:22:16,569 --> 00:22:18,529 con tres paneles y vamos a llamar 517 00:22:18,529 --> 00:22:20,170 alguna de las funcionalidades estas 518 00:22:20,170 --> 00:22:25,609 claro, porque ya 519 00:22:25,609 --> 00:22:27,950 con la excepción ya vas a ver 520 00:22:27,950 --> 00:22:30,069 qué ha pasado, ya no le hace falta 521 00:22:30,069 --> 00:22:30,890 el valor de retorno 522 00:22:30,890 --> 00:22:33,950 entonces venga, vamos a 523 00:22:33,950 --> 00:22:34,849 hacer una vista 524 00:22:34,849 --> 00:22:39,019 el de altarse de empresa 525 00:22:39,019 --> 00:22:46,549 sí, este 526 00:22:46,549 --> 00:23:01,730 vale, entonces 527 00:23:01,730 --> 00:23:04,369 ya, sí, sí 528 00:23:04,369 --> 00:23:13,859 esto, sí 529 00:23:13,859 --> 00:23:15,619 lo que pasa es que he dicho 530 00:23:15,619 --> 00:23:17,059 un iterator, para que no se nos olvide 531 00:23:17,059 --> 00:23:19,660 de qué va el iterator, pero sí, porque no 532 00:23:19,660 --> 00:23:21,299 Vamos a borrar nada de la colección 533 00:23:21,299 --> 00:23:22,319 Entonces, sí, sí 534 00:23:22,319 --> 00:23:25,559 ¿Vale? Vale, vamos a hacernos 535 00:23:25,559 --> 00:23:27,640 Una vista ya para poder probar 536 00:23:27,640 --> 00:23:29,519 Algo, para poder probar algo 537 00:23:29,519 --> 00:23:31,519 Pues nos hacemos un paquete vista antes que nada 538 00:23:31,519 --> 00:23:37,579 Y ahora en nuestro paquete 539 00:23:37,579 --> 00:23:39,140 Vista ya nuestro frame 540 00:23:39,140 --> 00:23:45,839 Pues venga, un frame 541 00:23:45,839 --> 00:23:48,099 Un frame 542 00:23:48,099 --> 00:23:49,519 Up FCT 543 00:23:49,519 --> 00:24:25,960 Jolines 544 00:24:25,960 --> 00:24:27,440 Qué velocidad extrema 545 00:24:27,440 --> 00:24:43,740 vale, pues a ver 546 00:24:43,740 --> 00:24:57,849 vale, pues voy a ponerle 547 00:24:57,849 --> 00:24:59,910 para que no quede muy apiñado todo 548 00:24:59,910 --> 00:25:00,750 un 549 00:25:00,750 --> 00:25:03,349 dios 550 00:25:03,349 --> 00:25:09,720 espera un momento, ves, ahora ya le he quitado 551 00:25:09,720 --> 00:25:11,420 el pause y ya está grabando otra vez 552 00:25:11,420 --> 00:25:12,339 vale 553 00:25:12,339 --> 00:25:15,559 bueno, pues entonces aquí 554 00:25:15,559 --> 00:25:17,500 venga, rápidamente estamos lanzados 555 00:25:17,500 --> 00:25:19,799 antes que nada, el panel este le ponemos 556 00:25:19,799 --> 00:25:21,759 un gestor de ubicación absoluto 557 00:25:23,759 --> 00:25:25,619 ya está en absoluto, le voy a poner un 558 00:25:25,619 --> 00:25:27,559 Tabet pane al panelillo 559 00:25:27,559 --> 00:25:28,039 Aquí 560 00:25:28,039 --> 00:25:30,759 Joder, que tontería he hecho 561 00:25:30,759 --> 00:25:33,319 Esto aquí, ¿no? 562 00:25:34,440 --> 00:25:36,400 Vale, Tabet pane 563 00:25:36,400 --> 00:25:42,400 Joder 564 00:25:42,400 --> 00:25:46,680 Nada, estoy poniendo el Tabet pane 565 00:25:46,680 --> 00:25:48,160 Para llevar las 566 00:25:48,160 --> 00:25:49,519 Los 567 00:25:49,519 --> 00:25:50,960 Los paneles 568 00:25:50,960 --> 00:25:54,220 Entonces, a ver, ahora me llevo 569 00:25:54,220 --> 00:25:55,519 Un panel 570 00:25:55,519 --> 00:25:58,000 No, pero no me lo, es que 571 00:25:58,000 --> 00:26:02,319 A ver 572 00:26:02,319 --> 00:26:03,900 ¿Dónde estamos? Aquí 573 00:26:03,900 --> 00:26:11,519 A ver, jolín, ¿cómo lo puse el otro día 574 00:26:11,519 --> 00:26:13,319 Que no se me traspapeló? 575 00:26:14,900 --> 00:26:15,779 Este fuera 576 00:26:15,779 --> 00:26:17,579 Ese ahí no lo quiero 577 00:26:17,579 --> 00:26:18,299 Vale 578 00:26:18,299 --> 00:26:21,519 Entonces vamos a ver 579 00:26:21,519 --> 00:26:28,380 Vale 580 00:26:28,380 --> 00:26:29,700 No, aquí no 581 00:26:29,700 --> 00:26:33,859 No, este fuera 582 00:26:33,859 --> 00:26:37,160 Este 583 00:26:37,160 --> 00:26:39,380 Ahora 584 00:26:39,380 --> 00:26:41,920 Joder, pero 585 00:26:41,920 --> 00:26:44,859 ¿Por qué no me lo adapta directamente el tamaño? 586 00:26:45,039 --> 00:26:45,980 Bueno, venga, ya está 587 00:26:45,980 --> 00:26:47,960 Pues lo pongo yo a mano, se acabó 588 00:26:47,960 --> 00:26:50,460 Pues lo que hicimos el otro día 589 00:26:50,460 --> 00:26:53,200 Lo que es el panel con pestañitas 590 00:26:53,200 --> 00:26:54,099 Entonces, a ver 591 00:26:54,099 --> 00:26:55,900 Lo he quedado demasiado grande 592 00:26:55,900 --> 00:26:58,579 Primero un tabezpane 593 00:26:58,579 --> 00:27:00,200 Para que tenga, ala, aquí se queda 594 00:27:00,200 --> 00:27:02,099 Vale, y ahora 595 00:27:02,099 --> 00:27:04,160 Le voy poniendo un panel 596 00:27:04,160 --> 00:27:06,119 Ahí 597 00:27:06,119 --> 00:27:08,680 Venga, pues este, le pongo 598 00:27:08,680 --> 00:27:10,279 El nombrecito 599 00:27:10,279 --> 00:27:14,960 Panel alumnos 600 00:27:14,960 --> 00:27:19,630 Y lo que va a tener 601 00:27:19,630 --> 00:27:20,990 Arriba va a ser 602 00:27:20,990 --> 00:27:23,150 Text 603 00:27:23,150 --> 00:27:27,519 Alumnos 604 00:27:27,519 --> 00:27:33,440 Ahora ya está 605 00:27:33,440 --> 00:27:35,079 Ahora me llevo otro panel 606 00:27:35,079 --> 00:27:36,140 Ahí 607 00:27:36,140 --> 00:27:39,000 No, este no, ahí no lo quiero 608 00:27:39,000 --> 00:27:42,920 A ver, tablet panel, ahí, vale 609 00:27:42,920 --> 00:27:44,160 Y ahora me llevo un panel 610 00:27:44,160 --> 00:27:46,440 Ahí 611 00:27:46,440 --> 00:27:49,140 Se me va la línea roja 612 00:27:49,140 --> 00:27:54,480 Ahí, vale 613 00:27:54,480 --> 00:27:55,839 Lo hice el otro día 614 00:27:55,839 --> 00:27:58,440 No, no, no, no 615 00:27:58,440 --> 00:28:00,539 Son paneles con pestañitas 616 00:28:00,539 --> 00:28:01,619 Para cambiar de uno a otro 617 00:28:01,619 --> 00:28:03,279 Primero pones un tablet panel 618 00:28:03,279 --> 00:28:06,299 Y luego a ese tablet panel le vas añadiendo 619 00:28:06,299 --> 00:28:08,220 Todos los paneles que quieras 620 00:28:08,220 --> 00:28:10,059 Y a cada uno se le pone una pestañita 621 00:28:10,059 --> 00:28:11,400 Entonces 622 00:28:11,400 --> 00:28:13,000 Esto 623 00:28:13,000 --> 00:28:18,190 no lo sé 624 00:28:18,190 --> 00:28:22,789 no lo sé, si está subida o no 625 00:28:22,789 --> 00:28:23,630 no me acuerdo 626 00:28:23,630 --> 00:28:26,009 pero no 627 00:28:26,009 --> 00:28:28,150 no fue del martes, fue de antes 628 00:28:28,150 --> 00:28:30,730 entonces 629 00:28:30,730 --> 00:28:31,769 a ver, este panel 630 00:28:31,769 --> 00:28:33,130 le ponemos 631 00:28:33,130 --> 00:28:34,930 a ver 632 00:28:34,930 --> 00:28:36,789 design 633 00:28:36,789 --> 00:28:40,869 panel, venga 634 00:28:40,869 --> 00:28:44,650 este, propiedades 635 00:28:44,650 --> 00:28:50,329 panel profesores 636 00:28:50,329 --> 00:28:57,029 y el texto va a ser 637 00:28:57,029 --> 00:29:00,650 ah no, era profesores aquí, vale 638 00:29:00,650 --> 00:29:10,750 y ahora este 639 00:29:10,750 --> 00:29:20,319 el panel 1 640 00:29:20,319 --> 00:29:25,259 empresas 641 00:29:25,259 --> 00:29:35,970 las pestañas son paneles 642 00:29:35,970 --> 00:29:37,470 a ver, lo único que tienes que hacer es 643 00:29:37,470 --> 00:29:39,349 te coges un tablet pane 644 00:29:39,349 --> 00:29:41,490 y lo colocas 645 00:29:41,490 --> 00:29:42,910 todo lo grande que puedas 646 00:29:42,910 --> 00:29:45,769 y ahora arrastras paneles 647 00:29:45,769 --> 00:29:47,930 normalitos dentro de ese tablet pane 648 00:29:47,930 --> 00:29:50,190 y entonces se te meten dentro del tablet pane 649 00:29:50,190 --> 00:29:51,809 y aparece solo la pestañita 650 00:29:51,809 --> 00:29:54,390 ¿Vale? Aparece solo la pestaña 651 00:29:54,390 --> 00:29:56,609 Y luego tú ya cada panel lo seleccionas 652 00:29:56,609 --> 00:29:58,009 Y cambias el nombre de la pestaña 653 00:29:58,009 --> 00:29:59,269 En propiedades, lo que quieras 654 00:29:59,269 --> 00:30:02,349 Y ya la ventaja que tenemos es que ya tenemos 655 00:30:02,349 --> 00:30:04,089 Tres paneles y no tenemos que tener 656 00:30:04,089 --> 00:30:06,329 Todos los componentes apiñados en el mismo 657 00:30:06,329 --> 00:30:08,529 Porque ya tenemos tres distintos 658 00:30:08,529 --> 00:30:09,369 Que cambian 659 00:30:09,369 --> 00:30:11,869 En función de la pestaña que yo seleccione 660 00:30:11,869 --> 00:30:15,619 ¿Vale? 661 00:30:18,619 --> 00:30:19,140 Entonces 662 00:30:19,140 --> 00:30:23,940 En el panel de alumnos 663 00:30:23,940 --> 00:30:25,980 si quisiéramos insertar alumno 664 00:30:25,980 --> 00:30:28,000 pues para insertar alumno ¿qué nos hace falta? 665 00:30:28,500 --> 00:30:30,200 para insertar alumno nos hace falta 666 00:30:30,200 --> 00:30:31,859 el NIA y el nombre 667 00:30:31,859 --> 00:30:33,599 porque la empresa se le asigna luego 668 00:30:33,599 --> 00:30:36,039 vale, pues entonces podemos hacer aquí 669 00:30:36,039 --> 00:30:37,779 en el panel de alumno 670 00:30:37,779 --> 00:30:39,559 ¿dónde estoy? 671 00:30:43,119 --> 00:30:44,079 aquí en el panel 672 00:30:44,079 --> 00:30:46,019 de alumno me coloco en el panel de alumnos 673 00:30:46,019 --> 00:30:47,920 pero voy a cambiar nombre 674 00:30:47,920 --> 00:30:49,980 a este para aclararme 675 00:30:49,980 --> 00:30:51,240 este es el panel de empresas 676 00:30:51,240 --> 00:30:57,240 y este de aquí 677 00:30:57,240 --> 00:30:57,980 es el panel 678 00:30:57,980 --> 00:31:01,160 de profesores 679 00:31:01,160 --> 00:31:06,549 vale, pues me coloco 680 00:31:06,549 --> 00:31:07,990 en el panel de alumnos 681 00:31:07,990 --> 00:31:10,309 aquí a la izquierda, panel de alumnos 682 00:31:10,309 --> 00:31:11,549 y voy a poner un text fill 683 00:31:11,549 --> 00:31:14,730 para el NIA y otro para el nombre 684 00:31:14,730 --> 00:31:16,829 y así podemos hacer ya una funcionalidad 685 00:31:16,829 --> 00:31:18,250 ejecutarla porque a partir de ahí 686 00:31:18,250 --> 00:31:19,289 es hacer lo mismo una y otra vez 687 00:31:19,289 --> 00:31:22,289 pues venga, componentes 688 00:31:22,289 --> 00:31:23,950 un text fill 689 00:31:23,950 --> 00:31:26,269 ah bueno 690 00:31:26,269 --> 00:31:27,769 tengo que poner el layout 691 00:31:27,769 --> 00:31:29,730 absoluto en cada panel 692 00:31:29,730 --> 00:31:32,509 pues venga, en cada panel 693 00:31:32,509 --> 00:31:34,430 panel de alumnos 694 00:31:34,430 --> 00:31:36,930 le voy a poner el layout 695 00:31:36,930 --> 00:31:40,750 no, aquí, no, este fuera 696 00:31:40,750 --> 00:31:43,569 panel de alumnos 697 00:31:43,569 --> 00:31:44,670 joder 698 00:31:44,670 --> 00:31:48,130 a ver, es que estoy pendiente 699 00:31:48,130 --> 00:31:49,670 de tener 700 00:31:49,670 --> 00:31:54,690 ¿sí? 701 00:31:57,769 --> 00:31:58,769 Gracias. 702 00:32:32,089 --> 00:32:34,089 ¡Gracias! 703 00:33:02,089 --> 00:33:04,630 Vale, pero 704 00:33:04,630 --> 00:33:06,490 No llego a casa hasta esta noche 705 00:33:06,490 --> 00:33:07,529 Entonces la subiré esta noche 706 00:33:07,529 --> 00:33:10,089 ¿Vale? Esta noche la subo 707 00:33:10,089 --> 00:33:12,789 Sí, vale 708 00:33:12,789 --> 00:33:13,529 Pues entonces 709 00:33:13,529 --> 00:33:17,349 Me voy a poner un recordatorio 710 00:33:17,349 --> 00:33:19,250 Para acordarme esta noche 711 00:33:19,250 --> 00:33:19,849 Antes de acostarme 712 00:33:19,849 --> 00:33:20,910 Subirla 713 00:33:20,910 --> 00:33:23,190 Vale, a ver, entonces 714 00:33:23,190 --> 00:33:30,390 Pues mira 715 00:33:30,390 --> 00:33:32,190 Llego a casa sobre las once y media 716 00:33:32,190 --> 00:33:33,049 Si a las once 717 00:33:33,049 --> 00:33:35,970 Si me envías un correo a esa hora 718 00:33:35,970 --> 00:33:38,289 Si no me he acordado 719 00:33:38,289 --> 00:33:38,849 Me acordaré 720 00:33:38,849 --> 00:33:40,890 Vale, a ver, en alumnos entonces 721 00:33:40,890 --> 00:33:43,130 Estábamos poniéndole el layout 722 00:33:43,130 --> 00:33:44,690 Absolute 723 00:33:44,690 --> 00:33:46,849 Layout absoluto 724 00:33:46,849 --> 00:33:48,329 Vale, y ahora 725 00:33:48,329 --> 00:33:50,490 Nos llevamos a un textfield 726 00:33:50,490 --> 00:33:51,730 Para poner el nombre 727 00:33:51,730 --> 00:33:53,289 Joder 728 00:33:53,289 --> 00:33:55,950 Y otro textfield para poner 729 00:33:55,950 --> 00:33:57,809 Es que por rapidez no voy a poner ni la etiqueta 730 00:33:57,809 --> 00:33:59,250 Nombre, Nia, Nia, nombre 731 00:33:59,250 --> 00:34:02,069 Da igual, ya está 732 00:34:02,069 --> 00:34:06,890 Entonces, este text field lo vamos a llamar NIA para que en el código no nos hagamos lío. 733 00:34:07,390 --> 00:34:13,530 Y a este text field le vamos a llamar nombre para que luego en el código no nos hagamos lío. 734 00:34:14,269 --> 00:34:15,409 Ya tengo los dos text fields. 735 00:34:15,869 --> 00:34:17,309 Y ahora vamos a poner un botoncito de insertar. 736 00:34:18,050 --> 00:34:23,179 Pues venga, un botón, insertar. 737 00:34:25,519 --> 00:34:30,719 Le vamos a poner el nombre de la variable, que se llame la variable insertar alumno. 738 00:34:30,719 --> 00:34:32,539 BT, insertar alumno 739 00:34:32,539 --> 00:34:34,619 para saber que es el botón 740 00:34:34,619 --> 00:34:35,840 insertar alumno 741 00:34:35,840 --> 00:34:38,739 y el texto que va aquí 742 00:34:38,739 --> 00:34:40,699 encima que sea 743 00:34:40,699 --> 00:34:41,800 pues insertar 744 00:34:41,800 --> 00:34:46,429 vale, pues entonces la vista 745 00:34:46,429 --> 00:34:50,150 la vista para 746 00:34:50,150 --> 00:34:52,590 insertar alumno, esta ya está 747 00:34:52,590 --> 00:34:54,530 ahora ya tenemos que hacer 748 00:34:54,530 --> 00:34:55,289 la funcionalidad 749 00:34:55,289 --> 00:34:57,989 y esto sería para todas las funcionalidades 750 00:34:57,989 --> 00:35:00,429 para todas las funcionalidades que están aquí recogidas 751 00:35:00,429 --> 00:35:02,349 asignar alumno a profesor 752 00:35:02,349 --> 00:35:04,409 mostrar nombre de profesor que tenga alumnos 753 00:35:04,409 --> 00:35:05,969 todas estas funcionalidades 754 00:35:05,969 --> 00:35:08,690 que están aquí, pues habrá 755 00:35:08,690 --> 00:35:10,650 que ver qué componentes 756 00:35:10,650 --> 00:35:12,489 necesito yo aquí, qué componentes 757 00:35:12,489 --> 00:35:14,389 ya está, en el caso de insertar un alumno 758 00:35:14,389 --> 00:35:16,550 pues estos ya está, con estos 759 00:35:16,550 --> 00:35:18,590 vale, pues venga, vamos a darle 760 00:35:18,590 --> 00:35:20,230 ahora ya funcionalidad a esto 761 00:35:20,230 --> 00:35:22,489 qué componente va a recibir la funcionalidad, vamos a 762 00:35:22,489 --> 00:35:24,550 dársela al botón, pues venga 763 00:35:24,550 --> 00:35:26,449 vamos a hacerle, oye, añádeme 764 00:35:26,449 --> 00:35:28,550 o me hago yo la clase interna 765 00:35:28,550 --> 00:35:30,570 o como ya sé que es el evento por defecto 766 00:35:30,570 --> 00:35:31,289 me vengo aquí 767 00:35:31,289 --> 00:35:34,789 bueno, pues aquí que tendremos que hacer 768 00:35:34,789 --> 00:35:36,909 coger de los text fill 769 00:35:36,909 --> 00:35:37,730 los dos datos 770 00:35:37,730 --> 00:35:44,000 pues venga, el nia lo vamos a coger del text fill 771 00:35:44,000 --> 00:35:45,420 que como le he cambiado el nombre 772 00:35:45,420 --> 00:35:48,300 afortunadamente, pues no me voy a liar 773 00:35:48,300 --> 00:35:49,800 se llama nia 774 00:35:49,800 --> 00:35:53,900 nia.vectest 775 00:35:53,900 --> 00:35:56,039 ala, este es el nombre del alumno 776 00:35:56,039 --> 00:35:58,280 el niv del alumno 777 00:35:58,280 --> 00:35:59,059 donde va a estar 778 00:35:59,059 --> 00:36:03,610 pues el text fill 779 00:36:03,610 --> 00:36:05,650 nombre, lo he llamado 780 00:36:05,650 --> 00:36:07,449 nombre, juraría 781 00:36:07,449 --> 00:36:11,820 Pues ala 782 00:36:11,820 --> 00:36:15,199 Perdón 783 00:36:15,199 --> 00:36:18,639 Porque lo estoy dando tan rápido que no estoy ni pensando 784 00:36:18,639 --> 00:36:20,679 Nombre 785 00:36:20,679 --> 00:36:23,019 Nombre, vale 786 00:36:23,019 --> 00:36:24,840 Nombre, ¿qué pasa? 787 00:36:24,900 --> 00:36:26,500 ¿Que no se llama nombre el text field? 788 00:36:26,940 --> 00:36:28,980 Sí, entonces, es que lo estoy llamando igual 789 00:36:28,980 --> 00:36:30,719 Nombre 790 00:36:30,719 --> 00:36:32,079 Alumno, ala 791 00:36:32,079 --> 00:36:34,099 Ahí, vale 792 00:36:34,099 --> 00:36:35,599 Y ahora, ¿qué quiero hacer con esto? 793 00:36:36,820 --> 00:36:37,820 Meterlo en 794 00:36:37,820 --> 00:36:40,420 Habrá alguna funcionalidad en repositorio 795 00:36:40,420 --> 00:36:42,159 que esta es la que trabaja con los datos 796 00:36:42,159 --> 00:36:44,139 vale, y aquí viene la separación 797 00:36:44,139 --> 00:36:46,760 esta es la vista, la vista me recoge 798 00:36:46,760 --> 00:36:48,380 y ahora yo ya, cuando ya tengo que operar 799 00:36:48,380 --> 00:36:50,039 trabajar con los datos, llamo a esta clase 800 00:36:50,039 --> 00:36:51,639 que esta clase ya es la que se ocupa 801 00:36:51,639 --> 00:36:53,780 de trabajar con los datos, se ocupa esta 802 00:36:53,780 --> 00:36:56,199 vale, y esta clase efectivamente 803 00:36:56,199 --> 00:36:58,440 tendrá, ¿no he puesto public en los métodos? 804 00:36:58,500 --> 00:36:59,420 pues no he puesto public 805 00:36:59,420 --> 00:37:01,440 entonces si no he puesto public 806 00:37:01,440 --> 00:37:03,940 si, si están public 807 00:37:03,940 --> 00:37:08,489 ya, pero 808 00:37:08,489 --> 00:37:10,630 repositorio 809 00:37:10,630 --> 00:37:11,170 bueno, porque 810 00:37:11,170 --> 00:37:13,469 vale, vale, vale, porque 811 00:37:13,469 --> 00:37:14,889 repositorio, sí 812 00:37:14,889 --> 00:37:17,809 bueno, ¿cómo se llama? voy a ponerlo y que luego 813 00:37:17,809 --> 00:37:19,969 me haga el import automáticamente 814 00:37:19,969 --> 00:37:22,090 vale, entonces esto será 815 00:37:22,090 --> 00:37:23,949 ¿dónde estamos? en app, aquí 816 00:37:23,949 --> 00:37:25,489 pues esto 817 00:37:25,489 --> 00:37:28,070 repositorio 818 00:37:28,070 --> 00:37:30,010 punto 819 00:37:30,010 --> 00:37:30,989 alta 820 00:37:30,989 --> 00:37:33,889 alumno, y aquí 821 00:37:33,889 --> 00:37:35,949 ¿qué le pasábamos? el nif y el nombre precisamente 822 00:37:35,949 --> 00:37:36,969 el nia y el nombre 823 00:37:36,969 --> 00:37:40,780 nombre, alumno 824 00:37:40,780 --> 00:37:43,039 esto recibía el altalumno 825 00:37:43,039 --> 00:37:45,400 y repositorio 826 00:37:45,400 --> 00:37:46,960 habrá que importarlo de datos 827 00:37:46,960 --> 00:37:50,500 y esto 828 00:37:50,500 --> 00:37:56,719 altalumno 829 00:37:56,719 --> 00:37:58,119 ah, perdón, claro, es que no les he 830 00:37:58,119 --> 00:37:59,980 dado static 831 00:37:59,980 --> 00:38:02,460 se me han olvidado todos los static en todos los métodos 832 00:38:02,460 --> 00:38:02,860 ¿vale? 833 00:38:04,019 --> 00:38:06,360 public static, se me han olvidado todos los static 834 00:38:06,360 --> 00:38:08,179 con lo cual 835 00:38:08,179 --> 00:38:09,780 tendría que hacer un new repository 836 00:38:09,780 --> 00:38:11,579 ¿y para qué voy a hacer un new repository? 837 00:38:11,579 --> 00:38:13,199 Pongo esto como static y ya está 838 00:38:13,199 --> 00:38:14,719 Porque solo trabajan con estas de arriba 839 00:38:14,719 --> 00:38:15,420 Que son static 840 00:38:15,420 --> 00:38:19,079 Vale, se me han olvidado los static 841 00:38:19,079 --> 00:38:20,260 En todas ellas 842 00:38:20,260 --> 00:38:32,449 ¡Hala! Pues esta funcionalidad ya está 843 00:38:32,449 --> 00:38:34,309 Se comunica y alta 844 00:38:34,309 --> 00:38:39,909 Entonces si ejecutamos esto 845 00:38:39,909 --> 00:38:42,550 Lo único que vamos a ver es si nos da error o no nos da 846 00:38:42,550 --> 00:38:44,590 Vale, bueno, a ver aquí 847 00:38:44,590 --> 00:38:46,309 Este método 848 00:38:46,309 --> 00:38:48,190 ¿Qué pasa? 849 00:38:48,269 --> 00:38:50,570 Te daba un false si el alumno 850 00:38:50,570 --> 00:38:52,829 Ya estaba y no lo había podido haber dado de alta 851 00:38:53,429 --> 00:38:54,389 Entonces aquí 852 00:38:54,389 --> 00:38:56,590 habría que hacer esto 853 00:38:56,590 --> 00:38:59,150 si esto me dio true 854 00:38:59,150 --> 00:39:01,130 si esto me dio true 855 00:39:01,130 --> 00:39:03,050 pues entonces yo me hago 856 00:39:03,050 --> 00:39:04,369 mi j option pane 857 00:39:04,369 --> 00:39:08,329 mi j option pane 858 00:39:08,329 --> 00:39:09,590 que me diga 859 00:39:09,590 --> 00:39:12,409 alumno dado de alta 860 00:39:12,409 --> 00:39:15,230 porque para eso 861 00:39:15,230 --> 00:39:16,789 he hecho el retunfalse y true 862 00:39:16,789 --> 00:39:18,789 para que desde la vista podemos distinguir 863 00:39:18,789 --> 00:39:19,889 si algo fue bien o mal 864 00:39:19,889 --> 00:39:23,489 entonces 865 00:39:23,489 --> 00:39:29,630 alumno insertado 866 00:39:29,630 --> 00:39:33,389 Pero si esto me dio false 867 00:39:33,389 --> 00:39:35,530 Es porque no se dio de alta 868 00:39:35,530 --> 00:39:36,510 Porque ya existía, ¿no? 869 00:39:36,530 --> 00:39:38,969 Así funcionaba el método repositorio alta alumno 870 00:39:38,969 --> 00:39:41,889 El método repositorio alta alumno 871 00:39:41,889 --> 00:39:43,989 Este de aquí 872 00:39:43,989 --> 00:39:47,469 Alta profesor, alta alumno 873 00:39:47,469 --> 00:39:49,170 Ah, bueno, que justo este es el que está sin hacer 874 00:39:49,170 --> 00:39:51,190 Cachilaman, pues venga, vamos a ponerle 875 00:39:51,190 --> 00:39:51,869 Esto 876 00:39:51,869 --> 00:39:57,230 Control V, retoma alumnos 877 00:39:57,230 --> 00:40:02,980 Add new alumno 878 00:40:02,980 --> 00:40:09,599 Ni a nombre 879 00:40:09,599 --> 00:40:16,590 New alumno, ni a nombre 880 00:40:16,590 --> 00:40:19,429 y alumno no tenía constructor sin la empresa. 881 00:40:19,590 --> 00:40:20,369 No tenía constructor. 882 00:40:22,650 --> 00:40:22,889 ¿Vale? 883 00:40:23,090 --> 00:40:25,530 Entonces, vamos a hacerle un constructor sin la empresa. 884 00:40:29,519 --> 00:40:32,440 Vamos a hacerle un constructor sin la empresa y listo. 885 00:40:41,260 --> 00:40:43,380 Bueno, tú insertas el alumno en la aplicación 886 00:40:43,380 --> 00:40:45,000 y luego le puedes asignar una empresa después. 887 00:40:46,360 --> 00:40:47,739 Claro, de hecho hay una funcionalidad 888 00:40:47,739 --> 00:40:49,360 que es asigna empresa al alumno. 889 00:40:49,900 --> 00:40:52,880 Esto es el profesor cuando se le asignan unos alumnos. 890 00:40:52,880 --> 00:40:54,239 A ti te asignan 20 alumnos 891 00:40:54,239 --> 00:40:56,619 y luego tú ya te dedicas a ubicarlos. 892 00:40:56,619 --> 00:41:11,960 Entonces, ahora ya el método repositorio inserta el alumno con este nombre y este NIA. 893 00:41:12,139 --> 00:41:15,239 Por ahora sin empresa, pero está insertado en su alta de alumnos. 894 00:41:15,940 --> 00:41:18,840 Me devolverá true o false en función de si existe o no existe. 895 00:41:19,239 --> 00:41:23,119 Me devolverá true o false, para eso está ese método, para controlar con el true o false si existía o no. 896 00:41:23,119 --> 00:41:26,099 Y ahora ya este recoge esa información. 897 00:41:26,619 --> 00:41:29,119 que el altalumno te dio true 898 00:41:29,119 --> 00:41:31,380 lo has insertado y avisas 899 00:41:31,380 --> 00:41:33,420 que no, pues entonces 900 00:41:33,420 --> 00:41:35,260 lo dices en tu jOptionPanel 901 00:41:35,260 --> 00:41:38,940 lo dices aquí y dices 902 00:41:38,940 --> 00:41:39,940 ala 903 00:41:39,940 --> 00:41:46,900 hay que estar más rápido 904 00:41:46,900 --> 00:41:49,619 y lo tenéis que hacer de hecho más adelantados 905 00:41:49,619 --> 00:41:51,260 a mí, antes de que yo lo haga 906 00:41:51,260 --> 00:41:53,579 vosotros tenéis que dar cuenta que son más jóvenes y más rápidos 907 00:41:53,579 --> 00:41:54,159 y pum pum pum pum 908 00:41:54,159 --> 00:41:56,000 rapidez 909 00:41:56,000 --> 00:42:01,690 Pues sí, estáis bastante mayores 910 00:42:01,690 --> 00:42:05,349 No se pudo insertar alumno 911 00:42:05,349 --> 00:42:07,170 El alumno ya existe, el mensaje que sea 912 00:42:07,170 --> 00:42:08,170 El alumno ya existe 913 00:42:08,170 --> 00:42:12,989 A ver, ¿qué pasa? ¿Qué quieres mirar? 914 00:42:13,150 --> 00:42:13,769 ¿Dónde te has perdido? 915 00:42:15,289 --> 00:42:17,349 Vale, pues esto ya está 916 00:42:17,349 --> 00:42:18,829 Cojo el alumno 917 00:42:18,829 --> 00:42:22,289 Lo doy de alta con el método correspondiente 918 00:42:22,289 --> 00:42:26,050 Y además recojo el valor de control 919 00:42:26,050 --> 00:42:28,090 Recojo el valor de control para avisar 920 00:42:28,090 --> 00:42:29,210 ¿Vale? 921 00:42:29,750 --> 00:42:31,889 Pero aquí hay dos partes muy claras 922 00:42:31,889 --> 00:42:33,230 Hay dos partes, la vista 923 00:42:33,230 --> 00:42:36,210 Y la lógica, y la lógica está aquí 924 00:42:36,210 --> 00:42:38,230 Y yo llamo a este método 925 00:42:38,230 --> 00:42:39,070 Y este 926 00:42:39,070 --> 00:42:41,389 Y yo llamo a los métodos de repositorio 927 00:42:41,389 --> 00:42:44,090 Y esto no lo he hecho yo, esto es el back, esto está por ahí 928 00:42:44,090 --> 00:42:45,409 ¿Vale? 929 00:42:45,829 --> 00:42:47,630 Me los ofrecen y yo los llamo desde aquí 930 00:42:47,630 --> 00:42:49,730 Y cojo el valor de retorno para avisar 931 00:42:49,730 --> 00:42:52,010 A ver, vamos a probar esta 932 00:42:52,010 --> 00:42:53,949 Burrada, a ver si nos sale algo 933 00:42:53,949 --> 00:42:56,760 Venga 934 00:42:56,760 --> 00:43:00,460 vamos a meter a un primer alumno 935 00:43:00,460 --> 00:43:02,539 si hemos hecho las cosas bien 936 00:43:02,539 --> 00:43:04,219 nos dirá que el alumno está insertado 937 00:43:04,219 --> 00:43:06,440 alumno 938 00:43:06,440 --> 00:43:08,659 venga, vamos a meter al alumno 939 00:43:08,659 --> 00:43:10,440 Pepito 940 00:43:10,440 --> 00:43:12,219 ah no, el Nia iba a lo primero, pero bueno 941 00:43:12,219 --> 00:43:14,679 me da igual, Nia, papapá, un, dos, tres, cuatro 942 00:43:14,679 --> 00:43:16,599 y el alumno Pepito 943 00:43:16,599 --> 00:43:18,320 yo le doy a insertar 944 00:43:18,320 --> 00:43:20,019 y el alumno se ha insertado, muy bien 945 00:43:20,019 --> 00:43:22,519 ahora, si yo vuelvo 946 00:43:22,519 --> 00:43:24,300 trato de insertarlo de nuevo 947 00:43:24,300 --> 00:43:25,880 porque me he equivocado 948 00:43:25,880 --> 00:43:28,019 y he puesto el NIA dos veces 949 00:43:28,019 --> 00:43:29,880 me va a tener que decir 950 00:43:29,880 --> 00:43:32,019 el alumno ya existe 951 00:43:32,019 --> 00:43:33,500 y no me lo dice 952 00:43:33,500 --> 00:43:36,260 ¿eso qué significa? que el repositorio 953 00:43:36,260 --> 00:43:37,800 este no me ha devuelto el falso 954 00:43:37,800 --> 00:43:40,340 o sea, aquí algo ha fallado 955 00:43:40,340 --> 00:43:42,119 ¿verdad? me debería haber dicho 956 00:43:42,119 --> 00:43:43,360 el alumno ya existe 957 00:43:43,360 --> 00:43:46,300 entonces me ha devuelto true 958 00:43:46,300 --> 00:43:48,380 el método repositorio me debería haber devuelto 959 00:43:48,380 --> 00:43:49,940 falso, si no lo ha podido insertar 960 00:43:49,940 --> 00:43:52,179 o bien es que en el set no está bien el jasco de equals 961 00:43:52,179 --> 00:43:54,380 algo nos ha fallado, que no sé lo que es 962 00:43:54,380 --> 00:43:56,539 no sé lo que es, no sé, yo me esperaba que lo hiciera bien 963 00:43:56,539 --> 00:44:03,539 a ver, vamos a ver 964 00:44:03,539 --> 00:44:05,139 que ha fallado, vamos a ver que ha fallado 965 00:44:05,139 --> 00:44:11,820 vale, vale, vamos a ver que ha fallado 966 00:44:11,820 --> 00:44:12,860 primero, alumno 967 00:44:12,860 --> 00:44:15,780 Nia, ¿qué es? Nia es un string 968 00:44:15,780 --> 00:44:17,179 vale, entonces 969 00:44:17,179 --> 00:44:19,760 el jasco de equals 970 00:44:19,760 --> 00:44:20,260 de 971 00:44:20,260 --> 00:44:29,179 a ver, entonces en alumnos 972 00:44:29,179 --> 00:44:31,519 en repositorio, ¿los alumnos están 973 00:44:31,519 --> 00:44:33,659 ¿Dónde? ¿Está en un tríset? 974 00:44:35,219 --> 00:44:35,460 ¡Ah! 975 00:44:36,420 --> 00:44:36,860 Claro. 976 00:44:38,000 --> 00:44:38,860 ¿Qué ha fallado? 977 00:44:43,000 --> 00:44:43,179 ¿Eh? 978 00:44:47,139 --> 00:44:48,599 A ver, vamos a 979 00:44:48,599 --> 00:44:50,539 recopilar. ¿Qué ha fallado aquí? Vamos a ver. 980 00:44:52,260 --> 00:44:52,739 Repositorio. 981 00:44:52,800 --> 00:44:54,639 Tiene los alumnos en un tríset. 982 00:44:55,860 --> 00:44:56,460 ¿Eso qué 983 00:44:56,460 --> 00:44:58,280 significa? Que 984 00:44:58,280 --> 00:45:00,420 el tríset utiliza el 985 00:45:00,420 --> 00:45:02,159 comparable para la igualdad. 986 00:45:02,440 --> 00:45:03,920 El compare tú. El compare tú. 987 00:45:03,920 --> 00:45:06,059 No utiliza equals ni nada, usa el compare to. 988 00:45:06,380 --> 00:45:07,960 Vámonos al compare to de alumno. 989 00:45:08,820 --> 00:45:11,400 El compare to de alumno, que lo tiene que tener, 990 00:45:12,320 --> 00:45:13,440 porque se lo hemos tenido que hacer, 991 00:45:13,840 --> 00:45:16,820 el compare to de alumno trabaja por nombre. 992 00:45:17,599 --> 00:45:19,039 Luego, para este triset, 993 00:45:19,719 --> 00:45:22,239 la igualdad de alumnos viene por nombre. 994 00:45:23,059 --> 00:45:24,139 ¿Vale? Viene por nombre. 995 00:45:24,500 --> 00:45:26,380 Que queremos que la igualdad venga por nía, 996 00:45:26,500 --> 00:45:27,519 que es lo que tiene sentido. 997 00:45:28,239 --> 00:45:32,360 Este compare to lo tenemos que hacer por nía. 998 00:45:32,880 --> 00:45:33,400 ¿Vale? 999 00:45:33,920 --> 00:45:35,099 ¿Eso qué implicación tiene? 1000 00:45:35,519 --> 00:45:38,059 Simplemente que cuando nos da por iterar, 1001 00:45:38,360 --> 00:45:39,460 para sacar un listado, 1002 00:45:39,579 --> 00:45:42,300 la iteración lo va a sacar por orden alfabético de NIA. 1003 00:45:43,199 --> 00:45:45,119 ¿Que queremos un orden alfabético de nombre? 1004 00:45:45,239 --> 00:45:47,360 Hacemos un comparator aparte para el sort. 1005 00:45:48,300 --> 00:45:50,440 Pero desde luego, para que la aplicación funcione 1006 00:45:50,440 --> 00:45:53,340 y detecte alumnos iguales ahora a insertar, 1007 00:45:54,340 --> 00:45:55,400 ya que está en un triset, 1008 00:45:56,599 --> 00:45:57,559 como está en un triset, 1009 00:45:57,760 --> 00:46:00,079 la igualdad la tiene que fijar el compareTo. 1010 00:46:00,179 --> 00:46:00,840 Es que no hay otra. 1011 00:46:01,119 --> 00:46:03,039 Para el triset, la igualdad es el compareTo. 1012 00:46:03,039 --> 00:46:05,480 entonces si nuestro compare tú es por nombre 1013 00:46:05,480 --> 00:46:06,400 la igualdad es por nombre 1014 00:46:06,400 --> 00:46:09,960 de hecho si volvemos a ejecutar la aplicación 1015 00:46:09,960 --> 00:46:11,699 y le vamos a dar ahora 1016 00:46:11,699 --> 00:46:13,119 un pepito 1017 00:46:13,119 --> 00:46:16,780 con otro nía diferente 1018 00:46:16,780 --> 00:46:20,719 un pepito, insertar 1019 00:46:20,719 --> 00:46:23,619 ¿por qué no me sale el joto de acción pane? 1020 00:46:26,619 --> 00:46:28,179 espera, voy a volver a ejecutarlo 1021 00:46:28,179 --> 00:46:30,980 momentico, nos estamos estresando mucho todos 1022 00:46:30,980 --> 00:46:32,159 a ver 1023 00:46:32,159 --> 00:46:34,820 es que 1024 00:46:34,820 --> 00:46:36,039 se nos ha pasado 1025 00:46:36,039 --> 00:46:38,780 nos cunde poco, yo entiendo que es normal que nos cunda poco 1026 00:46:38,780 --> 00:46:40,960 entonces, yo hablar y pensar 1027 00:46:40,960 --> 00:46:43,019 no se me da muy bien 1028 00:46:43,019 --> 00:46:44,900 venga, a ver 1029 00:46:44,900 --> 00:46:46,239 venga, metemos a Pepito 1030 00:46:46,239 --> 00:46:47,980 alumno insertado 1031 00:46:47,980 --> 00:46:50,599 muy bien, que sí, que sí, que insertado 1032 00:46:50,599 --> 00:46:52,960 vamos a meter a otro Pepito 2 1033 00:46:52,960 --> 00:46:54,719 con este Nia, alumno insertado 1034 00:46:54,719 --> 00:46:57,039 vamos a meter a otro 1035 00:46:57,039 --> 00:46:57,940 Pepito 2 1036 00:46:57,940 --> 00:47:00,099 el alumno ya existe 1037 00:47:00,099 --> 00:47:03,280 porque para él la igualdad es por nombre 1038 00:47:03,280 --> 00:47:05,659 no es por NIA 1039 00:47:05,659 --> 00:47:06,440 es por nombre 1040 00:47:06,440 --> 00:47:09,619 entonces si yo no quiero que la igualdad sea por nombre 1041 00:47:09,619 --> 00:47:11,760 simplemente el compare tú de alumno 1042 00:47:11,760 --> 00:47:13,980 se lo cambio a 1043 00:47:13,980 --> 00:47:15,099 NIA 1044 00:47:15,099 --> 00:47:16,480 y punto pelota 1045 00:47:16,480 --> 00:47:27,659 ala, ahí está 1046 00:47:27,659 --> 00:47:30,300 y ya uno se puede adelantar al profesor 1047 00:47:30,300 --> 00:47:32,840 porque el profesor el compare tú así muy alegremente 1048 00:47:32,840 --> 00:47:35,280 por el famoso orden alfabético 1049 00:47:35,280 --> 00:47:37,880 lo habíamos puesto con nombre 1050 00:47:37,880 --> 00:47:39,679 pero cuidado 1051 00:47:39,679 --> 00:47:42,900 lo que identifica un profesor es el nif 1052 00:47:42,900 --> 00:47:45,159 y como mis profesores van a estar 1053 00:47:45,159 --> 00:47:46,039 en un triset 1054 00:47:46,039 --> 00:47:48,280 el compare to tiene que ser por nif 1055 00:47:48,280 --> 00:47:50,619 entonces ya nos podemos adelantar 1056 00:47:50,619 --> 00:47:52,760 para el resto de funcionalidades que podáis ir haciéndonos 1057 00:47:52,760 --> 00:47:55,119 podemos adelantar y esto tiene que ser 1058 00:47:55,119 --> 00:47:57,400 nif 1059 00:47:57,400 --> 00:47:58,719 y nif 1060 00:47:58,719 --> 00:48:00,880 entonces ahora ya 1061 00:48:00,880 --> 00:48:02,340 con esta modificación 1062 00:48:02,340 --> 00:48:04,199 si volvemos a ejecutar la aplicación 1063 00:48:04,199 --> 00:48:06,880 ahora ya si 1064 00:48:06,880 --> 00:48:08,639 que me lo, uy, que he hecho 1065 00:48:08,639 --> 00:48:16,679 ahora ya si 1066 00:48:16,679 --> 00:48:18,360 venga, inserta alumno con 1067 00:48:18,360 --> 00:48:19,699 ni a 1, 2, 3, 4 1068 00:48:19,699 --> 00:48:22,039 Pepito 1069 00:48:22,039 --> 00:48:24,860 insert, alumno insertado 1070 00:48:24,860 --> 00:48:26,559 vamos a 1071 00:48:26,559 --> 00:48:28,739 insertar a 1, 2, 3, 4 que me he equivocado 1072 00:48:28,739 --> 00:48:30,340 y a Pepito 2 le he puesto a mi monía 1073 00:48:30,340 --> 00:48:31,719 que aún no ya existe 1074 00:48:31,719 --> 00:48:37,699 vale, pues a partir de aquí 1075 00:48:37,699 --> 00:48:39,480 es el 1076 00:48:39,480 --> 00:48:41,539 tirar de la rueda 1077 00:48:41,539 --> 00:48:43,480 una y otra vez, por ejemplo 1078 00:48:43,480 --> 00:48:45,179 que funcionalidad hacemos, cual de estas 1079 00:48:45,179 --> 00:48:47,920 más complicada que nos pueda 1080 00:48:47,920 --> 00:48:49,920 interesar hacer y ponerle luego una vista 1081 00:48:49,920 --> 00:48:50,739 para ejecutarla 1082 00:48:50,739 --> 00:48:53,619 tenemos hechas las 5 primeras 1083 00:48:53,619 --> 00:48:56,079 ¿vale? que uno podría probarlas 1084 00:48:56,079 --> 00:48:57,760 pues poniendo los componentes, el rollo es que hay que poner 1085 00:48:57,760 --> 00:48:59,440 los componentes para probarlas, un peñazo 1086 00:48:59,440 --> 00:49:01,900 por ejemplo 1087 00:49:01,900 --> 00:49:02,679 ¿cuál os gusta? 1088 00:49:03,739 --> 00:49:04,960 venga, decid una al azar 1089 00:49:04,960 --> 00:49:07,900 entre 6 y 12 1090 00:49:07,900 --> 00:49:10,699 entre 6 y 12 1091 00:49:10,699 --> 00:49:12,380 mirad 1092 00:49:12,380 --> 00:49:15,340 un texto que os guste. 1093 00:49:19,340 --> 00:49:21,260 ¿Cuál os parece más rollo y más fea? 1094 00:49:25,150 --> 00:49:26,250 ¿Cambiar todos los alumnos 1095 00:49:26,250 --> 00:49:27,949 de la primera sede a la segunda sede? 1096 00:49:28,730 --> 00:49:29,489 Yo qué sé. 1097 00:49:30,010 --> 00:49:32,389 La 10, esa. A ver qué será esto. 1098 00:49:33,269 --> 00:49:33,969 Venga, la 10. 1099 00:49:35,070 --> 00:49:35,849 Código de empresa 1100 00:49:35,849 --> 00:49:37,329 y dos códigos de sede. 1101 00:49:37,530 --> 00:49:40,210 La idea es que los alumnos que estén en esa sede 1102 00:49:40,210 --> 00:49:42,190 pues ha habido un terremoto. 1103 00:49:43,070 --> 00:49:43,769 Y esa sede 1104 00:49:43,769 --> 00:49:45,730 ha fallecido 1105 00:49:45,730 --> 00:49:48,289 y hay que cambiar a todos los alumnos a la otra sede 1106 00:49:48,289 --> 00:49:50,030 vale, pues entonces se le da 1107 00:49:50,030 --> 00:49:51,469 al código de empresa la sede 1108 00:49:51,469 --> 00:49:54,369 que se derrumbó y la otra sede 1109 00:49:54,369 --> 00:49:55,469 pues venga 1110 00:49:55,469 --> 00:49:57,889 repositorio, vámonos ahí 1111 00:49:57,889 --> 00:49:59,670 funcionalidades 1112 00:49:59,670 --> 00:50:05,019 public static 1113 00:50:05,019 --> 00:50:06,980 esta genera 1114 00:50:06,980 --> 00:50:08,800 excepciones, te da un false si lo pudo 1115 00:50:08,800 --> 00:50:10,360 hacer o no, esta que te dice 1116 00:50:10,360 --> 00:50:12,800 esta dice que si 1117 00:50:12,800 --> 00:50:15,039 no existe la empresa o la sede 1118 00:50:15,039 --> 00:50:16,260 dentro de la empresa 1119 00:50:16,260 --> 00:50:20,570 empresa sede exception 1120 00:50:20,570 --> 00:50:23,349 pues entonces vamos a decir que devuelva void 1121 00:50:23,349 --> 00:50:25,409 y ya va a avisar con excepciones y ya está 1122 00:50:25,409 --> 00:50:29,219 cambiar 1123 00:50:29,219 --> 00:50:31,780 alumnos de sede 1124 00:50:31,780 --> 00:50:33,679 entonces todos 1125 00:50:33,679 --> 00:50:35,840 los que estén en esta empresa 1126 00:50:35,840 --> 00:50:39,840 se van a ir 1127 00:50:39,840 --> 00:50:40,719 de la 1128 00:50:40,719 --> 00:50:43,539 sede antigua 1129 00:50:43,539 --> 00:50:50,010 a la sede nueva 1130 00:50:50,010 --> 00:50:56,769 a la todos los que estén 1131 00:50:56,769 --> 00:51:00,559 bueno, pues nada 1132 00:51:00,559 --> 00:51:06,920 vale 1133 00:51:06,920 --> 00:51:08,639 entonces, aquí 1134 00:51:08,639 --> 00:51:10,860 vamos a ver 1135 00:51:10,860 --> 00:51:13,300 habría que ir, nuestros alumnos 1136 00:51:13,300 --> 00:51:15,500 ¿dónde están? punto de partida para tirar 1137 00:51:15,500 --> 00:51:17,139 nuestros alumnos están aquí 1138 00:51:17,139 --> 00:51:19,699 entonces habrá que iterar 1139 00:51:19,699 --> 00:51:20,900 alumno por alumno 1140 00:51:20,900 --> 00:51:23,380 para cada alumno 1141 00:51:23,380 --> 00:51:25,400 coger la empresa en la que está 1142 00:51:25,400 --> 00:51:26,960 si la empresa 1143 00:51:26,960 --> 00:51:29,360 por ahora vamos a no meter excepciones 1144 00:51:29,360 --> 00:51:31,500 ni nada, vamos a hacer el código 1145 00:51:31,500 --> 00:51:32,840 alumno por alumno 1146 00:51:32,840 --> 00:51:35,039 si la empresa del alumno es esta 1147 00:51:35,039 --> 00:51:37,360 pues entonces 1148 00:51:37,360 --> 00:51:39,659 su sede 1149 00:51:39,659 --> 00:51:40,360 que sea esta 1150 00:51:40,360 --> 00:51:45,599 y estaba en esta sede, que se vaya a esta 1151 00:51:45,599 --> 00:51:47,320 y si no estaba en esta sede, la dejemos 1152 00:51:47,320 --> 00:51:48,480 porque esa no se derrumbó 1153 00:51:48,480 --> 00:51:50,400 pues venga, vamos a ver 1154 00:51:50,400 --> 00:51:52,300 recorremos los alumnos 1155 00:51:52,300 --> 00:51:54,739 vale 1156 00:51:54,739 --> 00:51:57,260 voy a hacer un iterator 1157 00:51:57,260 --> 00:52:00,000 para que os acostumbréis a iterator 1158 00:52:00,000 --> 00:52:01,920 porque hay veces que no hay más remedio que usarlo 1159 00:52:01,920 --> 00:52:04,079 si yo no voy a consultar 1160 00:52:04,079 --> 00:52:05,940 sino que voy a eliminar de un iterador 1161 00:52:05,940 --> 00:52:07,400 o tengo multi-heal o lo que sea 1162 00:52:07,400 --> 00:52:09,960 pues venga, vamos a iterar por los alumnos 1163 00:52:09,960 --> 00:52:17,769 iteramos por los alumnos 1164 00:52:17,769 --> 00:52:18,369 y ahora 1165 00:52:18,369 --> 00:52:28,480 nos quedamos con cada alumno 1166 00:52:28,480 --> 00:52:31,960 alumno a igual a i.next 1167 00:52:31,960 --> 00:52:34,519 vale, pues a ver 1168 00:52:34,519 --> 00:52:37,019 si este alumno estaba 1169 00:52:37,019 --> 00:52:39,639 en esta empresa y en esta sede 1170 00:52:39,639 --> 00:52:41,579 le muevo a la sede nueva 1171 00:52:41,579 --> 00:52:43,920 bueno, pues entonces 1172 00:52:43,920 --> 00:52:46,039 primero habrá que ver 1173 00:52:46,039 --> 00:52:47,619 si el alumno tenía sede asignada 1174 00:52:47,619 --> 00:52:49,599 a empresa asignada porque si no 1175 00:52:49,599 --> 00:52:51,760 me arriesgo 1176 00:52:51,760 --> 00:52:53,880 a un pedazo de null pointer exception 1177 00:52:53,880 --> 00:52:55,719 es decir, yo podría 1178 00:52:55,719 --> 00:52:56,920 hacer esto a lo bestia 1179 00:52:56,920 --> 00:53:00,000 si a.get 1180 00:53:00,000 --> 00:53:01,800 empresa 1181 00:53:01,800 --> 00:53:04,079 de 0 1182 00:53:04,079 --> 00:53:05,820 resulta 1183 00:53:05,820 --> 00:53:07,559 que es igual a code 1184 00:53:07,559 --> 00:53:08,219 empresa 1185 00:53:08,219 --> 00:53:09,980 y 1186 00:53:09,980 --> 00:53:13,480 a.get 1187 00:53:13,480 --> 00:53:15,940 empresa de 1 1188 00:53:15,940 --> 00:53:19,739 lo voy a bajar abajo para que se vea mejor 1189 00:53:19,739 --> 00:53:21,539 de 1 1190 00:53:21,539 --> 00:53:23,260 es igual 1191 00:53:23,260 --> 00:53:26,929 a COD sede 1192 00:53:26,929 --> 00:53:28,929 no a COD sede, no a sede all 1193 00:53:28,929 --> 00:53:33,650 porque la empresa y la sede de un alumno 1194 00:53:33,650 --> 00:53:35,550 están en las posiciones 0 y 1 de este array 1195 00:53:35,550 --> 00:53:37,289 es verdad 1196 00:53:37,289 --> 00:53:39,570 vale, pues 1197 00:53:39,570 --> 00:53:41,190 si el alumno estaba en esta empresa 1198 00:53:41,190 --> 00:53:43,489 y dentro de esta empresa estaba en esa 1199 00:53:43,489 --> 00:53:45,050 sede que se acaba de derrumbar 1200 00:53:45,050 --> 00:53:47,010 pues entonces a esta 1201 00:53:47,010 --> 00:53:48,269 a este alumno 1202 00:53:48,269 --> 00:53:50,829 le voy a poner 1203 00:53:50,829 --> 00:53:52,849 como nueva sede 1204 00:53:52,849 --> 00:53:54,090 esta 1205 00:53:54,090 --> 00:53:59,179 y se acabó el método 1206 00:53:59,179 --> 00:54:02,199 se acabó el método sin hacer ninguna 1207 00:54:02,199 --> 00:54:03,239 verificación de error 1208 00:54:03,239 --> 00:54:06,119 esta aplicación está bien 1209 00:54:06,119 --> 00:54:08,219 si nunca jamás nadie 1210 00:54:08,219 --> 00:54:09,920 se va a equivocar 1211 00:54:09,920 --> 00:54:11,440 haciendo consultas 1212 00:54:11,440 --> 00:54:14,099 si todo el mundo que meta un código de sede 1213 00:54:14,099 --> 00:54:16,260 o código de empresa, mete un código 1214 00:54:16,260 --> 00:54:17,840 de sede y de empresa que existen 1215 00:54:17,840 --> 00:54:19,920 pero no hay que contar con eso 1216 00:54:19,920 --> 00:54:22,539 lo que hay que contar es cuando introduce tu NIF 1217 00:54:22,539 --> 00:54:24,500 tú pones tu NIF y te ponen 1218 00:54:24,500 --> 00:54:25,880 lo pones todo mal 1219 00:54:25,880 --> 00:54:28,360 entonces hombre, hay que contar con que 1220 00:54:28,360 --> 00:54:30,079 la aplicación en lugar de boom 1221 00:54:30,079 --> 00:54:32,039 explotar el ordenador y salir mil letras rojas 1222 00:54:32,039 --> 00:54:33,940 tú esperas que la aplicación te diga 1223 00:54:33,940 --> 00:54:35,920 has tecleado mal tu NIF 1224 00:54:35,920 --> 00:54:37,139 por favor teclealo de nuevo 1225 00:54:37,139 --> 00:54:40,119 pues aquí igual, si nosotros dejamos esto 1226 00:54:40,119 --> 00:54:42,059 como está y el usuario 1227 00:54:42,059 --> 00:54:44,159 luego mete el código de empresa 1228 00:54:44,159 --> 00:54:46,159 mal o el código de sede antigua mal 1229 00:54:46,159 --> 00:54:49,219 o el alumno no tiene empresa 1230 00:54:49,219 --> 00:54:52,300 pues entonces aquí te va a salir 1231 00:54:52,300 --> 00:54:53,739 unas letras rojas tremendas 1232 00:54:53,739 --> 00:54:55,679 entonces aquí hay que empezar a meter 1233 00:54:55,679 --> 00:54:57,360 verificaciones 1234 00:54:57,360 --> 00:54:58,840 la primera verificación 1235 00:54:58,840 --> 00:55:01,280 estamos recorriendo todos los alumnos 1236 00:55:01,280 --> 00:55:03,079 para ver si su empresa es esa 1237 00:55:03,079 --> 00:55:05,159 pero puede ser que alguno de estos alumnos 1238 00:55:05,159 --> 00:55:07,420 ni siquiera tenga empresa asignada 1239 00:55:07,420 --> 00:55:09,099 si no lo tiene 1240 00:55:09,099 --> 00:55:10,380 ¿qué le va a ocurrir a este alumno? 1241 00:55:11,119 --> 00:55:13,239 que este array va a ser 1242 00:55:13,239 --> 00:55:14,960 un pedazo de null pointer 1243 00:55:14,960 --> 00:55:16,500 de null como un castillo 1244 00:55:16,500 --> 00:55:18,880 entonces si eso es un pedazo de null 1245 00:55:18,880 --> 00:55:20,900 como un castillo, esto va a ser 1246 00:55:20,900 --> 00:55:22,340 un pedazo de null pointer 1247 00:55:22,340 --> 00:55:23,840 gigante 1248 00:55:23,840 --> 00:55:26,500 perdón, un null pointer no 1249 00:55:26,500 --> 00:55:28,360 va a ser un 1250 00:55:28,360 --> 00:55:30,679 array index bound exception 1251 00:55:30,679 --> 00:55:33,079 ¿verdad? agate empresa va a ser null 1252 00:55:33,079 --> 00:55:34,960 yo trato de acceder 1253 00:55:34,960 --> 00:55:36,139 a la posición 0 de null 1254 00:55:36,139 --> 00:55:37,559 pues malamente 1255 00:55:37,559 --> 00:55:40,039 entonces 1256 00:55:40,039 --> 00:55:42,280 ¿qué es lo primero que tendremos que hacer? 1257 00:55:43,079 --> 00:55:44,119 pues verificar 1258 00:55:44,119 --> 00:55:46,480 si A es diferente 1259 00:55:46,480 --> 00:55:47,340 los métodos de la misma instrucción 1260 00:55:47,340 --> 00:55:50,440 si A.getEmpresa 1261 00:55:50,440 --> 00:55:53,019 es distinto de null 1262 00:55:53,019 --> 00:55:55,019 es decir, el alumno ya sí que tiene 1263 00:55:55,019 --> 00:55:55,960 empresa asignada 1264 00:55:55,960 --> 00:56:00,280 si tiene empresa 1265 00:56:00,280 --> 00:56:02,000 porque si no la tiene 1266 00:56:02,000 --> 00:56:03,440 el resto de comprobaciones no las quiero 1267 00:56:03,440 --> 00:56:06,619 y teniendo empresa 1268 00:56:06,619 --> 00:56:08,460 su empresa es cero 1269 00:56:08,460 --> 00:56:10,400 y su código de sede es este 1270 00:56:10,400 --> 00:56:12,199 entonces esto es fundamental 1271 00:56:12,199 --> 00:56:13,000 incorporarlo 1272 00:56:13,000 --> 00:56:15,659 y por supuesto 1273 00:56:15,659 --> 00:56:17,099 con un doble AND 1274 00:56:17,099 --> 00:56:19,199 si uno pone un único AND 1275 00:56:19,199 --> 00:56:20,679 porque le da pereza 1276 00:56:20,679 --> 00:56:22,780 no hace nada, no arregla nada 1277 00:56:22,780 --> 00:56:25,079 porque ya sabemos la diferencia 1278 00:56:25,079 --> 00:56:26,360 entre doble AND y simple AND 1279 00:56:26,360 --> 00:56:28,139 el simple AND 1280 00:56:28,139 --> 00:56:30,940 aunque ésta te dé false y por tanto 1281 00:56:30,940 --> 00:56:32,900 ya puedas concluir que el total es false 1282 00:56:32,900 --> 00:56:35,000 porque false AND lo que sea es false 1283 00:56:35,000 --> 00:56:37,239 si hay un simple AND te va a evaluar 1284 00:56:37,239 --> 00:56:37,940 lo demás igual 1285 00:56:37,940 --> 00:56:41,119 entonces éste te va a seguir dando el ArrayIndexBoundException 1286 00:56:41,119 --> 00:56:43,239 Null pointer exception, pero sin embargo 1287 00:56:43,239 --> 00:56:44,519 Si ponemos el doble AND 1288 00:56:44,519 --> 00:56:46,639 Como esto ya es falso 1289 00:56:46,639 --> 00:56:48,880 La máquina virtual dice 1290 00:56:48,880 --> 00:56:50,719 ¿Para qué quiero yo mirar lo demás? 1291 00:56:50,860 --> 00:56:51,679 Si eso ya es falso 1292 00:56:51,679 --> 00:56:54,059 El total del AND va a ser falso 1293 00:56:54,059 --> 00:56:56,880 Bueno, pues la primera verificación para evitar 1294 00:56:56,880 --> 00:56:58,980 El primer null pointer exception por el array 1295 00:56:58,980 --> 00:57:00,900 Ya está, aquí no hay problema 1296 00:57:00,900 --> 00:57:03,239 Solo va a comprobar los alumnos 1297 00:57:03,239 --> 00:57:04,280 Que no sean null 1298 00:57:04,280 --> 00:57:07,019 Perdón, los cuya empresa 1299 00:57:07,019 --> 00:57:07,820 No sea null 1300 00:57:07,820 --> 00:57:10,800 vale, y ahora ya 1301 00:57:10,800 --> 00:57:12,639 siguiente verificación, que me dicen 1302 00:57:12,639 --> 00:57:14,800 oye, cuidado, si la empresa 1303 00:57:14,800 --> 00:57:16,920 que te han dicho que cambies de sede, no existe 1304 00:57:16,920 --> 00:57:19,099 esa empresa, o no existe 1305 00:57:19,099 --> 00:57:20,579 para esa empresa 1306 00:57:20,579 --> 00:57:22,659 no existen las sedes que estás dando 1307 00:57:22,659 --> 00:57:24,300 lanza una excepción 1308 00:57:24,300 --> 00:57:26,860 pues esa es la siguiente comprobación 1309 00:57:26,860 --> 00:57:27,840 que habría que hacer 1310 00:57:27,840 --> 00:57:30,840 la misma que hemos hecho cuando hemos dado de alta 1311 00:57:30,840 --> 00:57:32,719 una sede en una empresa, pues lo mismo 1312 00:57:32,719 --> 00:57:34,019 tendríamos que 1313 00:57:34,019 --> 00:57:38,170 vale, y esto 1314 00:57:38,170 --> 00:57:40,610 bueno 1315 00:57:40,610 --> 00:57:43,090 queréis que lo incorporemos 1316 00:57:43,090 --> 00:57:44,530 es la misma comprobación de 1317 00:57:44,530 --> 00:57:46,989 bueno 1318 00:57:46,989 --> 00:57:47,989 digo no 1319 00:57:47,989 --> 00:57:51,730 vale, que falta lanzar la excepción 1320 00:57:51,730 --> 00:57:53,449 si la empresa no existe o si 1321 00:57:53,449 --> 00:57:55,349 no existiendo la empresa, la sede no existe 1322 00:57:55,349 --> 00:57:57,389 pero eso es hacer lo mismo que hicimos 1323 00:57:57,389 --> 00:57:59,190 en otro método, entonces 1324 00:57:59,190 --> 00:58:01,230 para ver si la empresa no existe, la empresa 1325 00:58:01,230 --> 00:58:03,590 está pues aquí en este set 1326 00:58:03,590 --> 00:58:04,809 pues entonces ya 1327 00:58:04,809 --> 00:58:07,130 pues 1328 00:58:07,130 --> 00:58:08,349 Esto es que ya 1329 00:58:08,349 --> 00:58:10,150 Si no contiene 1330 00:58:10,150 --> 00:58:12,130 Si empresas 1331 00:58:12,130 --> 00:58:14,750 No contiene 1332 00:58:14,750 --> 00:58:16,630 Una nueva 1333 00:58:16,630 --> 00:58:18,269 Una empresa 1334 00:58:18,269 --> 00:58:20,869 Con ese código de empresa 1335 00:58:20,869 --> 00:58:24,849 Si no la contiene 1336 00:58:24,849 --> 00:58:26,889 Entonces 1337 00:58:26,889 --> 00:58:27,690 Throw 1338 00:58:27,690 --> 00:58:30,030 New 1339 00:58:30,030 --> 00:58:31,269 La excepción que se llamaba 1340 00:58:31,269 --> 00:58:32,590 Empresa setException 1341 00:58:32,590 --> 00:58:42,239 Perfecto 1342 00:58:42,239 --> 00:58:43,760 Si este set de empresas 1343 00:58:43,760 --> 00:58:45,219 No contiene una empresa 1344 00:58:45,219 --> 00:58:46,840 Con este código 1345 00:58:46,840 --> 00:58:49,099 ¿Vale? Pues lanza 1346 00:58:49,099 --> 00:58:52,000 Lo que pasa es que empresa, como no tiene constructor 1347 00:58:52,000 --> 00:58:53,579 Solo con el código, no pasa nada 1348 00:58:53,579 --> 00:58:55,320 Vamos a hacérselo, rápidamente 1349 00:58:55,320 --> 00:58:58,239 Chain constructor 1350 00:58:58,239 --> 00:58:59,500 Create constructor 1351 00:58:59,500 --> 00:59:00,780 Si es que ya me lo ofrece aquí abajo 1352 00:59:00,780 --> 00:59:03,099 Crea un constructor, venga, créalo tú solo 1353 00:59:03,099 --> 00:59:04,099 Ah, la ha creado, ya está 1354 00:59:04,099 --> 00:59:10,860 CodeEmp 1355 00:59:10,860 --> 00:59:12,639 Igual a 1356 00:59:12,639 --> 00:59:14,019 CodeEmp 1357 00:59:14,019 --> 00:59:18,179 Ah, es que se llama código 1358 00:59:18,179 --> 00:59:22,820 he hecho en empresa un constructor 1359 00:59:22,820 --> 00:59:23,699 solo por código 1360 00:59:23,699 --> 00:59:28,030 y ahora 1361 00:59:28,030 --> 00:59:30,829 que mi set de empresas no contiene 1362 00:59:30,829 --> 00:59:32,730 una empresa con ese código 1363 00:59:32,730 --> 00:59:34,730 lanza la excepción, no sigas 1364 00:59:34,730 --> 00:59:36,530 porque no tiene sentido que cambie de empresa 1365 00:59:36,530 --> 00:59:38,010 a los alumnos de sedes si no existe 1366 00:59:38,010 --> 00:59:40,489 siguiente comprobación 1367 00:59:40,489 --> 00:59:42,969 la empresa existe, vamos a recorrerla 1368 00:59:42,969 --> 00:59:44,909 si no existen sedes 1369 00:59:44,909 --> 00:59:46,690 con estos valores 1370 00:59:46,690 --> 00:59:47,570 pues también 1371 00:59:47,570 --> 00:59:50,130 y es que eso mismo podemos copiar y pegar 1372 00:59:50,130 --> 00:59:52,070 de uno de los métodos de arriba, que ya lo teníamos 1373 00:59:52,070 --> 00:59:54,329 era esto, es que ya lo teníamos aquí 1374 00:59:54,329 --> 00:59:57,960 lo podemos copiar y pegar 1375 00:59:57,960 --> 01:00:04,489 cogemos la empresa 1376 01:00:04,489 --> 01:00:06,730 si no contiene sede old 1377 01:00:06,730 --> 01:00:10,829 o no contiene la otra 1378 01:00:10,829 --> 01:00:14,690 o si no contiene esta 1379 01:00:14,690 --> 01:00:16,710 o no contiene la otra 1380 01:00:16,710 --> 01:00:17,989 porque tiene que contener las dos 1381 01:00:17,989 --> 01:00:31,760 ala, pues este método ya está con todas las verificaciones 1382 01:00:31,760 --> 01:00:33,340 nos falta 1383 01:00:33,340 --> 01:00:35,260 ponerle el throws al método 1384 01:00:35,260 --> 01:00:39,559 y ya estaría, ¿qué hace el método? 1385 01:00:39,659 --> 01:00:41,639 primero, verifica que existe 1386 01:00:41,639 --> 01:00:43,380 una empresa con el código que yo le he pasado 1387 01:00:43,380 --> 01:00:45,460 porque si no existe, lanza excepción y para 1388 01:00:45,460 --> 01:00:47,639 siguiente, busca esa 1389 01:00:47,639 --> 01:00:49,440 empresa y verifica 1390 01:00:49,440 --> 01:00:51,619 que existan sedes en 1391 01:00:51,619 --> 01:00:53,639 esa empresa con código viejo y nuevo 1392 01:00:53,639 --> 01:00:54,820 porque 1393 01:00:54,820 --> 01:01:00,059 como con el normal 1394 01:01:00,059 --> 01:01:02,840 porque me han pasado estos dos, me han dicho 1395 01:01:02,840 --> 01:01:04,559 verifica, o sea, de esta empresa 1396 01:01:04,559 --> 01:01:06,719 se le ha derruido la sede vieja y vamos 1397 01:01:06,719 --> 01:01:08,440 a una sede nueva, dices 1398 01:01:08,440 --> 01:01:10,760 verifica que esa empresa tenía esas dos sedes 1399 01:01:10,760 --> 01:01:14,309 no las dos porque 1400 01:01:14,309 --> 01:01:16,389 tenía una vieja que se ha derruido y los vas a 1401 01:01:16,389 --> 01:01:17,090 pasar a una nueva 1402 01:01:17,090 --> 01:01:20,329 entonces esa empresa se tenía 1403 01:01:20,329 --> 01:01:20,829 las dos 1404 01:01:20,829 --> 01:01:24,570 entonces si no tenía 1405 01:01:24,570 --> 01:01:26,289 alguna de las dos lanza 1406 01:01:26,289 --> 01:01:27,210 y ahora ya 1407 01:01:27,210 --> 01:01:30,449 si tenía las dos ya te vas a los alumnos 1408 01:01:30,449 --> 01:01:32,570 el que estuviera en la vieja lo pasas 1409 01:01:32,570 --> 01:01:33,110 a la nueva 1410 01:01:33,110 --> 01:01:35,829 el que estuviera en la vieja lo pasas a la nueva 1411 01:01:35,829 --> 01:01:38,329 entonces si la empresa no tenía 1412 01:01:38,329 --> 01:01:40,610 la sede vieja o no tenía 1413 01:01:40,610 --> 01:01:42,170 la nueva que tenía que tener las dos 1414 01:01:42,170 --> 01:01:43,929 pues no tiene sentido moverlos de una a otra 1415 01:01:43,929 --> 01:01:45,110 tenía que tener las dos 1416 01:01:45,110 --> 01:01:48,750 ahora ya si hemos llegado a este punto 1417 01:01:48,750 --> 01:01:50,469 es porque existe la empresa 1418 01:01:50,469 --> 01:01:52,530 y la empresa tenía sus dos sedes 1419 01:01:52,530 --> 01:01:54,409 tenía las dos, ahora ya recorremos 1420 01:01:54,409 --> 01:01:56,429 a los alumnos y para 1421 01:01:56,429 --> 01:01:58,429 todo alumno que tuviera empresa asignada 1422 01:01:58,429 --> 01:02:00,289 si esa empresa era la que me han dado 1423 01:02:00,289 --> 01:02:02,590 y su sede vieja 1424 01:02:02,590 --> 01:02:04,050 era la que me han dado 1425 01:02:04,050 --> 01:02:05,530 que la tenía esa empresa 1426 01:02:05,530 --> 01:02:07,869 pues ahora le pones la sede nueva 1427 01:02:07,869 --> 01:02:09,590 que también la tiene, luego lo he verificado 1428 01:02:09,590 --> 01:02:12,170 ¿vale? o sea no tiene sentido 1429 01:02:12,170 --> 01:02:14,190 pasar a esta parte ya final, no tiene sentido 1430 01:02:14,190 --> 01:02:15,989 si no existía la empresa 1431 01:02:15,989 --> 01:02:17,190 con sus dos sedes 1432 01:02:17,190 --> 01:02:19,429 que es lo que hemos verificado aquí 1433 01:02:19,429 --> 01:02:22,010 y ahora se trata de 1434 01:02:22,010 --> 01:02:23,869 llamar a estos métodos desde la vista 1435 01:02:23,869 --> 01:02:25,030 simplemente 1436 01:02:25,030 --> 01:02:26,989 pues aquí 1437 01:02:26,989 --> 01:02:29,969 asignar empresa a alumno 1438 01:02:29,969 --> 01:02:32,030 pues habrá que poner código de empresa 1439 01:02:32,030 --> 01:02:33,590 código de alumno, código no sé qué 1440 01:02:33,590 --> 01:02:35,449 asignar y llamar al método 1441 01:02:35,449 --> 01:02:37,809 ¿Vale? Entonces lo que pasa es que es un rollo 1442 01:02:37,809 --> 01:02:39,710 Porque hay que poner los componentes 1443 01:02:39,710 --> 01:02:40,909 Y ya está 1444 01:02:40,909 --> 01:02:46,010 A ver 1445 01:02:46,010 --> 01:02:52,909 ¿Hacemos alguna otra funcionalidad? 1446 01:02:53,030 --> 01:02:54,610 ¿O metemos alguna otra en la vista? 1447 01:02:55,170 --> 01:02:56,269 Para probarla 1448 01:02:56,269 --> 01:02:59,769 Por ejemplo 1449 01:02:59,769 --> 01:03:01,750 ¿Qué funcionalidades tenemos? 1450 01:03:01,869 --> 01:03:03,590 ¿Tenemos hecha la de asignar alumno a empresa? 1451 01:03:03,710 --> 01:03:04,670 Para ponerla en la vista 1452 01:03:04,670 --> 01:03:06,309 Vamos a ver 1453 01:03:06,309 --> 01:03:08,989 Tenemos asignar a empresa alumno 1454 01:03:08,989 --> 01:03:10,989 Vale, vamos a asignar a empresa alumno ahora ya desde la interfaz 1455 01:03:10,989 --> 01:03:13,510 vale, asignar a empresa alumno 1456 01:03:13,510 --> 01:03:15,409 vamos a suponer que eso, el usuario 1457 01:03:15,409 --> 01:03:17,829 el que me ha pedido la aplicación 1458 01:03:17,829 --> 01:03:19,750 lo quiere 1459 01:03:19,750 --> 01:03:20,389 hacer 1460 01:03:20,389 --> 01:03:23,630 claro, tenemos que consensuar con él 1461 01:03:23,630 --> 01:03:25,530 el prototipo, y me dice, oye lo quiero hacer 1462 01:03:25,530 --> 01:03:26,550 desde el panel de empresas 1463 01:03:26,550 --> 01:03:28,849 en el panel de empresas yo te voy a dar 1464 01:03:28,849 --> 01:03:30,869 el código de empresa 1465 01:03:30,869 --> 01:03:32,409 el código de 1466 01:03:32,409 --> 01:03:35,670 sede, el código de alumno y tú lo asignas 1467 01:03:35,670 --> 01:03:37,570 pues tendremos que meter textfield 1468 01:03:37,570 --> 01:03:39,050 3 textfield 1469 01:03:39,050 --> 01:03:40,949 entonces primero al panel de empresas 1470 01:03:40,949 --> 01:03:43,469 el panel de empresas le vamos a poner 1471 01:03:43,469 --> 01:03:45,269 un layout absoluto 1472 01:03:45,269 --> 01:03:47,090 antes de nada 1473 01:03:47,090 --> 01:03:49,050 y ahora al panel de empresas 1474 01:03:49,050 --> 01:03:51,070 vamos a ponerlos 1475 01:03:51,070 --> 01:03:52,610 como no voy a poner etiquetas para no liarnos 1476 01:03:52,610 --> 01:03:55,070 en el orden en que están en el método 1477 01:03:55,070 --> 01:03:57,130 en el método asignar 1478 01:03:57,130 --> 01:03:59,130 empresa alumno está primero código 1479 01:03:59,130 --> 01:04:01,050 de empresa, código de sede y luego el 1480 01:04:01,050 --> 01:04:02,550 NIA del alumno 1481 01:04:02,550 --> 01:04:07,400 pues venga, vamos a poner 1482 01:04:07,400 --> 01:04:09,659 un textfield para 1483 01:04:09,659 --> 01:04:11,059 el código de empresa 1484 01:04:11,059 --> 01:04:12,659 Vale 1485 01:04:12,659 --> 01:04:14,619 Lo voy a llamar 1486 01:04:14,619 --> 01:04:18,739 Aquí habría que usar nombres más largos 1487 01:04:18,739 --> 01:04:20,739 Que se distinguiera mejor en qué panel estás, etc 1488 01:04:20,739 --> 01:04:23,000 Vale, ahora otro text field 1489 01:04:23,000 --> 01:04:24,159 Para el código de sede 1490 01:04:24,159 --> 01:04:25,380 Aquí abajo 1491 01:04:25,380 --> 01:04:28,619 ¿Ya habéis tenido bastante? 1492 01:04:30,460 --> 01:04:30,940 Vale 1493 01:04:30,940 --> 01:04:34,460 Código de sede 1494 01:04:34,460 --> 01:04:38,059 Y ahora otro text field 1495 01:04:38,059 --> 01:04:39,559 Para el NIA del alumno 1496 01:04:39,559 --> 01:04:46,400 NIA 1497 01:04:46,400 --> 01:04:49,420 Sí, es verdad 1498 01:04:49,420 --> 01:04:50,860 Código de sede 1499 01:04:50,860 --> 01:04:52,079 Empresa 1500 01:04:52,079 --> 01:04:55,619 Alumnos 1501 01:04:55,619 --> 01:04:59,800 Vale, y ahora vamos a poner el botón 1502 01:04:59,800 --> 01:05:00,780 Para asignar 1503 01:05:00,780 --> 01:05:04,000 Adiós 1504 01:05:04,000 --> 01:05:06,960 Para asignar 1505 01:05:06,960 --> 01:05:07,739 Alumnos a empresa 1506 01:05:07,739 --> 01:05:10,159 Pues venga, este botoncito 1507 01:05:10,159 --> 01:05:13,780 Asigna 1508 01:05:13,780 --> 01:05:16,320 Empresa 1509 01:05:16,320 --> 01:05:22,050 A alumnos 1510 01:05:22,050 --> 01:05:23,230 Ala 1511 01:05:23,230 --> 01:05:24,630 Pues entonces 1512 01:05:24,630 --> 01:05:27,070 Con estos tres datos es suficiente 1513 01:05:27,070 --> 01:05:29,610 Código de empresa, código de sede y línea del alumno 1514 01:05:29,610 --> 01:05:31,469 No hacen falta más datos para asignar 1515 01:05:31,469 --> 01:05:32,690 Un alumno a una empresa 1516 01:05:32,690 --> 01:05:34,929 Ahora hay que hacer la funcionalidad del botón 1517 01:05:34,929 --> 01:05:36,869 Pues venga 1518 01:05:36,869 --> 01:05:39,050 Como es el evento por defecto 1519 01:05:39,050 --> 01:05:39,769 Pues ala 1520 01:05:39,769 --> 01:05:44,300 Y ahora, ¿qué hay que hacer aquí? 1521 01:05:44,960 --> 01:05:47,599 Pues cogemos los tres datos y vamos al método correspondiente 1522 01:05:47,599 --> 01:05:49,280 Entonces 1523 01:05:49,280 --> 01:05:51,039 Los datos serán 1524 01:05:51,039 --> 01:05:52,900 El código 1525 01:05:52,900 --> 01:05:54,280 De la empresa 1526 01:05:54,280 --> 01:05:57,159 El código de la empresa está en ese textfield 1527 01:05:57,159 --> 01:05:58,579 Que se llamaba 1528 01:05:58,579 --> 01:06:00,119 CodeEmpresa 1529 01:06:00,119 --> 01:06:07,809 CodeEmpresa.gectest 1530 01:06:07,809 --> 01:06:11,150 Ya tengo el código de empresa 1531 01:06:11,150 --> 01:06:12,769 Ahora el código de sede 1532 01:06:12,769 --> 01:06:15,429 A la que asigno ese alumno 1533 01:06:15,429 --> 01:06:17,469 El código de sede está 1534 01:06:17,469 --> 01:06:19,409 En el textfield que he llamado 1535 01:06:19,409 --> 01:06:27,070 CodeSede.gectest 1536 01:06:28,309 --> 01:06:34,179 Vale 1537 01:06:34,179 --> 01:06:34,900 A ver 1538 01:06:34,900 --> 01:06:37,880 Type mismatch 1539 01:06:37,880 --> 01:06:40,139 Ah bueno, claro, pero lo tengo que convertir a entero 1540 01:06:40,139 --> 01:06:41,800 Claro, porque esto tendré que hacerle 1541 01:06:41,800 --> 01:06:43,400 Un integer.parseIn 1542 01:06:43,400 --> 01:06:44,840 Porque el string me lo da en 1543 01:06:44,840 --> 01:06:48,039 En 1544 01:06:48,039 --> 01:06:53,760 Code empresa 1545 01:06:53,760 --> 01:06:56,280 Punto get test 1546 01:06:56,280 --> 01:06:56,780 Ala 1547 01:06:56,780 --> 01:06:59,500 Convertido a entero 1548 01:06:59,500 --> 01:07:00,559 Integrer parsing 1549 01:07:00,559 --> 01:07:03,840 Code empresa se llama 1550 01:07:03,840 --> 01:07:06,940 Vale, lo mismo con el otro 1551 01:07:06,940 --> 01:07:19,610 Integrer parsing 1552 01:07:19,610 --> 01:07:20,829 Y este me dice 1553 01:07:20,829 --> 01:07:23,889 Get test to the primitive 1554 01:07:23,889 --> 01:07:25,929 On the primitive type 1555 01:07:25,929 --> 01:07:27,750 Es que no se llama code sede, debe ser 1556 01:07:27,750 --> 01:07:29,789 A ver como se llama 1557 01:07:29,789 --> 01:07:32,469 Sí, el text field se llama coccede 1558 01:07:32,469 --> 01:07:39,199 Ah, porque les he llamado igual a las 1559 01:07:39,199 --> 01:07:41,840 A las variables estas 1560 01:07:41,840 --> 01:07:42,239 Vale 1561 01:07:42,239 --> 01:07:45,980 Ala, y ahora cojo el nia del alumno 1562 01:07:45,980 --> 01:07:47,300 Que es mi string 1563 01:07:47,300 --> 01:07:49,719 Nia 1564 01:07:49,719 --> 01:07:50,760 Alumno 1565 01:07:50,760 --> 01:07:52,280 Lo cojo de 1566 01:07:52,280 --> 01:07:55,639 Mi text field que se llama 1567 01:07:55,639 --> 01:07:56,960 Nia alumno 1568 01:07:56,960 --> 01:07:59,559 Los nombres están fatal elegidos pero todo es por 1569 01:07:59,559 --> 01:08:00,739 Rapidez 1570 01:08:00,739 --> 01:08:03,199 Nia alumno creo que se llamaba 1571 01:08:03,199 --> 01:08:10,400 Nia, alumno con minúscula 1572 01:08:10,400 --> 01:08:13,480 ¿Dónde estoy? 1573 01:08:14,039 --> 01:08:14,340 Ahí 1574 01:08:14,340 --> 01:08:23,359 ¡Hala! 1575 01:08:23,720 --> 01:08:24,260 Y ahora ya 1576 01:08:24,260 --> 01:08:24,960 Tengo algún 1577 01:08:24,960 --> 01:08:26,319 Ahora ya llamo a la lógica 1578 01:08:26,319 --> 01:08:27,659 Bueno, pues 1579 01:08:27,659 --> 01:08:29,479 Yo tengo un método 1580 01:08:29,479 --> 01:08:30,800 Estático 1581 01:08:30,800 --> 01:08:31,840 En repositorio 1582 01:08:31,840 --> 01:08:33,859 Que me permite 1583 01:08:33,859 --> 01:08:35,020 Asignar 1584 01:08:35,020 --> 01:08:35,979 Un alumno 1585 01:08:35,979 --> 01:08:36,539 A una empresa 1586 01:08:36,539 --> 01:08:37,619 Este de aquí 1587 01:08:37,619 --> 01:08:40,539 Pasándole los datos 1588 01:08:40,539 --> 01:08:41,039 Pues venga 1589 01:08:41,039 --> 01:08:41,840 Código de empresa 1590 01:08:41,840 --> 01:08:42,720 Código de sede 1591 01:08:42,720 --> 01:08:43,939 Y Nia de alumno 1592 01:08:43,939 --> 01:08:44,579 ¿Vale? 1593 01:08:45,159 --> 01:08:45,699 Ya está 1594 01:08:45,699 --> 01:08:46,739 Pero claro 1595 01:08:46,739 --> 01:08:48,180 Este método 1596 01:08:48,180 --> 01:08:49,880 me está diciendo, eh, ojo 1597 01:08:49,880 --> 01:08:52,239 que como no existe 1598 01:08:52,239 --> 01:08:53,939 el alumno con este NIA 1599 01:08:53,939 --> 01:08:56,300 porque el que ha metido los datos lo ha metido mal, que puede ocurrir 1600 01:08:56,300 --> 01:08:58,159 o porque no existe esta 1601 01:08:58,159 --> 01:09:00,180 empresa y esta sede, porque es lo que puede ocurrir 1602 01:09:00,180 --> 01:09:01,840 que uno mete los datos mal el usuario 1603 01:09:01,840 --> 01:09:04,500 cuidado que como no existe voy a lanzar una excepción 1604 01:09:04,500 --> 01:09:06,239 es lo que nos está diciendo 1605 01:09:06,239 --> 01:09:08,199 claro, es que 1606 01:09:08,199 --> 01:09:10,000 este método está muy bien programado 1607 01:09:10,000 --> 01:09:12,520 está programado haciendo todas las verificaciones 1608 01:09:12,520 --> 01:09:14,180 para que si el usuario ha metido mal 1609 01:09:14,180 --> 01:09:16,000 los datos, se avise 1610 01:09:16,000 --> 01:09:18,000 está bien programado porque está avisando 1611 01:09:18,000 --> 01:09:20,079 y ahora esta 1612 01:09:20,079 --> 01:09:22,020 el que hace la vista te lo dice 1613 01:09:22,020 --> 01:09:24,579 uuuh, cuidado, pues voy a hacer los try-catch 1614 01:09:24,579 --> 01:09:25,479 correspondientes 1615 01:09:25,479 --> 01:09:28,220 venga, ala 1616 01:09:28,220 --> 01:09:29,399 yo tengo aquí mis try-catch 1617 01:09:29,399 --> 01:09:32,640 y ahora, intento hacerlo 1618 01:09:32,640 --> 01:09:34,539 que ha habido 1619 01:09:34,539 --> 01:09:36,380 una excepción por empresa 1620 01:09:36,380 --> 01:09:38,560 o por alumno, pues aviso 1621 01:09:38,560 --> 01:09:40,880 con el hot-option panel, lo que pasa es que el try-multi-catch 1622 01:09:40,880 --> 01:09:42,800 es muy feo 1623 01:09:42,800 --> 01:09:44,460 porque no te permite aquí 1624 01:09:44,460 --> 01:09:46,539 distinguir, tendrías que hacer un e1 o get-source 1625 01:09:46,539 --> 01:09:47,840 a mí me gustan más 1626 01:09:47,840 --> 01:09:51,340 el try-catch 1627 01:09:51,340 --> 01:09:52,000 separado 1628 01:09:52,000 --> 01:09:53,460 entonces voy a 1629 01:09:53,460 --> 01:09:54,739 un momentito 1630 01:09:54,739 --> 01:09:57,979 sí, o sea es que hay 1631 01:09:57,979 --> 01:09:59,479 diferentes try-catch 1632 01:09:59,479 --> 01:10:01,859 claro, ese 1633 01:10:01,859 --> 01:10:03,720 es decir 1634 01:10:03,720 --> 01:10:05,760 tú puedes 1635 01:10:05,760 --> 01:10:08,140 capturarlas por separado con varios catch 1636 01:10:08,140 --> 01:10:09,979 catch una excepción, catch otra, catch otra 1637 01:10:09,979 --> 01:10:12,020 y así en cada una distingues, o está el multi-catch 1638 01:10:12,020 --> 01:10:14,060 que te dice catch cualquiera de ellas separadas por oro 1639 01:10:14,060 --> 01:10:14,960 el que me ha salido antes 1640 01:10:14,960 --> 01:10:17,159 este de aquí 1641 01:10:17,159 --> 01:10:18,899 el multicatch 1642 01:10:18,899 --> 01:10:20,979 entonces en este 1643 01:10:20,979 --> 01:10:23,699 sea esta 1644 01:10:23,699 --> 01:10:25,720 o sea esta otra 1645 01:10:25,720 --> 01:10:26,899 se mete aquí 1646 01:10:26,899 --> 01:10:29,579 entonces si tú quieres distinguir por dónde se ha metido 1647 01:10:29,579 --> 01:10:31,260 si por esta o por esta 1648 01:10:31,260 --> 01:10:33,060 tienes que irte al objeto E1 1649 01:10:33,060 --> 01:10:35,739 y hacerle un get source o un get class 1650 01:10:35,739 --> 01:10:37,520 a ver cuál es, no merece la pena 1651 01:10:37,520 --> 01:10:39,260 es más bonito, a mí me gusta más 1652 01:10:39,260 --> 01:10:43,500 hacer un try catch 1653 01:10:43,500 --> 01:10:44,260 separado 1654 01:10:44,260 --> 01:10:46,600 hacer esto 1655 01:10:46,600 --> 01:10:51,529 Exacto, pero vamos, que eso también va en gustos 1656 01:10:51,529 --> 01:10:53,729 Y también depende de si tú lo quieres distinguir o no 1657 01:10:53,729 --> 01:10:55,149 Con tus mensajitos 1658 01:10:55,149 --> 01:10:57,229 Entonces yo aquí querría distinguirlo 1659 01:10:57,229 --> 01:10:58,350 Y quería decirle, oye 1660 01:10:58,350 --> 01:11:01,409 Que la empresa que me has dado está mal 1661 01:11:01,409 --> 01:11:05,000 Entonces yo aquí le diría 1662 01:11:05,000 --> 01:11:12,939 Empresa o sede 1663 01:11:12,939 --> 01:11:14,899 Aquí es que claro 1664 01:11:14,899 --> 01:11:16,420 He hecho una excepción para ambos casos 1665 01:11:16,420 --> 01:11:18,239 Porque si no teníais que hacer un montón de cosas 1666 01:11:18,239 --> 01:11:20,159 Empresa o sede 1667 01:11:20,159 --> 01:11:22,840 Errónea, que revise la empresa y la sede 1668 01:11:22,840 --> 01:11:23,640 Porque una de ellas está mal 1669 01:11:23,640 --> 01:11:26,359 y ahora, aquí lo mismo 1670 01:11:26,359 --> 01:11:28,539 pero aquí le diré, nia de alumno erróneo 1671 01:11:28,539 --> 01:11:47,939 nia 1672 01:11:47,939 --> 01:11:55,319 erróneo, vale, y esta sería 1673 01:11:55,319 --> 01:11:56,439 la forma en la que lo haríamos 1674 01:11:56,439 --> 01:11:59,340 aquí, a diferencia del método 1675 01:11:59,340 --> 01:12:01,239 anterior, en lugar de saltar el 1676 01:12:01,239 --> 01:12:02,460 jActionPanel con el false 1677 01:12:02,460 --> 01:12:04,180 salta dentro del catch 1678 01:12:04,180 --> 01:12:07,079 entonces yo ahora si pruebo esto 1679 01:12:07,079 --> 01:12:08,920 como no tenemos empresas asignadas 1680 01:12:08,920 --> 01:12:10,819 el único error que me puede salir, o sea 1681 01:12:10,819 --> 01:12:12,619 este me va a salir todo el rato 1682 01:12:12,619 --> 01:12:15,100 o sea, porque no tenemos todavía 1683 01:12:15,100 --> 01:12:17,159 puesta 1684 01:12:17,159 --> 01:12:19,279 tenemos para insertar alumnos 1685 01:12:19,279 --> 01:12:21,819 esto sí, yo puedo insertar un alumno 1686 01:12:21,819 --> 01:12:23,420 Pepito 1687 01:12:23,420 --> 01:12:29,060 y el alumno ya está dentro 1688 01:12:29,060 --> 01:12:30,079 vale 1689 01:12:30,079 --> 01:12:31,279 pero 1690 01:12:31,279 --> 01:12:34,520 si yo pongo aquí, como no tengo 1691 01:12:34,520 --> 01:12:36,840 la funcionalidad de meter empresas, me va a tener 1692 01:12:36,840 --> 01:12:38,859 que decir que no encuentra la empresa 1693 01:12:38,859 --> 01:12:41,000 vale 1694 01:12:41,000 --> 01:12:44,029 aunque 1695 01:12:44,029 --> 01:12:46,710 asignar empresa 1696 01:12:46,710 --> 01:12:48,270 pues me dice empresa sederronia 1697 01:12:48,270 --> 01:12:49,989 pero claro, porque es que no he podido meterle 1698 01:12:49,989 --> 01:12:50,869 no tengo empresas 1699 01:12:50,869 --> 01:12:54,189 no tengo empresas metidas porque no tengo 1700 01:12:54,189 --> 01:12:55,890 esa funcionalidad en la vista 1701 01:12:55,890 --> 01:12:56,989 para poder meterlas 1702 01:12:56,989 --> 01:13:01,670 ¿vale? y me está saliendo 1703 01:13:01,670 --> 01:13:03,789 esto rojo es el print de extract trace 1704 01:13:03,789 --> 01:13:05,489 este rojo 1705 01:13:05,489 --> 01:13:07,590 de aquí es esto 1706 01:13:07,590 --> 01:13:09,710 en tiempo 1707 01:13:09,710 --> 01:13:11,289 de desarrollo yo querré que esté 1708 01:13:11,289 --> 01:13:13,449 porque pueden salir errores 1709 01:13:13,449 --> 01:13:15,170 que yo no sé por qué y el 1710 01:13:15,170 --> 01:13:16,970 joptionpanel es que no me dice nada 1711 01:13:16,970 --> 01:13:19,390 quien me dice es este, es el que me está 1712 01:13:19,390 --> 01:13:21,390 diciendo, uh, cuidado que está pasando esto 1713 01:13:21,390 --> 01:13:23,329 en esta línea, es el que me avisa 1714 01:13:23,329 --> 01:13:25,050 en tiempo de desarrollo, pero cuando yo ya entregue 1715 01:13:25,050 --> 01:13:30,340 hombre, a ver 1716 01:13:30,340 --> 01:13:32,760 tú alguna vez no has entrado 1717 01:13:32,760 --> 01:13:34,920 en la sede electrónica de alguna administración 1718 01:13:34,920 --> 01:13:36,640 y no te ha salido esto mismo 1719 01:13:36,640 --> 01:13:38,180 en rojo pero en negro en la pantalla 1720 01:13:38,180 --> 01:13:40,979 seguro que alguna vez te ha salido 1721 01:13:40,979 --> 01:13:44,760 depende 1722 01:13:44,760 --> 01:13:48,579 si no han 1723 01:13:48,579 --> 01:13:50,699 comentado el print 1724 01:13:50,699 --> 01:13:52,779 de extract trace y no han cerrado 1725 01:13:52,779 --> 01:13:54,699 el recurso de consola del servidor 1726 01:13:54,699 --> 01:13:55,899 que tiene desplegada la aplicación 1727 01:13:55,899 --> 01:13:58,420 te va a salir eso, y a veces 1728 01:13:58,420 --> 01:13:59,180 yo me lo he encontrado 1729 01:13:59,180 --> 01:14:02,819 solito una aplicación y de repente me encuentro 1730 01:14:02,819 --> 01:14:04,840 en mi pantalla de mi navegador 1731 01:14:04,840 --> 01:14:06,840 eso, me encuentro eso 1732 01:14:06,840 --> 01:14:07,539 pero en negro 1733 01:14:07,539 --> 01:14:12,079 claro, es que esa es la idea 1734 01:14:12,079 --> 01:14:14,760 eso es como se hace, o sea, tú aquí habría que hacer 1735 01:14:14,760 --> 01:14:15,760 un fichero de log 1736 01:14:15,760 --> 01:14:18,420 pero claro, con la librería de log te haces un fichero 1737 01:14:18,420 --> 01:14:20,300 lo configuras y aquí en lugar de un print 1738 01:14:20,300 --> 01:14:22,180 de extract trace, tú aquí harías 1739 01:14:22,180 --> 01:14:23,640 con ese fichero log 1740 01:14:23,640 --> 01:14:26,199 y pondrías ya esto mismo 1741 01:14:26,199 --> 01:14:28,119 si quieres, lo que tú quieras 1742 01:14:28,119 --> 01:14:30,239 pues te harías un fichero de log 1743 01:14:30,239 --> 01:14:32,180 que había que hacerlo y luego ya 1744 01:14:32,180 --> 01:14:34,279 con el método log le pasas esto 1745 01:14:34,279 --> 01:14:38,260 claro, o le pasas 1746 01:14:38,260 --> 01:14:39,340 esto directamente 1747 01:14:39,340 --> 01:14:41,819 o te pones ahí el mensaje que tú quieras 1748 01:14:41,819 --> 01:14:44,079 según lo que tú creas que te vas a enterar mejor 1749 01:14:44,079 --> 01:14:46,399 claro, la idea efectivamente es derivarlo 1750 01:14:46,399 --> 01:14:48,260 a un fichero de log, a un archivo de log 1751 01:14:48,260 --> 01:14:49,640 pero no dejarlo así 1752 01:14:49,640 --> 01:14:50,920 directamente 1753 01:14:50,920 --> 01:14:53,680 uy tenía esto enchufado pero con esto bajado 1754 01:14:53,680 --> 01:14:54,859 vale 1755 01:14:54,859 --> 01:14:56,340 pero no dejarlo así 1756 01:14:56,340 --> 01:14:59,439 porque hay que tener cuidado porque luego en función de como 1757 01:14:59,439 --> 01:15:00,739 esté el servidor configurado 1758 01:15:00,739 --> 01:15:03,279 esa consola puede estar saliendo 1759 01:15:03,279 --> 01:15:05,140 por el servlet del 1760 01:15:05,140 --> 01:15:06,699 o sea esto luego 1761 01:15:06,699 --> 01:15:08,640 si está en una aplicación web me refiero 1762 01:15:08,640 --> 01:15:09,220 bueno es que 1763 01:15:09,220 --> 01:15:12,779 se monta en un servlet y ese servlet puede estar conectado 1764 01:15:12,779 --> 01:15:14,699 y como esté el print stress 1765 01:15:14,699 --> 01:15:16,260 va a salir y es que yo me lo he encontrado 1766 01:15:16,260 --> 01:15:18,779 en definitiva que esto en tiempo 1767 01:15:18,779 --> 01:15:20,840 de desarrollo es muy útil, pero 1768 01:15:20,840 --> 01:15:22,939 cuando tú entregas la aplicación, nunca lo entregas 1769 01:15:22,939 --> 01:15:24,760 con esto, porque es muy peligroso, cuando tú la 1770 01:15:24,760 --> 01:15:26,859 entregas, efectivamente, si lo has 1771 01:15:26,859 --> 01:15:28,199 hecho bien, lo que tendrás será 1772 01:15:28,199 --> 01:15:30,819 llamadas archivos de logs, y un 1773 01:15:30,819 --> 01:15:31,899 archivo de logs se quedará 1774 01:15:31,899 --> 01:15:34,840 y si hay problemas, te vas al archivo de logs 1775 01:15:34,840 --> 01:15:36,659 y lo ves ahí, pero no lo ve el usuario 1776 01:15:36,659 --> 01:15:38,520 obviamente, lo ve el técnico 1777 01:15:38,520 --> 01:15:40,560 porque se va ese archivo de logs a mirarlo 1778 01:15:40,560 --> 01:15:41,420 claro 1779 01:15:41,420 --> 01:15:43,300 vale 1780 01:15:43,300 --> 01:15:48,310 vale, pues nada 1781 01:15:48,310 --> 01:15:50,770 vale, entonces, esto va simplemente 1782 01:15:50,770 --> 01:15:52,470 para que lo rojo que nos ha salido en consola 1783 01:15:52,470 --> 01:15:54,670 es porque está esto aquí, si eso no estuviera 1784 01:15:54,670 --> 01:15:56,689 pues no nos habría salido nada en la consola, lógicamente 1785 01:15:56,689 --> 01:15:58,989 si yo ejecuto la aplicación 1786 01:15:58,989 --> 01:16:00,630 y 1787 01:16:00,630 --> 01:16:02,470 asigno a empresa alumno 1788 01:16:02,470 --> 01:16:05,989 empresa o sede errónea 1789 01:16:05,989 --> 01:16:08,130 pero aquí no hay nada en rojo 1790 01:16:08,130 --> 01:16:10,250 entonces claro, en tiempo de desarrollo 1791 01:16:10,250 --> 01:16:12,670 yo tendría un problema, diría, uy, empresa y sede errónea 1792 01:16:12,670 --> 01:16:14,689 ¿y por qué? no tengo ninguna ayuda 1793 01:16:14,689 --> 01:16:16,630 para saber por qué, entonces en tiempo 1794 01:16:16,630 --> 01:16:17,750 de desarrollo, sí 1795 01:16:17,750 --> 01:16:19,550 pondríamos esto 1796 01:16:19,550 --> 01:16:20,729 para así tener esa ayuda 1797 01:16:20,729 --> 01:16:24,109 nada que ver 1798 01:16:24,109 --> 01:16:25,090 entre tener esto 1799 01:16:25,090 --> 01:16:26,329 y no tenerlo 1800 01:16:26,329 --> 01:16:28,470 a la hora de depurar errores 1801 01:16:28,470 --> 01:16:30,250 vale 1802 01:16:30,250 --> 01:16:32,779 bueno 1803 01:16:32,779 --> 01:16:34,319 pues 1804 01:16:34,319 --> 01:16:37,199 la idea es esa 1805 01:16:37,199 --> 01:16:38,739 pues completar funcionalidades 1806 01:16:38,739 --> 01:16:39,760 de esta aplicación 1807 01:16:39,760 --> 01:16:40,359 de otras 1808 01:16:40,359 --> 01:16:41,140 a ver 1809 01:16:41,140 --> 01:16:42,460 no os olvidéis 1810 01:16:42,460 --> 01:16:42,979 del tema 1811 01:16:42,979 --> 01:16:44,180 de que este modelo 1812 01:16:44,180 --> 01:16:45,859 no tiene 1813 01:16:45,859 --> 01:16:47,899 herencia 1814 01:16:47,899 --> 01:16:50,100 e implementación de clases propias 1815 01:16:50,100 --> 01:16:51,380 pero podría haber a lo mejor 1816 01:16:51,380 --> 01:16:54,340 una clase alumno y luego dos tipos de alumnos 1817 01:16:54,340 --> 01:16:55,779 entonces el modelo pues dos alumnos 1818 01:16:55,779 --> 01:16:57,819 que implementan la interfaz alumno o que heredan 1819 01:16:57,819 --> 01:17:00,340 y eso que nos permitiría 1820 01:17:00,340 --> 01:17:02,180 tener a todos los alumnos 1821 01:17:02,180 --> 01:17:03,260 en el mismo set 1822 01:17:03,260 --> 01:17:06,840 pero luego si yo lo recorro 1823 01:17:06,840 --> 01:17:08,500 cada alumno en función del tipo 1824 01:17:08,500 --> 01:17:09,039 que fuera 1825 01:17:09,039 --> 01:17:11,560 pues funcionaría de una forma o funcionaría de otra 1826 01:17:11,560 --> 01:17:14,140 que esa es la ventaja de la herencia y las interfaces 1827 01:17:14,140 --> 01:17:16,359 que yo podría seguirlos teniendo todos 1828 01:17:16,359 --> 01:17:19,720 en el mismo set, todos irían ahí 1829 01:17:19,720 --> 01:17:23,319 todos irían en este set 1830 01:17:23,319 --> 01:17:25,880 pero dentro de este set podría tener 1831 01:17:25,880 --> 01:17:28,000 alumno FP, alumno no sé qué 1832 01:17:28,000 --> 01:17:30,079 cada uno con sus propias 1833 01:17:30,079 --> 01:17:31,439 versiones de métodos 1834 01:17:31,439 --> 01:17:34,060 ¿vale? bueno, pues todo eso no os olvidéis 1835 01:17:34,060 --> 01:17:35,939 porque es que eso es el meollo de la 1836 01:17:35,939 --> 01:17:36,399 programación 1837 01:17:36,399 --> 01:17:41,409 a ver, no, lo orientaremos a uno 1838 01:17:41,409 --> 01:17:42,369 más grande y ya está 1839 01:17:42,369 --> 01:17:44,149 ¿vale? 1840 01:17:46,800 --> 01:17:48,460 pues bueno, alguna