1 00:00:03,569 --> 00:00:07,389 Vale, espero que se me oiga bien, que estoy en el exterior. 2 00:00:08,869 --> 00:00:14,650 Voy a continuar con la siguiente parte de la solución que no había podido hacer hasta ahora. 3 00:00:15,189 --> 00:00:20,629 Estoy en la página de GitHub, estoy en otro ordenador y quiero clonarlo y seguir trabajando. 4 00:00:21,449 --> 00:00:27,690 Entonces me voy aquí a Code, digo por SSH porque yo me conecto por SSH, 5 00:00:27,690 --> 00:00:34,289 pero lo normal es que os conectéis en Windows por HTTPS, lo copio y me cambio la carpeta. 6 00:00:34,289 --> 00:00:42,649 Bueno, estoy en el directorio donde está el NetBeans Projects y voy a hacer un git clone 7 00:00:47,369 --> 00:00:50,750 con la url del repositorio remoto en GitHub. 8 00:00:50,750 --> 00:01:03,990 Vale, me dice que me he quedado en Ordinario y me pide mi clave para conectarme por SSH. 9 00:01:03,990 --> 00:01:13,390 Parece que la he recordado bien y ahora si yo hiciese un DIR de, creo que Ordinario es 10 00:01:13,390 --> 00:01:24,709 con mayúsculas y de ord asterisco ahí están las cuatro carpetas que hay dentro de ordinario 11 00:01:31,370 --> 00:01:38,090 y cambia de windows al inu ls-la vale aquí en este ordenador tengo cuatro proyectos y 12 00:01:38,090 --> 00:01:44,030 está el ordinario que es de ahora mismo de junio así que me voy al netbeans 13 00:01:45,530 --> 00:01:50,129 le digo en file open project y quiero abrir el proyecto 14 00:01:50,129 --> 00:01:52,989 ordinario 15 00:01:52,989 --> 00:01:59,250 me dice hay problemas porque no tiene el jdbc 16 00:02:01,250 --> 00:02:06,930 y si lo tengo lo tendría aquí y yo creo que no lo tengo 17 00:02:09,090 --> 00:02:12,810 vale en el siguiente bueno simplemente voy a la página donde lo había 18 00:02:12,810 --> 00:02:19,210 descargado antes, me lo descargo y lo añado al proyecto y ya debería funcionar, voy a 19 00:02:19,210 --> 00:02:30,659 intentarlo mientras. Vale, estaba aquí solo que no lo veía, entro en la carpeta y busco 20 00:02:30,659 --> 00:02:36,840 el archivo .jar, le digo open, me dice que el problema ya ha sido resuelto, hago close 21 00:02:36,840 --> 00:02:43,960 y si os fijáis aquí tengo los mismos archivos que tenía en el otro vídeo. ¿Qué voy a 22 00:02:43,960 --> 00:02:53,340 hacer ahora lo que me faltaba? Me faltaba por hacer dentro del menú principal varias 23 00:02:53,340 --> 00:02:57,539 opciones. Y aparte encontré un error el otro día hablando con José. Vale, dentro del 24 00:02:57,539 --> 00:03:02,860 menú principal me faltaban la opción 3, 4 y 5, que son mostrar el número de autoras 25 00:03:02,860 --> 00:03:09,180 por país de residencia, mostrar el campo de trabajo y añadir una autora. Aquí había 26 00:03:09,180 --> 00:03:18,219 una errata, que la cambio ya, que era simplemente añadir una autora, y el sexto que mostrar 27 00:03:18,219 --> 00:03:23,060 una autora en concreto lo tenía hecho, sí, vale, pues ahora hago el tres, cuatro y cinco 28 00:03:23,060 --> 00:03:29,080 que me falta, y había encontrado un error, que es, que en el examen me pedía que mostrara 29 00:03:29,080 --> 00:03:35,139 una autora, y no lo estaba haciendo, así que ahora añadiré una opción al menú, 30 00:03:35,139 --> 00:03:42,099 que, esto lo que me pasó, si la tengo pero no la tenía hecho, mostraron la autora en 31 00:03:42,099 --> 00:03:48,460 conjunto, vale, pues ahora la hago, a ver si la tengo, no, lo que me pasaba es que pensaba 32 00:03:48,460 --> 00:03:51,840 que me la había olvidado pero no me la había olvidado, pero sí, tengo un error, os lo 33 00:03:51,840 --> 00:03:59,919 cuento, me voy a esta función, me pedía en el enunciado que mostrara los datos de 34 00:03:59,919 --> 00:04:10,199 autora y en qué trabaja. Entonces aquí cuando imprimo que hace un system out del toString 35 00:04:10,199 --> 00:04:22,160 de la autora encontrada, debería hacer también un autora.encontrada, se llama, ¿no? Autora 36 00:04:22,160 --> 00:04:34,500 encontrada, punto crea, creo recordar que era así, un punto de juicio guardo y lo tengo 37 00:04:34,500 --> 00:04:39,500 que ejecutar, pero no tengo aquí la base de datos, así que ahora no lo puedo ejecutar, 38 00:04:39,579 --> 00:05:01,800 me va a llevar un rato. Gracias, pausa el vídeo. Bien, ya he vuelto, he creado la, 39 00:05:03,240 --> 00:05:06,819 o sea, he arrancado la máquina virtual, he creado la base de datos y he modificado las 40 00:05:06,819 --> 00:05:12,300 cosas que he dicho que iba a modificar en el código. ¿Qué he modificado? Bueno, estoy 41 00:05:12,300 --> 00:05:17,680 modificando un mensaje aquí al final para que me imprima a qué base de datos me estoy 42 00:05:17,680 --> 00:05:33,639 conectando y en qué IP me estoy conectando. Y aquí yo quería poner unos puntillos. Se 43 00:05:33,639 --> 00:05:35,639 Me olvido antes de empezar a grabar. 44 00:05:42,639 --> 00:05:44,639 Voy a enseñar las últimas ediciones. 45 00:05:44,639 --> 00:05:48,639 He visto un botón por aquí que era para volver al último que has editado. 46 00:05:53,639 --> 00:05:57,639 Esta barra de aquí he visto que son para moverte donde habías estado. 47 00:05:59,639 --> 00:06:01,639 Lo último que edité, vale, añadir los puntos. 48 00:06:01,639 --> 00:06:10,720 puntos. Y lo último que edité, la base de datos, y he añadido que puedo poner una letra 49 00:06:10,720 --> 00:06:16,220 R cuando me conecto a la base de datos porque estoy en otro sitio y me pone otra IP. Entonces 50 00:06:16,220 --> 00:06:22,660 le permito una R, que yo me acuerdo, y si hay una H se mete en la de Home, una I en 51 00:06:22,660 --> 00:06:26,399 IES y cualquier otra letra, aunque solo me va a leer R porque he estado probando a poner 52 00:06:26,399 --> 00:06:31,339 un patrón dentro del sc.next, fijaros aquí que estoy indicando que creo que le puede 53 00:06:31,339 --> 00:06:36,620 llegar es h minúscula mayúscula la y minúscula mayúscula o la r y hago un todo 54 00:06:36,620 --> 00:06:41,899 uppercase para que solamente lo compare con la mayúscula y meta lo que meta que 55 00:06:41,899 --> 00:06:47,959 va a ser una r entra en que la ip por defecto sea esta que si vuelvo al último 56 00:06:47,959 --> 00:06:53,319 que edite que fue añadir 57 00:07:01,339 --> 00:07:09,199 Aquí añadí la dirección que tengo por defecto, que es la .65, 11.65 local. 58 00:07:10,060 --> 00:07:18,379 Y lo que se me había olvidado añadir, que lo dije hace unos minutos, es el create. 59 00:07:18,939 --> 00:07:26,680 Entonces cuando estoy haciendo el mostrar una autora por id, solo me enseñaba los datos de la autora. 60 00:07:26,680 --> 00:07:32,860 Y ahora he usado la variable AutoraEncontrada para decirle que ejecute su método Crea. 61 00:07:33,740 --> 00:07:35,680 Vale, voy a ejecutar. 62 00:07:37,279 --> 00:07:38,800 Le pongo aquí para que lo veáis. 63 00:07:38,959 --> 00:07:41,579 Vale, me pregunta que si base datos. 64 00:07:41,800 --> 00:07:42,819 Le digo que sí, un 1. 65 00:07:43,459 --> 00:07:45,839 Cargando el driver, H, I, S. 66 00:07:45,959 --> 00:07:47,819 Voy a poner una R, minúscula. 67 00:07:48,740 --> 00:07:50,459 Vale, entonces me dice que conectando en ese IP. 68 00:07:50,600 --> 00:07:53,300 Lo he puesto simplemente para darme cuenta de dónde me estoy conectando. 69 00:07:53,300 --> 00:07:57,040 y se supone que después de cerrar la conexión ya tengo los datos 70 00:07:57,040 --> 00:08:01,600 si ahora muestro mis autoras, simplemente me enseñan las autoras 71 00:08:01,600 --> 00:08:05,339 sin hacer que creen, pero si muestro una autora en concreto 72 00:08:05,339 --> 00:08:09,339 voy a poner la opción 6 para mostrar la autora en concreto 73 00:08:09,339 --> 00:08:12,899 me pregunta cuál ID, le voy a decir 74 00:08:12,899 --> 00:08:17,220 la 5, entonces me describe 75 00:08:17,220 --> 00:08:21,120 el ID, aquí, Espeticia Dolera, que es directora de cine 76 00:08:21,120 --> 00:08:28,379 Entonces escribe una frase que es como soy directora de cine, creo cosas, porque llamaba a su método Crea. 77 00:08:28,899 --> 00:08:41,200 Voy a darle a salir, está todo guardado, me vuelvo aquí y voy a ver cuál es el status de mi proyecto. 78 00:08:41,200 --> 00:08:50,419 Ah, tengo que entrar, me dice que no hay ningún repositorio Git, porque si os dais cuenta estoy en la carpeta NetBeans, así que lo que tengo que entrar es en ordinario. 79 00:08:51,120 --> 00:08:53,879 ordinario, siento el coro 80 00:08:53,879 --> 00:08:55,980 de pajaritos, espero que se me oya muy bajo 81 00:08:55,980 --> 00:08:57,039 intento hablar alto 82 00:08:57,039 --> 00:08:59,620 vale, entonces ahora repito el comando 83 00:08:59,620 --> 00:09:01,919 me dice que 84 00:09:01,919 --> 00:09:03,379 he modificado varios archivos 85 00:09:03,379 --> 00:09:05,779 al compilar y al ejecutar, así que voy a hacer 86 00:09:05,779 --> 00:09:07,759 un git add de todo 87 00:09:07,759 --> 00:09:08,860 lo que hay en el proyecto 88 00:09:08,860 --> 00:09:11,500 si os fijáis, ahora está ya en verde 89 00:09:11,500 --> 00:09:13,220 porque ya lo está registrando 90 00:09:13,220 --> 00:09:15,120 le he dicho que registre sus cambios 91 00:09:15,120 --> 00:09:17,220 y ahora lo que me queda 92 00:09:17,220 --> 00:09:18,860 es hacer un commit para 93 00:09:18,860 --> 00:09:25,259 que quede guardado ese cambio en el repositorio local, en este ordenador, ¿vale? 94 00:09:25,259 --> 00:09:30,720 Pero en el ordenador de casa o del instituto no lo va a hacer, ¿vale? 95 00:09:30,980 --> 00:09:32,559 Hasta que yo ahora os lo cuento. 96 00:09:33,299 --> 00:09:34,440 Entonces, ¿qué he cambiado? 97 00:09:34,440 --> 00:09:39,940 He añadido una tercera IP. 98 00:09:39,940 --> 00:09:57,279 y al mostrar una autora, también se ejecuta su método, crea. 99 00:09:59,279 --> 00:10:06,980 Y un error menor, porque no tiene importancia en el menú, nos sobran unas letras. 100 00:10:06,980 --> 00:10:15,980 Y me da muchísima rabia cuando la primera letra de una minúscula sale de una mayúscula y se me queda en mayúscula. 101 00:10:15,980 --> 00:10:27,980 Entonces, creo que ya ha cambiado. Entonces, si yo hago un git status, me dice, fijaros aquí, que estoy en la rama main, todo está bien. 102 00:10:27,980 --> 00:10:33,980 Y mi rama está adelantada al origin main, es decir, a mi repositorio remoto. 103 00:10:33,980 --> 00:10:44,980 Si yo os enseño el Gitlog, aquí tengo un commit, que es este, le he añadido una tercera IP. 104 00:10:44,980 --> 00:10:53,980 Literalmente tengo 1, 2, 3, 4, 5, 6, 7. 105 00:10:53,980 --> 00:11:09,299 Yo lo había contado mal, pero si os veis al remoto, aunque yo actualice, es de hace una semana. 106 00:11:09,720 --> 00:11:13,419 Este commit que he hecho en mi equipo local todavía no se ve en el remoto. 107 00:11:13,940 --> 00:11:23,580 Entonces lo que tengo que hacer aquí, como ya he dicho bien en GitHub, es hacer un git push para subirlo a la nube, a mi repositorio remoto. 108 00:11:23,580 --> 00:11:43,590 me dice que está comprimiendo, que está escribiendo y que ha subido las cosas, no sé si dice las líneas modificadas, creo que no, entonces ahora refresco y fijaros como hay archivos que han cambiado, 109 00:11:43,590 --> 00:11:53,200 Entonces, por ejemplo, en SRC ordinario se ven los cambios de lo que he quitado y lo 110 00:11:53,200 --> 00:11:56,740 que he puesto, porque he recompilado, eso es una parte. 111 00:11:56,740 --> 00:12:06,100 Y otra es que he añadido el IP address default y aquí he añadido que si entro en el default 112 00:12:06,100 --> 00:12:11,940 me añade la IP por defecto y aquí he cambiado el mensaje de cuando estoy conectando para 113 00:12:11,940 --> 00:12:12,940 que tuviera más detalle. 114 00:12:12,940 --> 00:12:16,940 Y luego este era el error menor, que me di cuenta con José que podía añadir una autora 115 00:12:16,940 --> 00:12:20,940 por campo de trabajo, y no es eso, es añadir una autora. 116 00:12:20,940 --> 00:12:24,940 Esos son los cambios. Vale. Pues voy a pausar. 117 00:12:24,940 --> 00:12:33,509 Bien, he vuelto. He terminado de hacerlo todo. 118 00:12:33,509 --> 00:12:37,509 Está subido todo al Github. 119 00:12:37,509 --> 00:12:41,509 Y os quería explicar las funcionalidades que faltaban, ¿de acuerdo? 120 00:12:41,509 --> 00:12:45,509 Voy a ejecutar y luego quiero que veáis lo que pasa 121 00:12:45,509 --> 00:12:55,909 cuando cambio de commit. Bueno, yo ahora ejecuto y me pregunta si quiero leer de la base de 122 00:12:55,909 --> 00:13:02,230 datos un archivo CSV. Voy a coger de la base de datos, me pregunta, le digo que estoy aquí 123 00:13:02,230 --> 00:13:11,669 en tu sitio y es el día que me muestre mis autoras, ahí están hasta las 60. Y vale, 124 00:13:11,669 --> 00:13:17,129 me queda la opción 3 que me muestra el número de autoras por país de residencia, me muestra 125 00:13:17,129 --> 00:13:24,750 cada uno de los países que hay y el número de autoras y 4 por campo de trabajo, me muestra 126 00:13:24,750 --> 00:13:34,669 por campo de trabajo y por último me queda añadir una autora y salir, vale, voy a añadir 127 00:13:34,669 --> 00:13:49,389 una autora que me pregunta el nombre, Cristina, apellido, su nombre, alias de MR, fecha de 128 00:13:49,389 --> 00:14:06,799 nacimiento, alias de mi hostia mujer, país de la serie de España, área de trabajo, 129 00:14:06,799 --> 00:14:18,000 Si os muestro mis autoras, fijaros que en el 61 ya está Cristina, he enseñado una 130 00:14:18,000 --> 00:14:24,960 nueva, la pondré en el 62. Y lo único que me queda es ver que puedo mostrar una autora 131 00:14:24,960 --> 00:14:32,600 en concreto, aunque creo que esto estaba hecho, voy a ponerle 61. Voy a poner unas letras 132 00:14:32,600 --> 00:14:38,659 para que veáis que el menú me dice que no, que lo vuelvo a intentar y vale, me queda 133 00:14:38,659 --> 00:14:43,440 salir. Cuando voy a salir me dice que el nombre por defecto del archivo de salida, porque 134 00:14:43,440 --> 00:14:51,000 me va a guardar los datos que tengo en el CSV, es el nombre de las autoras, el nombre 135 00:14:51,000 --> 00:14:58,120 de las autoras para el archivo y me pone el día y la hora. Si pongo otro nombre lo escribo 136 00:14:58,120 --> 00:15:09,340 si lo da en intro lo guarda. Vale, ya está. Voy a ver lo que ha guardado, que está aquí, 137 00:15:11,519 --> 00:15:33,899 que sería este creo, a ver ahora, este. Fijaros, en el último estoy yo, Cristina, con mis 138 00:15:33,899 --> 00:15:40,659 datos y cuando yo lo doy a importar, se da cuenta que es un archivo que está separado 139 00:15:40,659 --> 00:15:47,799 se da cuenta que está separado por cosas, me pregunta si por tabulador, coma, punto 140 00:15:47,799 --> 00:15:56,799 y coma, y me lo separa bien. Si yo lo abriera con el editor de texto, lo que veríais es 141 00:15:56,799 --> 00:16:03,679 como antes, cada dato una coma. Cuando no hay dato, como aquí, que no tiene alias, 142 00:16:03,679 --> 00:16:08,279 pues un espacio. Vamos al código a ver cómo lo he hecho. 143 00:16:14,919 --> 00:16:29,470 y me voy al menú principal. En el menú principal he añadido una función que se llama imprimir 144 00:16:29,470 --> 00:16:34,509 número de autoras por campo x, quiere decir que le puedo preguntar por el campo 7, el 145 00:16:34,509 --> 00:16:42,669 campo 8, aquí he decidido los campos como del 1 al 8. Hay una pequeña incoherencia 146 00:16:42,669 --> 00:16:46,809 porque luego veréis que en otro lado lo hago del 0 al 7, pero ya no lo voy a cambiar. Entonces 147 00:16:46,809 --> 00:16:51,850 es la función, se llama imprimir número de autoras por campo y dependiendo del número 148 00:16:51,850 --> 00:16:58,389 que reciba, pues me imprime un resumen por el ID, por el nombre, por el apellido, en 149 00:16:58,389 --> 00:17:08,069 este caso el 7 es por el país de residencia y el 8 por el campo en el que trabaja. Vale, 150 00:17:08,069 --> 00:17:19,289 y tengo un método que se llama ADD Autora. Vamos a ver el de imprimir. El de imprimir 151 00:17:19,289 --> 00:17:26,549 utilizo que le llegue un número entero, con el número de campo, y utilizo un HashMap 152 00:17:26,549 --> 00:17:34,109 que tiene como pareja, clave, valor, string y un entero. Y primero va a recorrer toda 153 00:17:34,109 --> 00:17:42,009 a la lista de autoras y va a ir guardándolo en, aquí puse ocurrencias por campo, pero 154 00:17:42,009 --> 00:17:51,130 aquí, eso es, me he cambiado el nombre, entonces para cada autora que hay va a guardar la clave, 155 00:17:51,690 --> 00:17:56,289 intenta coger la clave con el número de campo que le llega por aquí, por ejemplo si llegaba 156 00:17:56,289 --> 00:18:02,130 un 29, intenta coger un número de campo que es un 29, pues esto va a dar un error y cuando 157 00:18:02,130 --> 00:18:07,150 de ese error va a capturar la excepción, va a imprimir que has introducido un número 158 00:18:07,150 --> 00:18:15,450 de campo tal y no seguiría imprimiendo las autoras. Haría un retorno para terminar el 159 00:18:15,450 --> 00:18:20,390 programa aunque no pueda hacerlo. Esto es una prueba que yo quería hacer y que ahora 160 00:18:20,390 --> 00:18:29,769 le enseño. Y ahora, si la clave que estoy buscando de esa autora ya está dentro guardada 161 00:18:29,769 --> 00:18:35,250 de los campos que ya he metido antes a autoras, por ejemplo, imagina que esta autora reside 162 00:18:35,250 --> 00:18:40,089 en España. Pues lo primero que compruebo es si ya he metido que hay autoras que residen 163 00:18:40,089 --> 00:18:46,670 en España. Si ya he metido el valor actual es el que tengo metido, ocurre el campo de 164 00:18:46,670 --> 00:18:54,609 clave y lo que hago es meterlo con un put en el HashMap con la clave que he obtenido 165 00:18:54,609 --> 00:18:58,430 que podía ser España, con el valor que tenía ahora mismo, más uno. 166 00:18:59,650 --> 00:19:03,509 Y si no está, lo que hago es introducir la clave con un uno. 167 00:19:04,089 --> 00:19:07,970 Entonces, cuando llego aquí, lo que he hecho es recorrer toda la lista de autoras 168 00:19:07,970 --> 00:19:15,690 y según el campo que estamos mirando, residencia, trabajo, lo que sea, ya lo ha metido. 169 00:19:16,210 --> 00:19:22,410 Y cuando llego aquí, llama a otra función que se llama imprimirHashMap, que está justo debajo, 170 00:19:22,410 --> 00:19:26,309 que se cargaba a imprimirla. Lo he hecho así pues en algún momento necesito imprimir otros 171 00:19:26,309 --> 00:19:34,109 HashMaps. Recibo un HashMap de String Integral y para todas las entradas, teniendo en cuenta 172 00:19:34,109 --> 00:19:41,589 que una entrada es lo que es una pareja de clave-valor del HashMap, para cada entrada 173 00:19:41,589 --> 00:19:53,150 que es una pareja de clave y valor, obtiene todas las parejas y para entrada, que es la 174 00:19:53,150 --> 00:19:57,970 pareja, le pregunta cuál es su clave y también para entrada le pregunta cuál es su valor 175 00:19:57,970 --> 00:20:03,450 y lo guarda en clave y valor. Lo que hace es imprimir, imprime clave y valor. Así que 176 00:20:03,450 --> 00:20:15,500 cuando estáis viendo aquí, en la base de datos, estoy y voy a administrar por el país 177 00:20:15,500 --> 00:20:21,579 de residencia, que es el 3, aquí estáis viendo Colombia es la clave y el valor es 178 00:20:21,579 --> 00:20:27,539 3 y luego Brasil es la clave y el valor es 2. Está imprimiendo un hash map en el que 179 00:20:27,539 --> 00:20:32,539 guardado todas las corrientes de cada uno de los países. 180 00:20:32,539 --> 00:20:43,920 Es un placer para cualquiera de ellos. Entonces, ¿qué ocurre? Fijaros, recordad, se llama 181 00:20:43,920 --> 00:20:48,920 imprimir número de autoras por campo, lo que hace es recorrer y ir viendo cuántas hay 182 00:20:48,920 --> 00:21:00,000 y recibe un índice. Me vuelvo al menú principal y aquí en el primer caso son 7, que son los 183 00:21:00,000 --> 00:21:11,000 países y en el otro caso es el 8. Esta parte quería que... perdón, que la mesa me suena. 184 00:21:16,140 --> 00:21:24,460 Ahora voy a probar lo mismo con los valores 1, 2, 3, 4, 5, 6, 9 y 0. Voy a ejecutar, le 185 00:21:24,460 --> 00:21:32,900 de la base de datos, le digo donde estoy para que coja el IP y le doy a la opción 4, que 186 00:21:32,900 --> 00:21:39,799 es la que estamos viendo aquí arriba, porque quiero que me lo imprima para todos los campos, 187 00:21:40,039 --> 00:21:47,380 los que existen, no 3, 4, 5, 6, pero también para el 9 y el 0 que no existen. Entonces 188 00:21:47,380 --> 00:21:56,559 si os fijáis, es un poco largo. Primero me lo hace para el campo que tenía que estar 189 00:21:56,559 --> 00:22:02,019 buscando, que era el tipo de trabajo, área de trabajo. Pero luego me lo hace para el 190 00:22:02,019 --> 00:22:07,759 ID. Y fijaros que cada uno de los IDs solo hay una ocurrencia. Luego me lo hace para 191 00:22:07,759 --> 00:22:13,660 los nombres. Sí que se repiten nombres. Hay cuatro Isabel, dos Carmen, cinco Laura, 192 00:22:13,660 --> 00:22:18,799 luego me lo hace para los apellidos, algunos se repiten 193 00:22:18,799 --> 00:22:22,920 luego me lo hace para 194 00:22:22,920 --> 00:22:30,720 aquí hay un 52 que se me ha colado 195 00:22:30,720 --> 00:22:36,480 no sé de qué, tengo que mirar 196 00:22:36,480 --> 00:22:39,460 vale, luego me lo hace para los alias 197 00:22:39,460 --> 00:22:43,599 ah, porque hay 52 que tienen alias vacío, no lo entendía 198 00:22:43,599 --> 00:22:47,900 y luego todas las fechas de nacimiento que no se repiten ninguna 199 00:22:47,900 --> 00:22:50,599 y por último los premios, esto lo estáis viendo aquí 200 00:22:50,599 --> 00:22:54,759 son cuántas personas tienen cero premios, un premio, dos premios 201 00:22:54,759 --> 00:22:58,720 vale, ah, y aquí me da un 202 00:22:58,720 --> 00:23:02,640 el error, vale 203 00:23:02,640 --> 00:23:06,680 porque, fijaros 204 00:23:06,680 --> 00:23:09,869 si 205 00:23:09,869 --> 00:23:16,039 imprimir por número de campos x 206 00:23:16,039 --> 00:23:37,089 pues que ahora me voy a ir en cacho 207 00:23:37,089 --> 00:23:40,740 ah, porque me salta 208 00:23:40,740 --> 00:23:42,599 otro que no veo 209 00:23:42,599 --> 00:23:45,259 bueno, aquí tenéis 210 00:23:45,259 --> 00:23:46,859 ha introducido el 211 00:23:46,859 --> 00:23:48,799 ah, ya, perdón 212 00:23:48,799 --> 00:23:50,119 primero, porque 213 00:23:50,119 --> 00:23:52,000 capturar la excepción 214 00:23:52,000 --> 00:23:53,000 vale 215 00:23:53,000 --> 00:23:57,200 porque estoy llamando a un método 216 00:23:57,200 --> 00:23:57,880 que se llama 217 00:23:57,880 --> 00:24:00,640 autora getCampoXString 218 00:24:00,640 --> 00:24:02,680 que lo que hace es convertir cada una de las 219 00:24:02,680 --> 00:24:03,859 campos de la autora 220 00:24:03,859 --> 00:24:05,839 la verdad, grande 221 00:24:05,839 --> 00:24:07,759 aquí, así 222 00:24:07,759 --> 00:24:10,240 yo tengo un método de la autora 223 00:24:10,240 --> 00:24:12,099 que es del campo x tu string 224 00:24:12,099 --> 00:24:13,960 entonces para cualquier número de campo 225 00:24:13,960 --> 00:24:16,519 si es el 1 me devuelve 226 00:24:16,519 --> 00:24:18,279 el id en string, si es el 2 227 00:24:18,279 --> 00:24:20,160 me devuelve el nombre 228 00:24:20,160 --> 00:24:21,960 el 3 el apellido alias y luego 229 00:24:21,960 --> 00:24:24,420 si es el cumpleaños, si es el 5 me lo convierte 230 00:24:24,420 --> 00:24:26,220 en string, lo mismo para 231 00:24:26,220 --> 00:24:28,400 todos ellos, si son los premios 232 00:24:28,400 --> 00:24:30,319 recibidos, que es este, me lo convierte 233 00:24:30,319 --> 00:24:32,200 en string, entonces me devuelve un string 234 00:24:32,200 --> 00:24:34,440 ahora, si intento convertir el campo 6 235 00:24:34,440 --> 00:24:36,680 9, 14 236 00:24:36,680 --> 00:24:38,220 25, me va a decir 237 00:24:38,220 --> 00:24:40,099 ha intentado convertir un campo 238 00:24:40,099 --> 00:24:53,799 es una parte del método de la clase autora que se llama error y luego el error que te 239 00:24:53,799 --> 00:25:04,839 dice en la clase ordinaria el método que está intentando ejecutar, que es este, el 240 00:25:04,839 --> 00:25:22,440 y vuelve al menú principal y ya hemos visto como funciona el 3 y el 4 y queda probar el 241 00:25:22,440 --> 00:25:31,240 añadir una autora. Queda ver añadir una autora. El método se llama ADDAutora, es 242 00:25:31,240 --> 00:25:37,779 que se llama en el menú principal, y lo único que hace, solo tiene una línea, ¿de acuerdo? 243 00:25:38,480 --> 00:25:44,440 Llamo a mi variable global lista de autoras, el igual de D, y a su vez llamo a un método 244 00:25:44,440 --> 00:25:50,740 que ya habíamos visto antes, que es creautora, que va pidiendo líneas para el nombre, el 245 00:25:50,740 --> 00:25:53,079 apellido, el alias, ¿vale? 246 00:25:53,079 --> 00:26:04,640 Los importantes son el de la fecha y este método que se llama NUMMAXDID, que lo que 247 00:26:04,640 --> 00:26:08,759 está obteniendo es cuál es el número ID máximo que hay en mi lista. 248 00:26:09,079 --> 00:26:14,559 Entonces, simplemente lo que hace es que me recorre toda mi lista de autoras y va buscando 249 00:26:14,559 --> 00:26:17,460 igual que había el número máximo de premios, el número máximo de ID. 250 00:26:18,000 --> 00:26:21,960 Entonces, para cada autora le pregunta y empezamos con el MAXID a cero. 251 00:26:21,960 --> 00:26:23,940 y para cada autora 252 00:26:23,940 --> 00:26:33,250 le pregunto cuál es su ID 253 00:26:33,250 --> 00:26:35,990 y si es mayor que el previo 254 00:26:35,990 --> 00:26:37,289 que había con un máximo de ID 255 00:26:37,289 --> 00:26:39,589 que inicialmente es cero, pues lo guardo 256 00:26:39,589 --> 00:26:42,430 y así voy dando vueltas y lo devuelvo 257 00:26:42,430 --> 00:26:44,390 el otro 258 00:26:44,390 --> 00:26:49,349 que tengo que irme a añadir a la autora 259 00:26:49,349 --> 00:26:52,990 vale, entonces voy a añadirlo con el siguiente ID que toque 260 00:26:52,990 --> 00:26:55,029 aunque no lo voy a meter en las datos 261 00:26:55,029 --> 00:27:04,130 para saberlo. Y es interesante el pide fecha. El pide fecha es un método que he hecho nuevo 262 00:27:04,130 --> 00:27:12,390 que utiliza, bueno yo lo he decidido a hacer así, no era necesario hacerlo así para el 263 00:27:12,390 --> 00:27:22,049 examen, pero yo lo he decidido a hacer así porque estoy investigando. Utiliza el local 264 00:27:22,049 --> 00:27:29,049 LocalDate es la manera más moderna de utilizar con las fechas, que es con una librería que 265 00:27:29,049 --> 00:27:37,089 se llama Time, que tiene LocalDate y LocalAware también, ¿vale? Entonces LocalDate trabaja 266 00:27:37,089 --> 00:27:43,789 solo con la fecha, año, mes y día. Yo voy a utilizar un patrón para que las fechas 267 00:27:43,789 --> 00:27:48,630 que me introduzcan sean este tipo, cuatro dígitos para el año, dos para el mes y dos 268 00:27:48,630 --> 00:27:54,730 para el día. Esta línea la puedo quitar porque es una cosa que estoy retomando y al final 269 00:27:54,730 --> 00:28:02,809 lo hice así. Esto es más fácil, como lo he hecho. Vale. Utilizo un formateador para 270 00:28:02,809 --> 00:28:09,009 que tenga exactamente el mismo aspecto que el del patrón, ¿vale? Y voy a estar pidiéndolo 271 00:28:09,009 --> 00:28:14,349 hasta que tenga una fecha correcta. Si me da, introducen una fecha incorrecta. Igual 272 00:28:14,349 --> 00:28:20,710 que pasa con las líneas o con los enteros, va a seguir pidiendo y lo que me dice, lo 273 00:28:20,710 --> 00:28:25,849 que me hace es pedirme una línea, ¿vale? Me pide una línea con el mismo mensaje con 274 00:28:25,849 --> 00:28:31,289 el que a mí me han pedido la fecha. Si a mí me dicen introduce fecha de nacimiento, 275 00:28:31,890 --> 00:28:36,750 yo a pide línea le digo introduce fecha de nacimiento y le añado en este formato para 276 00:28:36,750 --> 00:28:42,069 que quede bien claro el formato. Vale, cuando pide línea me devuelve el stream, yo lo que 277 00:28:42,069 --> 00:28:50,950 Lo que intento en el try es convertir la fecha que tengo en string que me ha devuelto pidelinea, 278 00:28:50,950 --> 00:28:56,690 intento convertirla siguiendo el formateador a un local date y eso lo guardo aquí en fecha 279 00:28:56,690 --> 00:28:59,569 y simplemente la devuelvo. 280 00:28:59,569 --> 00:29:10,650 Si por alguna razón al leer del teclado me introduces una fecha rara que no puede convertir 281 00:29:10,650 --> 00:29:18,210 pues sacará este mensaje. Y entonces vuelvo a la idea autora, entonces eso, me llega al 282 00:29:18,210 --> 00:29:25,990 máximo, va pidiéndome líneas para el nombre, el apellido y el alias, me pide fecha, el 283 00:29:25,990 --> 00:29:33,950 entero para pedirme los premios y pide línea. Vale, entonces ya esa parte casi está todo, 284 00:29:33,950 --> 00:29:42,490 Me falta solo, si me voy al menú, cómo guardo los datos en un CSV y cómo leo de un CSV. 285 00:29:43,630 --> 00:29:52,069 Entonces, para guardar los datos en el CSV, he creado un pequeño método que usa un freewriter. 286 00:29:52,490 --> 00:29:57,029 Entonces, por defecto, va a intentar guardar el nombre del archivo, los datos que tiene 287 00:29:57,029 --> 00:30:01,549 en la ArrayList, lo va a intentar guardar en un archivo que se va a llamar Autoras y 288 00:30:01,549 --> 00:30:07,130 le va a concatenar la fecha actual, que ya he dicho que era localDate, con el now, 289 00:30:07,509 --> 00:30:12,029 y la hora local, localTime, con el now, y además .csv, 290 00:30:12,750 --> 00:30:16,250 para asegurarme que cada vez que creo el archivo tiene un nombre diferente. 291 00:30:17,009 --> 00:30:21,309 Entonces lo voy a sacar por pantalla, en un mejor efecto del archivo es lo que acabo de hacer, 292 00:30:21,309 --> 00:30:27,609 y aún así le pido un nombre alternativo al usuario, con el método pideLínea. 293 00:30:27,869 --> 00:30:30,170 Le digo, introduce otro nombre, pulsa Enter. 294 00:30:30,170 --> 00:30:36,930 entonces si le da enter lo que me va a devolver es un string vacío 295 00:30:36,930 --> 00:30:40,210 entonces si el nombre alternativo está vacío 296 00:30:40,210 --> 00:30:46,650 pues hago el fichero donde voy a escribir con el nombre de archivo que yo había definido aquí arriba 297 00:30:46,650 --> 00:30:47,970 con la hora y fecha local 298 00:30:47,970 --> 00:30:52,349 y en otro caso creo el file writer con el nombre alternativo 299 00:30:52,349 --> 00:30:54,269 y ahora ya lo único que tengo que hacer es 300 00:30:54,269 --> 00:30:56,970 para cada autora que está en mi lista de autoras 301 00:30:56,970 --> 00:31:00,170 hago un fichero write de los datos de la autora 302 00:31:00,170 --> 00:31:02,470 pero lo hago con un método nuevo que se llama toString 303 00:31:02,470 --> 00:31:03,809 y que ahora os enseño 304 00:31:03,809 --> 00:31:05,049 toString.csv 305 00:31:05,049 --> 00:31:07,529 el toString está acostumbrado a verlo 306 00:31:07,529 --> 00:31:10,089 simplemente devuelve todo en un string como vosotros queráis 307 00:31:10,089 --> 00:31:11,910 vale, yo aquí lo voy a devolver 308 00:31:11,910 --> 00:31:13,069 separados por comas 309 00:31:13,069 --> 00:31:15,029 y luego salto de línea 310 00:31:15,029 --> 00:31:17,829 entonces cada autora lo imprimo separado por comas 311 00:31:17,829 --> 00:31:18,589 salto de línea 312 00:31:18,589 --> 00:31:21,549 cuando termino aquí en este punto 313 00:31:21,549 --> 00:31:24,069 el for he terminado con todas las autoras 314 00:31:24,069 --> 00:31:26,210 es muy importante que cierre el fichero 315 00:31:26,210 --> 00:31:28,490 y si hubiera algún problema 316 00:31:28,490 --> 00:31:30,529 no puedo escribir en el archivo de salida 317 00:31:30,529 --> 00:31:33,529 capturaría esta excepción 318 00:31:33,529 --> 00:31:34,849 y mostraría el mensaje 319 00:31:34,849 --> 00:31:36,490 ¿qué pasaría? 320 00:31:36,670 --> 00:31:38,910 el programa terminaría normalmente 321 00:31:38,910 --> 00:31:40,390 pero no estaría el archivo 322 00:31:40,390 --> 00:31:43,329 os voy a enseñar el toString del CSV 323 00:31:43,329 --> 00:31:47,769 fijaros que está al lado del toString 324 00:31:47,769 --> 00:31:48,710 y es muy parecido 325 00:31:48,710 --> 00:31:50,630 lo que pasa es que en vez de poner datos 326 00:31:50,630 --> 00:31:52,029 como autora con el de tal 327 00:31:52,029 --> 00:31:54,569 y poner el id, nombre tal 328 00:31:54,569 --> 00:31:55,730 apellidos tal 329 00:31:55,730 --> 00:32:02,009 solamente pongo los nombres de los atributos separados por comas. 330 00:32:02,190 --> 00:32:05,369 Así que lo que devuelve es un string separado por comas. 331 00:32:07,349 --> 00:32:15,089 Ya he dicho cómo se guardan los datos en el CSV y se hacen siempre en el main. 332 00:32:15,269 --> 00:32:18,190 Si voy al main, ahora lo veréis con más sentido. 333 00:32:18,509 --> 00:32:22,470 Primero, llamo al método que vimos con menú entrada de datos, 334 00:32:22,470 --> 00:32:25,369 simplemente para ver si los datos entran por un lado u otro. 335 00:32:25,730 --> 00:32:32,269 Si uso una variable, vuelve a salir, para que mientras no sea salir, llame muchas veces al menú principal. 336 00:32:33,069 --> 00:32:42,410 Y por último, cuando he terminado el menú principal y ya salgo, llamo a guardar datos en el CSV, que es el que os acabo de enseñar. 337 00:32:43,369 --> 00:32:48,369 Que es simplemente lo que he hecho, va haciendo un escribir de todos los datos que tengo. 338 00:32:48,369 --> 00:32:59,190 Vale, y lo que me queda es que no había hecho antes cómo recibir datos de un CSV, que solamente 339 00:32:59,190 --> 00:33:06,329 se separaba por comas, en el menú de entrada de datos. 340 00:33:06,329 --> 00:33:12,430 Anteriormente ya estaba y lo que hacía era cargar la base de datos y hacer un mapea autoras 341 00:33:12,430 --> 00:33:18,089 para coger todos los datos y convertirlos en un ArrayList y luego cerrar el gestor y 342 00:33:18,089 --> 00:33:24,089 hacer true porque he terminado de coger los datos. Vale, pues ahora hago lo mismo con 343 00:33:24,089 --> 00:33:29,329 la lista de autoras como he hecho aquí en el 1075, ahora lo hago en el 82, solo que 344 00:33:29,329 --> 00:33:36,569 en vez de sacarla de la base de datos la saco del CSV y luego un return true para que sepa 345 00:33:36,569 --> 00:33:42,809 que he terminado correctamente de meter los datos. Y false si eliges una acción incorrecta 346 00:33:42,809 --> 00:33:55,769 si escribes una opción numérica incorrecta, que ahora las probaré, no, las voy a probar, 347 00:33:55,769 --> 00:34:10,369 si yo pongo 5, el programa termina, si yo pongo una R, sigue con un número, y si pongo 348 00:34:10,369 --> 00:34:27,380 igual, si pongo un cero, opción elegida incorrecta, vale, listo, vale, entonces ahora en un true 349 00:34:27,380 --> 00:34:34,300 o en dos true, cualquier otro por si es un número, y, creo que es la excepción, nunca 350 00:34:34,300 --> 00:34:39,920 va a ir, porque es verdad, es un pide entero, nunca va a llegar aquí, pero lo puse, vale, 351 00:34:39,920 --> 00:34:46,920 voy a ir a la función que mapea las autoras desde un csv. Quiere decir, lee el csv y aquí 352 00:34:46,920 --> 00:34:54,260 está. Es un poco más larga, tendría que hacerla más corta. Me ha quedado más larga 353 00:34:54,260 --> 00:35:01,099 porque me da un error que me ha costado mucho rato ver. Lo que hace mapear autoras es que 354 00:35:01,099 --> 00:35:06,679 devuelve una write list de autoras. Entonces yo me creo mi lista, que es la que voy a devolver 355 00:35:06,679 --> 00:35:10,599 y voy a leer por líneas 356 00:35:10,599 --> 00:35:14,139 y voy a decirle que están separados los valores por una coma 357 00:35:14,139 --> 00:35:18,159 en el csv, yo uso un buffer reader que lo explico en clase 358 00:35:18,159 --> 00:35:21,539 porque al principio cuando expliqué lo de los archivos 359 00:35:21,539 --> 00:35:25,659 que suele llevarse mejor con los csv, entonces simplemente 360 00:35:25,659 --> 00:35:29,880 haces un file reader que es un objeto intermediario 361 00:35:29,880 --> 00:35:33,079 que es el que lee el archivo, si os enseño 362 00:35:33,079 --> 00:35:35,820 el nombre del archivo lo he puesto aquí 363 00:35:35,820 --> 00:35:36,900 es una constante 364 00:35:36,900 --> 00:35:39,519 para que si lo quiero cambiar lo cambio al principio 365 00:35:39,519 --> 00:35:41,519 se llama autoras csv 366 00:35:41,519 --> 00:35:43,179 entonces cuando uso esta variable 367 00:35:43,179 --> 00:35:45,219 perdón, esta constante 368 00:35:45,219 --> 00:35:46,539 csvFinding 369 00:35:46,539 --> 00:35:47,860 estoy 370 00:35:47,860 --> 00:35:53,159 llamando a ese valor 371 00:35:53,159 --> 00:35:54,539 es que estaba buscando 372 00:35:54,539 --> 00:35:56,239 como vuelvo a donde estaba antes 373 00:35:56,239 --> 00:36:01,559 que no quería ir ahí 374 00:36:01,559 --> 00:36:03,699 vale, estaba viendo 375 00:36:03,699 --> 00:36:05,239 mapear autoras de csv 376 00:36:05,239 --> 00:36:11,239 Aquí hay un botón de estos para ir para delante y para atrás, ya no consigo verlo. 377 00:36:13,179 --> 00:36:16,400 Vale, entonces voy leyendo líneas. 378 00:36:16,619 --> 00:36:27,920 Entonces, mientras la línea sea distinta de null, esa línea que he leído, esta variable línea, la voy a dividir por el CSV separator, que va a ser la coma. 379 00:36:28,579 --> 00:36:31,820 Así que lo tengo en un array de string, que son los campos. 380 00:36:31,820 --> 00:36:41,679 Y también como voy a leer la fecha, me he puesto un patrón, un pattern con los cuatro dígitos de año, de mes y de día. 381 00:36:42,320 --> 00:36:48,980 Y voy a usar como usé antes para leer cuando añado una autora, un formateador. 382 00:36:49,400 --> 00:36:52,019 Y tengo la fecha local, local date. 383 00:36:54,690 --> 00:36:55,469 Me voy a poner aquí. 384 00:36:55,469 --> 00:37:03,869 Lo primero que hago es que en el id, todo esto lo podría haber hecho en casi una línea, 385 00:37:03,869 --> 00:37:09,409 pero me daba error y decidí separarlo para que quedase más claro, y así encontré el 386 00:37:09,409 --> 00:37:10,409 error. 387 00:37:10,409 --> 00:37:13,829 Entonces yo lo que voy a hacer es lo que hay en esta línea, es crear una autora con id, 388 00:37:13,829 --> 00:37:19,789 nombre, apellidos, alias, entonces todos esos parámetros, id, nombre, apellidos, alias, 389 00:37:19,789 --> 00:37:24,710 los estoy calculando aquí por separado para que no me quede de error. 390 00:37:24,710 --> 00:37:32,269 Vale, el id es el campus 0, y como es un string, hago un integer value of para convertirlo en un objeto integer. 391 00:37:33,289 --> 00:37:36,610 Luego, nombre, apellidos y áreas, como son string, simplemente los guardo. 392 00:37:37,170 --> 00:37:38,869 Y luego, ¿qué fecha local? 393 00:37:39,570 --> 00:37:44,409 Pues fecha local utilizo un método estático que es el parse de local date, 394 00:37:44,869 --> 00:37:48,510 que lo que hace es que le das un string, que es el campus 4 donde está la fecha, 395 00:37:48,510 --> 00:37:57,670 y según el formateador que le he dado previamente, que está aquí, que utiliza los 4 decimos de año, mes y día, 396 00:37:58,570 --> 00:38:00,630 intenta convertirlo en una fecha local. 397 00:38:01,909 --> 00:38:07,989 Esto puede dar error, si da error saltará esta excepción, no puede convertirse en la fecha de nacimiento. 398 00:38:07,989 --> 00:38:12,230 Pero también he guardado aquí otra excepción que es el number formal excepción, 399 00:38:12,230 --> 00:38:18,769 porque puede capturar la extensión si fallan el integer value off 400 00:38:18,769 --> 00:38:23,809 entonces cuando 401 00:38:23,809 --> 00:38:28,010 esto me llama la atención 402 00:38:28,010 --> 00:38:30,750 cuando me pongo una excepción me dice quien la va a lanzar 403 00:38:30,750 --> 00:38:35,650 esta excepción la puede lanzar la linea 3, 4, 4 y la linea 3, 3, 6 404 00:38:35,650 --> 00:38:37,190 el integer value off 405 00:38:37,190 --> 00:38:39,530 entonces si el string no es un entero 406 00:38:39,530 --> 00:38:45,710 cuando no parezca un entero o no tenga posibilidad de cambiarse de entero dará error y aquí 407 00:38:45,710 --> 00:38:52,690 yo la capturaría, capturaría esta excepción. Y esta en cambio es la de la fecha. Al final 408 00:38:52,690 --> 00:38:58,630 lo que hago es que creo una nueva autora con todos los valores que me he cogido del CSV 409 00:38:58,630 --> 00:39:05,869 o que he traducido del CSV, de nombre, apellido, esa es la nueva autora. En esta línea la 410 00:39:05,869 --> 00:39:19,349 Añado la lista y aquí, vale, si os fijáis en la llave amarilla, este es el bucle que repito todas las veces para cada una de las autoras. 411 00:39:19,510 --> 00:39:27,849 Cuando llego aquí he terminado de leer el fichero, por lo tanto cierro el Buffer Reader, vale, saco un mensaje por pantalla para que me quede más claro, 412 00:39:27,849 --> 00:39:35,849 leía esa autorización archivo csv y hago un return de la lista aquí he hecho un catch por si tenía 413 00:39:35,849 --> 00:39:41,829 problemas al intentar abrir el archivo y saco los mensajes no puede ser archivo si no existe 414 00:39:41,829 --> 00:39:48,289 o no puede cerrarse el archivo de entrada si no pudiera cerrarlo por alguna razón en el caso de 415 00:39:48,289 --> 00:39:56,590 que haya un error lo que voy a hacer es un return null lo devolvería vacío antes no pude abrirlo 416 00:39:56,590 --> 00:39:58,610 en una de las veces que estaba haciendo pruebas 417 00:39:58,610 --> 00:40:00,170 pues por ejemplo 418 00:40:00,170 --> 00:40:04,559 voy a borrarlo 419 00:40:04,559 --> 00:40:06,760 yo borro mi Autoras CSV 420 00:40:06,760 --> 00:40:08,000 vale 421 00:40:08,000 --> 00:40:10,699 y ahora voy a ejecutar mi 422 00:40:10,699 --> 00:40:12,719 programa y le digo 423 00:40:12,719 --> 00:40:14,619 que voy a leer el archivo CSV 424 00:40:14,619 --> 00:40:16,739 ah, pues no me ha hecho muy bien 425 00:40:16,739 --> 00:40:18,179 me ha hecho cosas raras 426 00:40:18,179 --> 00:40:20,699 bueno, al imprimir, es verdad 427 00:40:20,699 --> 00:40:23,019 es por la impresión, porque me ha sacado en la pantalla 428 00:40:23,019 --> 00:40:24,500 pero el programa sigue funcionando 429 00:40:24,500 --> 00:40:26,960 entonces, me dice que no puede leerse 430 00:40:26,960 --> 00:40:28,639 me muestra el menú 431 00:40:28,639 --> 00:40:33,519 lo que pasa es que se me mezcla con la pila de errores 432 00:40:33,519 --> 00:40:35,760 pero si yo ahora le digo que me muestre mis autoras 433 00:40:35,760 --> 00:40:41,199 me va a decir que no muestre mis autoras 434 00:40:41,199 --> 00:40:46,019 es que no hace un numérico 435 00:40:46,019 --> 00:40:48,219 qué raro que me da este mensaje 436 00:40:48,219 --> 00:40:52,880 creo que me da porque no hay autoras 437 00:40:52,880 --> 00:40:54,260 como la tengo vacía, vale 438 00:40:54,260 --> 00:40:56,300 y ahora si le digo salir 439 00:40:56,300 --> 00:41:06,250 como no tiene ninguna usuaria, ninguna autora 440 00:41:06,250 --> 00:41:07,230 me ha fallado 441 00:41:07,230 --> 00:41:09,489 esto no lo tenía yo pensado 442 00:41:09,489 --> 00:41:11,170 vale, esto es por hacer pruebas 443 00:41:11,170 --> 00:41:15,230 vale, entonces ahora voy a ejecutar 444 00:41:15,230 --> 00:41:18,030 leo desde la base de datos 445 00:41:18,030 --> 00:41:20,940 ¿dónde se ha quedado? 446 00:41:24,389 --> 00:41:24,869 distinta 447 00:41:24,869 --> 00:41:42,940 leo desde la base de datos 448 00:41:42,940 --> 00:41:46,059 pago los datos 449 00:41:46,059 --> 00:41:49,199 equivoco con uno 450 00:41:49,199 --> 00:41:51,800 ahí están las autoras 451 00:41:51,800 --> 00:41:52,940 le doy salir 452 00:41:52,940 --> 00:41:55,739 y le digo que me lo guarde 453 00:41:55,739 --> 00:41:58,380 con autoras.csv 454 00:41:58,380 --> 00:42:01,000 ya tengo guardado 455 00:42:01,000 --> 00:42:03,500 entonces si vuelvo a ejecutar 456 00:42:03,500 --> 00:42:07,599 y le digo 457 00:42:07,599 --> 00:42:09,000 archivo csv 458 00:42:09,000 --> 00:42:11,159 ya me lo voy a echar 459 00:42:11,159 --> 00:42:12,940 vale, tendría que arreglar un par de cosas 460 00:42:12,940 --> 00:42:15,179 para cuando el archivo está vacío o no lo voy a abrir 461 00:42:15,179 --> 00:42:17,380 que no me salga por pantalla 462 00:42:17,380 --> 00:42:18,639 ese tipo de error rojo 463 00:42:18,639 --> 00:42:20,840 y que no tenga en cuenta cuando 464 00:42:20,840 --> 00:42:23,099 o sea que no intente hacer las cosas 465 00:42:23,099 --> 00:42:24,119 cuando no hay autoras 466 00:42:24,119 --> 00:42:25,460 vale 467 00:42:25,460 --> 00:42:40,690 Pues creo que ya he probado todo, sí. Vale, me queda probar una cosa. 468 00:42:40,690 --> 00:42:59,889 Esto. Vale, yo quería que vierais el log, que son todos los cómics que he hecho yo mientras iba haciendo el proyecto. 469 00:42:59,889 --> 00:43:11,889 El último commit es el que he añadido aquí, que es añadido método para leer datos del 470 00:43:11,889 --> 00:43:20,889 CSV. Este commit tiene un identificador, es único, es un código hash. Si yo lo copio, 471 00:43:20,889 --> 00:43:28,889 yo podría hacer en mi programa que me fuera exactamente a ese commit 472 00:43:28,889 --> 00:43:33,889 yo hago un git checkout a ese commit y mi programa aunque no os lo creáis 473 00:43:33,889 --> 00:43:38,889 ha cambiado enormemente, de tal manera que si yo ahora lo intento ejecutar 474 00:43:38,889 --> 00:43:42,889 estoy en el punto de hace 5 o 6 horas 475 00:43:42,889 --> 00:43:46,889 si yo intento ejecutar el csv 476 00:43:46,889 --> 00:44:32,579 he borrado un stack trace que había en print para que no se vea mal y ya sale bien y quería 477 00:44:32,579 --> 00:44:34,699 que 10 es una cosa 478 00:44:34,699 --> 00:44:39,469 si lo ejecuto 479 00:44:39,469 --> 00:44:40,289 ya va bien 480 00:44:40,289 --> 00:44:42,010 voy a elegir el CSV 481 00:44:42,010 --> 00:44:44,989 y te dice que no se puede leer 482 00:44:44,989 --> 00:44:46,690 si le digo mostrar mis autoras 483 00:44:46,690 --> 00:44:48,210 no hay autoras 484 00:44:48,210 --> 00:44:50,269 si le digo mostrar autoras con más premios 485 00:44:50,269 --> 00:44:53,010 me dice que el número recibido máximo de premios es 0 486 00:44:53,010 --> 00:44:53,710 y no hay autoras 487 00:44:53,710 --> 00:44:56,750 si intento el 3 o el 4 488 00:44:56,750 --> 00:44:58,650 como no hay autoras no me dice nada 489 00:44:58,650 --> 00:45:01,070 y si intento mostrar una autora 490 00:45:01,070 --> 00:45:02,590 en concreto como la 6 491 00:45:02,590 --> 00:45:08,829 me dice que no hay ninguna autora y si no la hubiera me la añadiría y me la guardaría 492 00:45:08,829 --> 00:45:20,630 eso va bien, entonces salgo y la guardo en un archivo vacío y voy a cargar desde la 493 00:45:20,630 --> 00:45:28,489 base de datos para que me cree el CSV que está bien, se conectan los datos, me muestran 494 00:45:28,489 --> 00:45:41,309 mis autoras, ahí están, y le voy a salir y lo guardo como autoras.csv, ahí me falta 495 00:45:41,309 --> 00:45:49,969 un espacio, pero vale, y si vuelvo a ejecutar y voy a elegir desde, bueno, que sea yo cojo 496 00:45:49,969 --> 00:46:00,110 ha sido CSV, me dice que leía los autores y va todo bien, ¿vale? Está ahí. Y si yo 497 00:46:00,110 --> 00:46:14,940 añado una autora, para decirle claro, una autora, destino, un R para dar menos, ¿qué 498 00:46:14,940 --> 00:46:33,619 rollo? Y ahora puede estar bien más corto. Vale, si muestro mis autoras, ahora estoy 499 00:46:33,619 --> 00:46:42,619 y ahí la última y si le doy salir lo puedo guardar como autoras.psv 500 00:46:42,619 --> 00:46:49,769 y si le enseño la carpeta y hago el archivo 501 00:46:49,769 --> 00:46:54,769 y le importo, veréis que estoy al final en el último 502 00:46:54,769 --> 00:46:56,769 así que ya está ahí el archivo 503 00:46:56,769 --> 00:47:00,769 bueno, pues ahora viene la parte interesante 504 00:47:00,769 --> 00:47:08,030 Este es mi... bueno, tengo un terminal abierto con dos sitios con mi... con mi proyecto, ¿vale? 505 00:47:08,150 --> 00:47:10,510 Con mi proyecto en Github, en Github, perdón. 506 00:47:12,750 --> 00:47:24,590 ¿Y qué voy a hacer? Vale, enseñaros dos cosas. Uno, con el git log, aquí, veo todos los commits que he hecho últimamente. 507 00:47:24,590 --> 00:47:29,190 Entre ellos está el que acabo de hacer de eliminar el print extract trace, ¿vale? 508 00:47:30,769 --> 00:47:49,110 Y cada commit tiene un número único, si yo me voy moviendo hacia delante, voy viendo los números, yo me voy a ir a un commit, me quiero ir a un commit de hace un rato que es este, que fue cuando paré el otro vídeo, entonces acaba en 27 de que tengo aquí. 509 00:47:49,110 --> 00:47:53,230 y añadía el método autora para que volviera a cualquier campo 510 00:47:53,230 --> 00:47:57,789 pero no estaban hechos para nada ni el paso 3, 4 ni 5 511 00:47:57,789 --> 00:48:01,670 entonces voy a hacer un git checkout con ese número 512 00:48:01,670 --> 00:48:05,969 y lo que me hace es que me llevan el tiempo a ese momento 513 00:48:05,969 --> 00:48:09,250 hace unas horas cuando yo no había hecho ni el 3, ni el 4, ni el 5 514 00:48:09,250 --> 00:48:13,250 entonces si yo ahora vuelvo aquí a mi programa 515 00:48:13,250 --> 00:48:15,590 y lo hago bien y lo ejecuto 516 00:48:15,590 --> 00:48:21,690 si intento leer del csv el programa acaba porque no puede porque en ese momento no leía del csv 517 00:48:21,690 --> 00:48:29,550 y si intento leer de la base de datos me dice que bien, R, me conecta, me muestra las autoras 518 00:48:29,550 --> 00:48:32,489 ya veréis que está en la 60, que es una base de datos 519 00:48:32,489 --> 00:48:37,889 pero si le digo el paso 3, que es si no me muestra el país de residencia 520 00:48:37,889 --> 00:48:41,190 eso ya lo tengo, vale 521 00:48:41,190 --> 00:48:44,849 y el 4, si tendría que buscar otro 522 00:48:44,849 --> 00:48:51,659 si, es que no lo tengo 523 00:48:51,659 --> 00:48:54,659 no puedo leer el csv 524 00:48:54,659 --> 00:48:55,619 ni escribir el csv 525 00:48:55,619 --> 00:48:58,519 tenía hecho lo de las autoras 526 00:48:58,519 --> 00:49:00,219 pero no tenía hecho lo otro 527 00:49:00,219 --> 00:49:01,039 entonces, ¿qué ha pasado? 528 00:49:01,639 --> 00:49:03,239 que estoy en otro punto en el tiempo 529 00:49:03,239 --> 00:49:05,239 entonces cuando yo aquí 530 00:49:05,239 --> 00:49:08,000 en mi ventana de terminal 531 00:49:08,000 --> 00:49:10,440 me cambio a un commit 532 00:49:10,440 --> 00:49:12,659 cambia inmediatamente mi código 533 00:49:12,659 --> 00:49:14,039 si os lo enseño 534 00:49:14,039 --> 00:49:16,380 voy a ponerme, cierro aquí 535 00:49:16,380 --> 00:49:20,969 salgo 536 00:49:20,969 --> 00:49:33,289 y cierro la ventana y os quería enseñar, pues mira, el main, el main se va a anotar 537 00:49:33,289 --> 00:49:42,289 y lo tengo aquí y lo que hago es con git irme otra vez a mi posición, a mi main, a 538 00:49:42,289 --> 00:49:49,369 mi página, a mi punto actual, ¿vale? Es como que vuelvo del pasado al presente. Vale, 539 00:49:49,369 --> 00:49:56,369 Fijaros como inmediatamente ha cambiado el código de atrás porque en NetBeans ya notamos que todo ha cambiado 540 00:49:56,369 --> 00:50:01,369 porque aquí me ha llevado a otro punto y me han aparecido métodos que no estaban horas antes 541 00:50:01,369 --> 00:50:05,630 como en mapear autores de CSSV, ¿de acuerdo? 542 00:50:05,730 --> 00:50:13,610 Entonces con un GitCheckout y con el Haskell que tiene cada cómic podéis viajar en el tiempo 543 00:50:13,610 --> 00:50:17,369 y podéis modificar el programa desde ese momento, ¿vale? 544 00:50:17,369 --> 00:50:18,369 Y os voy a estar. 545 00:50:19,369 --> 00:50:21,090 Gracias por la paciencia. 546 00:50:22,309 --> 00:50:24,329 Espero que se me oiga o me estoy hablando un poco bajo.