Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Segunda parte Examen Ordinario - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 11 de junio de 2023 por Cristina M.

14 visualizaciones

Explico las funcionalidades: calcular autoras por país de residencia y área de trabajo, añadir una autora nueva, leer y escribir los datos en archivos CSV.

Descargar la transcripción

Vale, espero que se me oiga bien, que estoy en el exterior. 00:00:03
Voy a continuar con la siguiente parte de la solución que no había podido hacer hasta ahora. 00:00:08
Estoy en la página de GitHub, estoy en otro ordenador y quiero clonarlo y seguir trabajando. 00:00:15
Entonces me voy aquí a Code, digo por SSH porque yo me conecto por SSH, 00:00:21
pero lo normal es que os conectéis en Windows por HTTPS, lo copio y me cambio la carpeta. 00:00:27
Bueno, estoy en el directorio donde está el NetBeans Projects y voy a hacer un git clone 00:00:34
con la url del repositorio remoto en GitHub. 00:00:47
Vale, me dice que me he quedado en Ordinario y me pide mi clave para conectarme por SSH. 00:00:50
Parece que la he recordado bien y ahora si yo hiciese un DIR de, creo que Ordinario es 00:01:03
con mayúsculas y de ord asterisco ahí están las cuatro carpetas que hay dentro de ordinario 00:01:13
y cambia de windows al inu ls-la vale aquí en este ordenador tengo cuatro proyectos y 00:01:31
está el ordinario que es de ahora mismo de junio así que me voy al netbeans 00:01:38
le digo en file open project y quiero abrir el proyecto 00:01:45
ordinario 00:01:50
me dice hay problemas porque no tiene el jdbc 00:01:52
y si lo tengo lo tendría aquí y yo creo que no lo tengo 00:02:01
vale en el siguiente bueno simplemente voy a la página donde lo había 00:02:09
descargado antes, me lo descargo y lo añado al proyecto y ya debería funcionar, voy a 00:02:12
intentarlo mientras. Vale, estaba aquí solo que no lo veía, entro en la carpeta y busco 00:02:19
el archivo .jar, le digo open, me dice que el problema ya ha sido resuelto, hago close 00:02:30
y si os fijáis aquí tengo los mismos archivos que tenía en el otro vídeo. ¿Qué voy a 00:02:36
hacer ahora lo que me faltaba? Me faltaba por hacer dentro del menú principal varias 00:02:43
opciones. Y aparte encontré un error el otro día hablando con José. Vale, dentro del 00:02:53
menú principal me faltaban la opción 3, 4 y 5, que son mostrar el número de autoras 00:02:57
por país de residencia, mostrar el campo de trabajo y añadir una autora. Aquí había 00:03:02
una errata, que la cambio ya, que era simplemente añadir una autora, y el sexto que mostrar 00:03:09
una autora en concreto lo tenía hecho, sí, vale, pues ahora hago el tres, cuatro y cinco 00:03:18
que me falta, y había encontrado un error, que es, que en el examen me pedía que mostrara 00:03:23
una autora, y no lo estaba haciendo, así que ahora añadiré una opción al menú, 00:03:29
que, esto lo que me pasó, si la tengo pero no la tenía hecho, mostraron la autora en 00:03:35
conjunto, vale, pues ahora la hago, a ver si la tengo, no, lo que me pasaba es que pensaba 00:03:42
que me la había olvidado pero no me la había olvidado, pero sí, tengo un error, os lo 00:03:48
cuento, me voy a esta función, me pedía en el enunciado que mostrara los datos de 00:03:51
autora y en qué trabaja. Entonces aquí cuando imprimo que hace un system out del toString 00:03:59
de la autora encontrada, debería hacer también un autora.encontrada, se llama, ¿no? Autora 00:04:10
encontrada, punto crea, creo recordar que era así, un punto de juicio guardo y lo tengo 00:04:22
que ejecutar, pero no tengo aquí la base de datos, así que ahora no lo puedo ejecutar, 00:04:34
me va a llevar un rato. Gracias, pausa el vídeo. Bien, ya he vuelto, he creado la, 00:04:39
o sea, he arrancado la máquina virtual, he creado la base de datos y he modificado las 00:05:03
cosas que he dicho que iba a modificar en el código. ¿Qué he modificado? Bueno, estoy 00:05:06
modificando un mensaje aquí al final para que me imprima a qué base de datos me estoy 00:05:12
conectando y en qué IP me estoy conectando. Y aquí yo quería poner unos puntillos. Se 00:05:17
Me olvido antes de empezar a grabar. 00:05:33
Voy a enseñar las últimas ediciones. 00:05:42
He visto un botón por aquí que era para volver al último que has editado. 00:05:44
Esta barra de aquí he visto que son para moverte donde habías estado. 00:05:53
Lo último que edité, vale, añadir los puntos. 00:05:59
puntos. Y lo último que edité, la base de datos, y he añadido que puedo poner una letra 00:06:01
R cuando me conecto a la base de datos porque estoy en otro sitio y me pone otra IP. Entonces 00:06:10
le permito una R, que yo me acuerdo, y si hay una H se mete en la de Home, una I en 00:06:16
IES y cualquier otra letra, aunque solo me va a leer R porque he estado probando a poner 00:06:22
un patrón dentro del sc.next, fijaros aquí que estoy indicando que creo que le puede 00:06:26
llegar es h minúscula mayúscula la y minúscula mayúscula o la r y hago un todo 00:06:31
uppercase para que solamente lo compare con la mayúscula y meta lo que meta que 00:06:36
va a ser una r entra en que la ip por defecto sea esta que si vuelvo al último 00:06:41
que edite que fue añadir 00:06:47
Aquí añadí la dirección que tengo por defecto, que es la .65, 11.65 local. 00:07:01
Y lo que se me había olvidado añadir, que lo dije hace unos minutos, es el create. 00:07:10
Entonces cuando estoy haciendo el mostrar una autora por id, solo me enseñaba los datos de la autora. 00:07:18
Y ahora he usado la variable AutoraEncontrada para decirle que ejecute su método Crea. 00:07:26
Vale, voy a ejecutar. 00:07:33
Le pongo aquí para que lo veáis. 00:07:37
Vale, me pregunta que si base datos. 00:07:38
Le digo que sí, un 1. 00:07:41
Cargando el driver, H, I, S. 00:07:43
Voy a poner una R, minúscula. 00:07:45
Vale, entonces me dice que conectando en ese IP. 00:07:48
Lo he puesto simplemente para darme cuenta de dónde me estoy conectando. 00:07:50
y se supone que después de cerrar la conexión ya tengo los datos 00:07:53
si ahora muestro mis autoras, simplemente me enseñan las autoras 00:07:57
sin hacer que creen, pero si muestro una autora en concreto 00:08:01
voy a poner la opción 6 para mostrar la autora en concreto 00:08:05
me pregunta cuál ID, le voy a decir 00:08:09
la 5, entonces me describe 00:08:12
el ID, aquí, Espeticia Dolera, que es directora de cine 00:08:17
Entonces escribe una frase que es como soy directora de cine, creo cosas, porque llamaba a su método Crea. 00:08:21
Voy a darle a salir, está todo guardado, me vuelvo aquí y voy a ver cuál es el status de mi proyecto. 00:08:28
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. 00:08:41
ordinario, siento el coro 00:08:51
de pajaritos, espero que se me oya muy bajo 00:08:53
intento hablar alto 00:08:55
vale, entonces ahora repito el comando 00:08:57
me dice que 00:08:59
he modificado varios archivos 00:09:01
al compilar y al ejecutar, así que voy a hacer 00:09:03
un git add de todo 00:09:05
lo que hay en el proyecto 00:09:07
si os fijáis, ahora está ya en verde 00:09:08
porque ya lo está registrando 00:09:11
le he dicho que registre sus cambios 00:09:13
y ahora lo que me queda 00:09:15
es hacer un commit para 00:09:17
que quede guardado ese cambio en el repositorio local, en este ordenador, ¿vale? 00:09:18
Pero en el ordenador de casa o del instituto no lo va a hacer, ¿vale? 00:09:25
Hasta que yo ahora os lo cuento. 00:09:30
Entonces, ¿qué he cambiado? 00:09:33
He añadido una tercera IP. 00:09:34
y al mostrar una autora, también se ejecuta su método, crea. 00:09:39
Y un error menor, porque no tiene importancia en el menú, nos sobran unas letras. 00:09:59
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. 00:10:06
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. 00:10:15
Y mi rama está adelantada al origin main, es decir, a mi repositorio remoto. 00:10:27
Si yo os enseño el Gitlog, aquí tengo un commit, que es este, le he añadido una tercera IP. 00:10:33
Literalmente tengo 1, 2, 3, 4, 5, 6, 7. 00:10:44
Yo lo había contado mal, pero si os veis al remoto, aunque yo actualice, es de hace una semana. 00:10:53
Este commit que he hecho en mi equipo local todavía no se ve en el remoto. 00:11:09
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. 00:11:13
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, 00:11:23
Entonces, por ejemplo, en SRC ordinario se ven los cambios de lo que he quitado y lo 00:11:43
que he puesto, porque he recompilado, eso es una parte. 00:11:53
Y otra es que he añadido el IP address default y aquí he añadido que si entro en el default 00:11:56
me añade la IP por defecto y aquí he cambiado el mensaje de cuando estoy conectando para 00:12:06
que tuviera más detalle. 00:12:11
Y luego este era el error menor, que me di cuenta con José que podía añadir una autora 00:12:12
por campo de trabajo, y no es eso, es añadir una autora. 00:12:16
Esos son los cambios. Vale. Pues voy a pausar. 00:12:20
Bien, he vuelto. He terminado de hacerlo todo. 00:12:24
Está subido todo al Github. 00:12:33
Y os quería explicar las funcionalidades que faltaban, ¿de acuerdo? 00:12:37
Voy a ejecutar y luego quiero que veáis lo que pasa 00:12:41
cuando cambio de commit. Bueno, yo ahora ejecuto y me pregunta si quiero leer de la base de 00:12:45
datos un archivo CSV. Voy a coger de la base de datos, me pregunta, le digo que estoy aquí 00:12:55
en tu sitio y es el día que me muestre mis autoras, ahí están hasta las 60. Y vale, 00:13:02
me queda la opción 3 que me muestra el número de autoras por país de residencia, me muestra 00:13:11
cada uno de los países que hay y el número de autoras y 4 por campo de trabajo, me muestra 00:13:17
por campo de trabajo y por último me queda añadir una autora y salir, vale, voy a añadir 00:13:24
una autora que me pregunta el nombre, Cristina, apellido, su nombre, alias de MR, fecha de 00:13:34
nacimiento, alias de mi hostia mujer, país de la serie de España, área de trabajo, 00:13:49
Si os muestro mis autoras, fijaros que en el 61 ya está Cristina, he enseñado una 00:14:06
nueva, la pondré en el 62. Y lo único que me queda es ver que puedo mostrar una autora 00:14:18
en concreto, aunque creo que esto estaba hecho, voy a ponerle 61. Voy a poner unas letras 00:14:24
para que veáis que el menú me dice que no, que lo vuelvo a intentar y vale, me queda 00:14:32
salir. Cuando voy a salir me dice que el nombre por defecto del archivo de salida, porque 00:14:38
me va a guardar los datos que tengo en el CSV, es el nombre de las autoras, el nombre 00:14:43
de las autoras para el archivo y me pone el día y la hora. Si pongo otro nombre lo escribo 00:14:51
si lo da en intro lo guarda. Vale, ya está. Voy a ver lo que ha guardado, que está aquí, 00:14:58
que sería este creo, a ver ahora, este. Fijaros, en el último estoy yo, Cristina, con mis 00:15:11
datos y cuando yo lo doy a importar, se da cuenta que es un archivo que está separado 00:15:33
se da cuenta que está separado por cosas, me pregunta si por tabulador, coma, punto 00:15:40
y coma, y me lo separa bien. Si yo lo abriera con el editor de texto, lo que veríais es 00:15:47
como antes, cada dato una coma. Cuando no hay dato, como aquí, que no tiene alias, 00:15:56
pues un espacio. Vamos al código a ver cómo lo he hecho. 00:16:03
y me voy al menú principal. En el menú principal he añadido una función que se llama imprimir 00:16:14
número de autoras por campo x, quiere decir que le puedo preguntar por el campo 7, el 00:16:29
campo 8, aquí he decidido los campos como del 1 al 8. Hay una pequeña incoherencia 00:16:34
porque luego veréis que en otro lado lo hago del 0 al 7, pero ya no lo voy a cambiar. Entonces 00:16:42
es la función, se llama imprimir número de autoras por campo y dependiendo del número 00:16:46
que reciba, pues me imprime un resumen por el ID, por el nombre, por el apellido, en 00:16:51
este caso el 7 es por el país de residencia y el 8 por el campo en el que trabaja. Vale, 00:16:58
y tengo un método que se llama ADD Autora. Vamos a ver el de imprimir. El de imprimir 00:17:08
utilizo que le llegue un número entero, con el número de campo, y utilizo un HashMap 00:17:19
que tiene como pareja, clave, valor, string y un entero. Y primero va a recorrer toda 00:17:26
a la lista de autoras y va a ir guardándolo en, aquí puse ocurrencias por campo, pero 00:17:34
aquí, eso es, me he cambiado el nombre, entonces para cada autora que hay va a guardar la clave, 00:17:42
intenta coger la clave con el número de campo que le llega por aquí, por ejemplo si llegaba 00:17:51
un 29, intenta coger un número de campo que es un 29, pues esto va a dar un error y cuando 00:17:56
de ese error va a capturar la excepción, va a imprimir que has introducido un número 00:18:02
de campo tal y no seguiría imprimiendo las autoras. Haría un retorno para terminar el 00:18:07
programa aunque no pueda hacerlo. Esto es una prueba que yo quería hacer y que ahora 00:18:15
le enseño. Y ahora, si la clave que estoy buscando de esa autora ya está dentro guardada 00:18:20
de los campos que ya he metido antes a autoras, por ejemplo, imagina que esta autora reside 00:18:29
en España. Pues lo primero que compruebo es si ya he metido que hay autoras que residen 00:18:35
en España. Si ya he metido el valor actual es el que tengo metido, ocurre el campo de 00:18:40
clave y lo que hago es meterlo con un put en el HashMap con la clave que he obtenido 00:18:46
que podía ser España, con el valor que tenía ahora mismo, más uno. 00:18:54
Y si no está, lo que hago es introducir la clave con un uno. 00:18:59
Entonces, cuando llego aquí, lo que he hecho es recorrer toda la lista de autoras 00:19:04
y según el campo que estamos mirando, residencia, trabajo, lo que sea, ya lo ha metido. 00:19:07
Y cuando llego aquí, llama a otra función que se llama imprimirHashMap, que está justo debajo, 00:19:16
que se cargaba a imprimirla. Lo he hecho así pues en algún momento necesito imprimir otros 00:19:22
HashMaps. Recibo un HashMap de String Integral y para todas las entradas, teniendo en cuenta 00:19:26
que una entrada es lo que es una pareja de clave-valor del HashMap, para cada entrada 00:19:34
que es una pareja de clave y valor, obtiene todas las parejas y para entrada, que es la 00:19:41
pareja, le pregunta cuál es su clave y también para entrada le pregunta cuál es su valor 00:19:53
y lo guarda en clave y valor. Lo que hace es imprimir, imprime clave y valor. Así que 00:19:57
cuando estáis viendo aquí, en la base de datos, estoy y voy a administrar por el país 00:20:03
de residencia, que es el 3, aquí estáis viendo Colombia es la clave y el valor es 00:20:15
3 y luego Brasil es la clave y el valor es 2. Está imprimiendo un hash map en el que 00:20:21
guardado todas las corrientes de cada uno de los países. 00:20:27
Es un placer para cualquiera de ellos. Entonces, ¿qué ocurre? Fijaros, recordad, se llama 00:20:32
imprimir número de autoras por campo, lo que hace es recorrer y ir viendo cuántas hay 00:20:43
y recibe un índice. Me vuelvo al menú principal y aquí en el primer caso son 7, que son los 00:20:48
países y en el otro caso es el 8. Esta parte quería que... perdón, que la mesa me suena. 00:21:00
Ahora voy a probar lo mismo con los valores 1, 2, 3, 4, 5, 6, 9 y 0. Voy a ejecutar, le 00:21:16
de la base de datos, le digo donde estoy para que coja el IP y le doy a la opción 4, que 00:21:24
es la que estamos viendo aquí arriba, porque quiero que me lo imprima para todos los campos, 00:21:32
los que existen, no 3, 4, 5, 6, pero también para el 9 y el 0 que no existen. Entonces 00:21:40
si os fijáis, es un poco largo. Primero me lo hace para el campo que tenía que estar 00:21:47
buscando, que era el tipo de trabajo, área de trabajo. Pero luego me lo hace para el 00:21:56
ID. Y fijaros que cada uno de los IDs solo hay una ocurrencia. Luego me lo hace para 00:22:02
los nombres. Sí que se repiten nombres. Hay cuatro Isabel, dos Carmen, cinco Laura, 00:22:07
luego me lo hace para los apellidos, algunos se repiten 00:22:13
luego me lo hace para 00:22:18
aquí hay un 52 que se me ha colado 00:22:22
no sé de qué, tengo que mirar 00:22:30
vale, luego me lo hace para los alias 00:22:36
ah, porque hay 52 que tienen alias vacío, no lo entendía 00:22:39
y luego todas las fechas de nacimiento que no se repiten ninguna 00:22:43
y por último los premios, esto lo estáis viendo aquí 00:22:47
son cuántas personas tienen cero premios, un premio, dos premios 00:22:50
vale, ah, y aquí me da un 00:22:54
el error, vale 00:22:58
porque, fijaros 00:23:02
imprimir por número de campos x 00:23:09
pues que ahora me voy a ir en cacho 00:23:16
ah, porque me salta 00:23:37
otro que no veo 00:23:40
bueno, aquí tenéis 00:23:42
ha introducido el 00:23:45
ah, ya, perdón 00:23:46
primero, porque 00:23:48
capturar la excepción 00:23:50
vale 00:23:52
porque estoy llamando a un método 00:23:53
que se llama 00:23:57
autora getCampoXString 00:23:57
que lo que hace es convertir cada una de las 00:24:00
campos de la autora 00:24:02
la verdad, grande 00:24:03
aquí, así 00:24:05
yo tengo un método de la autora 00:24:07
que es del campo x tu string 00:24:10
entonces para cualquier número de campo 00:24:12
si es el 1 me devuelve 00:24:13
el id en string, si es el 2 00:24:16
me devuelve el nombre 00:24:18
el 3 el apellido alias y luego 00:24:20
si es el cumpleaños, si es el 5 me lo convierte 00:24:21
en string, lo mismo para 00:24:24
todos ellos, si son los premios 00:24:26
recibidos, que es este, me lo convierte 00:24:28
en string, entonces me devuelve un string 00:24:30
ahora, si intento convertir el campo 6 00:24:32
9, 14 00:24:34
25, me va a decir 00:24:36
ha intentado convertir un campo 00:24:38
es una parte del método de la clase autora que se llama error y luego el error que te 00:24:40
dice en la clase ordinaria el método que está intentando ejecutar, que es este, el 00:24:53
y vuelve al menú principal y ya hemos visto como funciona el 3 y el 4 y queda probar el 00:25:04
añadir una autora. Queda ver añadir una autora. El método se llama ADDAutora, es 00:25:22
que se llama en el menú principal, y lo único que hace, solo tiene una línea, ¿de acuerdo? 00:25:31
Llamo a mi variable global lista de autoras, el igual de D, y a su vez llamo a un método 00:25:38
que ya habíamos visto antes, que es creautora, que va pidiendo líneas para el nombre, el 00:25:44
apellido, el alias, ¿vale? 00:25:50
Los importantes son el de la fecha y este método que se llama NUMMAXDID, que lo que 00:25:53
está obteniendo es cuál es el número ID máximo que hay en mi lista. 00:26:04
Entonces, simplemente lo que hace es que me recorre toda mi lista de autoras y va buscando 00:26:09
igual que había el número máximo de premios, el número máximo de ID. 00:26:14
Entonces, para cada autora le pregunta y empezamos con el MAXID a cero. 00:26:18
y para cada autora 00:26:21
le pregunto cuál es su ID 00:26:23
y si es mayor que el previo 00:26:33
que había con un máximo de ID 00:26:35
que inicialmente es cero, pues lo guardo 00:26:37
y así voy dando vueltas y lo devuelvo 00:26:39
el otro 00:26:42
que tengo que irme a añadir a la autora 00:26:44
vale, entonces voy a añadirlo con el siguiente ID que toque 00:26:49
aunque no lo voy a meter en las datos 00:26:52
para saberlo. Y es interesante el pide fecha. El pide fecha es un método que he hecho nuevo 00:26:55
que utiliza, bueno yo lo he decidido a hacer así, no era necesario hacerlo así para el 00:27:04
examen, pero yo lo he decidido a hacer así porque estoy investigando. Utiliza el local 00:27:12
LocalDate es la manera más moderna de utilizar con las fechas, que es con una librería que 00:27:22
se llama Time, que tiene LocalDate y LocalAware también, ¿vale? Entonces LocalDate trabaja 00:27:29
solo con la fecha, año, mes y día. Yo voy a utilizar un patrón para que las fechas 00:27:37
que me introduzcan sean este tipo, cuatro dígitos para el año, dos para el mes y dos 00:27:43
para el día. Esta línea la puedo quitar porque es una cosa que estoy retomando y al final 00:27:48
lo hice así. Esto es más fácil, como lo he hecho. Vale. Utilizo un formateador para 00:27:54
que tenga exactamente el mismo aspecto que el del patrón, ¿vale? Y voy a estar pidiéndolo 00:28:02
hasta que tenga una fecha correcta. Si me da, introducen una fecha incorrecta. Igual 00:28:09
que pasa con las líneas o con los enteros, va a seguir pidiendo y lo que me dice, lo 00:28:14
que me hace es pedirme una línea, ¿vale? Me pide una línea con el mismo mensaje con 00:28:20
el que a mí me han pedido la fecha. Si a mí me dicen introduce fecha de nacimiento, 00:28:25
yo a pide línea le digo introduce fecha de nacimiento y le añado en este formato para 00:28:31
que quede bien claro el formato. Vale, cuando pide línea me devuelve el stream, yo lo que 00:28:36
Lo que intento en el try es convertir la fecha que tengo en string que me ha devuelto pidelinea, 00:28:42
intento convertirla siguiendo el formateador a un local date y eso lo guardo aquí en fecha 00:28:50
y simplemente la devuelvo. 00:28:56
Si por alguna razón al leer del teclado me introduces una fecha rara que no puede convertir 00:28:59
pues sacará este mensaje. Y entonces vuelvo a la idea autora, entonces eso, me llega al 00:29:10
máximo, va pidiéndome líneas para el nombre, el apellido y el alias, me pide fecha, el 00:29:18
entero para pedirme los premios y pide línea. Vale, entonces ya esa parte casi está todo, 00:29:25
Me falta solo, si me voy al menú, cómo guardo los datos en un CSV y cómo leo de un CSV. 00:29:33
Entonces, para guardar los datos en el CSV, he creado un pequeño método que usa un freewriter. 00:29:43
Entonces, por defecto, va a intentar guardar el nombre del archivo, los datos que tiene 00:29:52
en la ArrayList, lo va a intentar guardar en un archivo que se va a llamar Autoras y 00:29:57
le va a concatenar la fecha actual, que ya he dicho que era localDate, con el now, 00:30:01
y la hora local, localTime, con el now, y además .csv, 00:30:07
para asegurarme que cada vez que creo el archivo tiene un nombre diferente. 00:30:12
Entonces lo voy a sacar por pantalla, en un mejor efecto del archivo es lo que acabo de hacer, 00:30:17
y aún así le pido un nombre alternativo al usuario, con el método pideLínea. 00:30:21
Le digo, introduce otro nombre, pulsa Enter. 00:30:27
entonces si le da enter lo que me va a devolver es un string vacío 00:30:30
entonces si el nombre alternativo está vacío 00:30:36
pues hago el fichero donde voy a escribir con el nombre de archivo que yo había definido aquí arriba 00:30:40
con la hora y fecha local 00:30:46
y en otro caso creo el file writer con el nombre alternativo 00:30:47
y ahora ya lo único que tengo que hacer es 00:30:52
para cada autora que está en mi lista de autoras 00:30:54
hago un fichero write de los datos de la autora 00:30:56
pero lo hago con un método nuevo que se llama toString 00:31:00
y que ahora os enseño 00:31:02
toString.csv 00:31:03
el toString está acostumbrado a verlo 00:31:05
simplemente devuelve todo en un string como vosotros queráis 00:31:07
vale, yo aquí lo voy a devolver 00:31:10
separados por comas 00:31:11
y luego salto de línea 00:31:13
entonces cada autora lo imprimo separado por comas 00:31:15
salto de línea 00:31:17
cuando termino aquí en este punto 00:31:18
el for he terminado con todas las autoras 00:31:21
es muy importante que cierre el fichero 00:31:24
y si hubiera algún problema 00:31:26
no puedo escribir en el archivo de salida 00:31:28
capturaría esta excepción 00:31:30
y mostraría el mensaje 00:31:33
¿qué pasaría? 00:31:34
el programa terminaría normalmente 00:31:36
pero no estaría el archivo 00:31:38
os voy a enseñar el toString del CSV 00:31:40
fijaros que está al lado del toString 00:31:43
y es muy parecido 00:31:47
lo que pasa es que en vez de poner datos 00:31:48
como autora con el de tal 00:31:50
y poner el id, nombre tal 00:31:52
apellidos tal 00:31:54
solamente pongo los nombres de los atributos separados por comas. 00:31:55
Así que lo que devuelve es un string separado por comas. 00:32:02
Ya he dicho cómo se guardan los datos en el CSV y se hacen siempre en el main. 00:32:07
Si voy al main, ahora lo veréis con más sentido. 00:32:15
Primero, llamo al método que vimos con menú entrada de datos, 00:32:18
simplemente para ver si los datos entran por un lado u otro. 00:32:22
Si uso una variable, vuelve a salir, para que mientras no sea salir, llame muchas veces al menú principal. 00:32:25
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. 00:32:33
Que es simplemente lo que he hecho, va haciendo un escribir de todos los datos que tengo. 00:32:43
Vale, y lo que me queda es que no había hecho antes cómo recibir datos de un CSV, que solamente 00:32:48
se separaba por comas, en el menú de entrada de datos. 00:32:59
Anteriormente ya estaba y lo que hacía era cargar la base de datos y hacer un mapea autoras 00:33:06
para coger todos los datos y convertirlos en un ArrayList y luego cerrar el gestor y 00:33:12
hacer true porque he terminado de coger los datos. Vale, pues ahora hago lo mismo con 00:33:18
la lista de autoras como he hecho aquí en el 1075, ahora lo hago en el 82, solo que 00:33:24
en vez de sacarla de la base de datos la saco del CSV y luego un return true para que sepa 00:33:29
que he terminado correctamente de meter los datos. Y false si eliges una acción incorrecta 00:33:36
si escribes una opción numérica incorrecta, que ahora las probaré, no, las voy a probar, 00:33:42
si yo pongo 5, el programa termina, si yo pongo una R, sigue con un número, y si pongo 00:33:55
igual, si pongo un cero, opción elegida incorrecta, vale, listo, vale, entonces ahora en un true 00:34:10
o en dos true, cualquier otro por si es un número, y, creo que es la excepción, nunca 00:34:27
va a ir, porque es verdad, es un pide entero, nunca va a llegar aquí, pero lo puse, vale, 00:34:34
voy a ir a la función que mapea las autoras desde un csv. Quiere decir, lee el csv y aquí 00:34:39
está. Es un poco más larga, tendría que hacerla más corta. Me ha quedado más larga 00:34:46
porque me da un error que me ha costado mucho rato ver. Lo que hace mapear autoras es que 00:34:54
devuelve una write list de autoras. Entonces yo me creo mi lista, que es la que voy a devolver 00:35:01
y voy a leer por líneas 00:35:06
y voy a decirle que están separados los valores por una coma 00:35:10
en el csv, yo uso un buffer reader que lo explico en clase 00:35:14
porque al principio cuando expliqué lo de los archivos 00:35:18
que suele llevarse mejor con los csv, entonces simplemente 00:35:21
haces un file reader que es un objeto intermediario 00:35:25
que es el que lee el archivo, si os enseño 00:35:29
el nombre del archivo lo he puesto aquí 00:35:33
es una constante 00:35:35
para que si lo quiero cambiar lo cambio al principio 00:35:36
se llama autoras csv 00:35:39
entonces cuando uso esta variable 00:35:41
perdón, esta constante 00:35:43
csvFinding 00:35:45
estoy 00:35:46
llamando a ese valor 00:35:47
es que estaba buscando 00:35:53
como vuelvo a donde estaba antes 00:35:54
que no quería ir ahí 00:35:56
vale, estaba viendo 00:36:01
mapear autoras de csv 00:36:03
Aquí hay un botón de estos para ir para delante y para atrás, ya no consigo verlo. 00:36:05
Vale, entonces voy leyendo líneas. 00:36:13
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. 00:36:16
Así que lo tengo en un array de string, que son los campos. 00:36:28
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. 00:36:31
Y voy a usar como usé antes para leer cuando añado una autora, un formateador. 00:36:42
Y tengo la fecha local, local date. 00:36:49
Me voy a poner aquí. 00:36:54
Lo primero que hago es que en el id, todo esto lo podría haber hecho en casi una línea, 00:36:55
pero me daba error y decidí separarlo para que quedase más claro, y así encontré el 00:37:03
error. 00:37:09
Entonces yo lo que voy a hacer es lo que hay en esta línea, es crear una autora con id, 00:37:10
nombre, apellidos, alias, entonces todos esos parámetros, id, nombre, apellidos, alias, 00:37:13
los estoy calculando aquí por separado para que no me quede de error. 00:37:19
Vale, el id es el campus 0, y como es un string, hago un integer value of para convertirlo en un objeto integer. 00:37:24
Luego, nombre, apellidos y áreas, como son string, simplemente los guardo. 00:37:33
Y luego, ¿qué fecha local? 00:37:37
Pues fecha local utilizo un método estático que es el parse de local date, 00:37:39
que lo que hace es que le das un string, que es el campus 4 donde está la fecha, 00:37:44
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, 00:37:48
intenta convertirlo en una fecha local. 00:37:58
Esto puede dar error, si da error saltará esta excepción, no puede convertirse en la fecha de nacimiento. 00:38:01
Pero también he guardado aquí otra excepción que es el number formal excepción, 00:38:07
porque puede capturar la extensión si fallan el integer value off 00:38:12
entonces cuando 00:38:18
esto me llama la atención 00:38:23
cuando me pongo una excepción me dice quien la va a lanzar 00:38:28
esta excepción la puede lanzar la linea 3, 4, 4 y la linea 3, 3, 6 00:38:30
el integer value off 00:38:35
entonces si el string no es un entero 00:38:37
cuando no parezca un entero o no tenga posibilidad de cambiarse de entero dará error y aquí 00:38:39
yo la capturaría, capturaría esta excepción. Y esta en cambio es la de la fecha. Al final 00:38:45
lo que hago es que creo una nueva autora con todos los valores que me he cogido del CSV 00:38:52
o que he traducido del CSV, de nombre, apellido, esa es la nueva autora. En esta línea la 00:38:58
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. 00:39:05
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, 00:39:19
leía esa autorización archivo csv y hago un return de la lista aquí he hecho un catch por si tenía 00:39:27
problemas al intentar abrir el archivo y saco los mensajes no puede ser archivo si no existe 00:39:35
o no puede cerrarse el archivo de entrada si no pudiera cerrarlo por alguna razón en el caso de 00:39:41
que haya un error lo que voy a hacer es un return null lo devolvería vacío antes no pude abrirlo 00:39:48
en una de las veces que estaba haciendo pruebas 00:39:56
pues por ejemplo 00:39:58
voy a borrarlo 00:40:00
yo borro mi Autoras CSV 00:40:04
vale 00:40:06
y ahora voy a ejecutar mi 00:40:08
programa y le digo 00:40:10
que voy a leer el archivo CSV 00:40:12
ah, pues no me ha hecho muy bien 00:40:14
me ha hecho cosas raras 00:40:16
bueno, al imprimir, es verdad 00:40:18
es por la impresión, porque me ha sacado en la pantalla 00:40:20
pero el programa sigue funcionando 00:40:23
entonces, me dice que no puede leerse 00:40:24
me muestra el menú 00:40:26
lo que pasa es que se me mezcla con la pila de errores 00:40:28
pero si yo ahora le digo que me muestre mis autoras 00:40:33
me va a decir que no muestre mis autoras 00:40:35
es que no hace un numérico 00:40:41
qué raro que me da este mensaje 00:40:46
creo que me da porque no hay autoras 00:40:48
como la tengo vacía, vale 00:40:52
y ahora si le digo salir 00:40:54
como no tiene ninguna usuaria, ninguna autora 00:40:56
me ha fallado 00:41:06
esto no lo tenía yo pensado 00:41:07
vale, esto es por hacer pruebas 00:41:09
vale, entonces ahora voy a ejecutar 00:41:11
leo desde la base de datos 00:41:15
¿dónde se ha quedado? 00:41:18
distinta 00:41:24
leo desde la base de datos 00:41:24
pago los datos 00:41:42
equivoco con uno 00:41:46
ahí están las autoras 00:41:49
le doy salir 00:41:51
y le digo que me lo guarde 00:41:52
con autoras.csv 00:41:55
ya tengo guardado 00:41:58
entonces si vuelvo a ejecutar 00:42:01
y le digo 00:42:03
archivo csv 00:42:07
ya me lo voy a echar 00:42:09
vale, tendría que arreglar un par de cosas 00:42:11
para cuando el archivo está vacío o no lo voy a abrir 00:42:12
que no me salga por pantalla 00:42:15
ese tipo de error rojo 00:42:17
y que no tenga en cuenta cuando 00:42:18
o sea que no intente hacer las cosas 00:42:20
cuando no hay autoras 00:42:23
vale 00:42:24
Pues creo que ya he probado todo, sí. Vale, me queda probar una cosa. 00:42:25
Esto. Vale, yo quería que vierais el log, que son todos los cómics que he hecho yo mientras iba haciendo el proyecto. 00:42:40
El último commit es el que he añadido aquí, que es añadido método para leer datos del 00:42:59
CSV. Este commit tiene un identificador, es único, es un código hash. Si yo lo copio, 00:43:11
yo podría hacer en mi programa que me fuera exactamente a ese commit 00:43:20
yo hago un git checkout a ese commit y mi programa aunque no os lo creáis 00:43:28
ha cambiado enormemente, de tal manera que si yo ahora lo intento ejecutar 00:43:33
estoy en el punto de hace 5 o 6 horas 00:43:38
si yo intento ejecutar el csv 00:43:42
he borrado un stack trace que había en print para que no se vea mal y ya sale bien y quería 00:43:46
que 10 es una cosa 00:44:32
si lo ejecuto 00:44:34
ya va bien 00:44:39
voy a elegir el CSV 00:44:40
y te dice que no se puede leer 00:44:42
si le digo mostrar mis autoras 00:44:44
no hay autoras 00:44:46
si le digo mostrar autoras con más premios 00:44:48
me dice que el número recibido máximo de premios es 0 00:44:50
y no hay autoras 00:44:53
si intento el 3 o el 4 00:44:53
como no hay autoras no me dice nada 00:44:56
y si intento mostrar una autora 00:44:58
en concreto como la 6 00:45:01
me dice que no hay ninguna autora y si no la hubiera me la añadiría y me la guardaría 00:45:02
eso va bien, entonces salgo y la guardo en un archivo vacío y voy a cargar desde la 00:45:08
base de datos para que me cree el CSV que está bien, se conectan los datos, me muestran 00:45:20
mis autoras, ahí están, y le voy a salir y lo guardo como autoras.csv, ahí me falta 00:45:28
un espacio, pero vale, y si vuelvo a ejecutar y voy a elegir desde, bueno, que sea yo cojo 00:45:41
ha sido CSV, me dice que leía los autores y va todo bien, ¿vale? Está ahí. Y si yo 00:45:49
añado una autora, para decirle claro, una autora, destino, un R para dar menos, ¿qué 00:46:00
rollo? Y ahora puede estar bien más corto. Vale, si muestro mis autoras, ahora estoy 00:46:14
y ahí la última y si le doy salir lo puedo guardar como autoras.psv 00:46:33
y si le enseño la carpeta y hago el archivo 00:46:42
y le importo, veréis que estoy al final en el último 00:46:49
así que ya está ahí el archivo 00:46:54
bueno, pues ahora viene la parte interesante 00:46:56
Este es mi... bueno, tengo un terminal abierto con dos sitios con mi... con mi proyecto, ¿vale? 00:47:00
Con mi proyecto en Github, en Github, perdón. 00:47:08
¿Y qué voy a hacer? Vale, enseñaros dos cosas. Uno, con el git log, aquí, veo todos los commits que he hecho últimamente. 00:47:12
Entre ellos está el que acabo de hacer de eliminar el print extract trace, ¿vale? 00:47:24
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í. 00:47:30
y añadía el método autora para que volviera a cualquier campo 00:47:49
pero no estaban hechos para nada ni el paso 3, 4 ni 5 00:47:53
entonces voy a hacer un git checkout con ese número 00:47:57
y lo que me hace es que me llevan el tiempo a ese momento 00:48:01
hace unas horas cuando yo no había hecho ni el 3, ni el 4, ni el 5 00:48:05
entonces si yo ahora vuelvo aquí a mi programa 00:48:09
y lo hago bien y lo ejecuto 00:48:13
si intento leer del csv el programa acaba porque no puede porque en ese momento no leía del csv 00:48:15
y si intento leer de la base de datos me dice que bien, R, me conecta, me muestra las autoras 00:48:21
ya veréis que está en la 60, que es una base de datos 00:48:29
pero si le digo el paso 3, que es si no me muestra el país de residencia 00:48:32
eso ya lo tengo, vale 00:48:37
y el 4, si tendría que buscar otro 00:48:41
si, es que no lo tengo 00:48:44
no puedo leer el csv 00:48:51
ni escribir el csv 00:48:54
tenía hecho lo de las autoras 00:48:55
pero no tenía hecho lo otro 00:48:58
entonces, ¿qué ha pasado? 00:49:00
que estoy en otro punto en el tiempo 00:49:01
entonces cuando yo aquí 00:49:03
en mi ventana de terminal 00:49:05
me cambio a un commit 00:49:08
cambia inmediatamente mi código 00:49:10
si os lo enseño 00:49:12
voy a ponerme, cierro aquí 00:49:14
salgo 00:49:16
y cierro la ventana y os quería enseñar, pues mira, el main, el main se va a anotar 00:49:20
y lo tengo aquí y lo que hago es con git irme otra vez a mi posición, a mi main, a 00:49:33
mi página, a mi punto actual, ¿vale? Es como que vuelvo del pasado al presente. Vale, 00:49:42
Fijaros como inmediatamente ha cambiado el código de atrás porque en NetBeans ya notamos que todo ha cambiado 00:49:49
porque aquí me ha llevado a otro punto y me han aparecido métodos que no estaban horas antes 00:49:56
como en mapear autores de CSSV, ¿de acuerdo? 00:50:01
Entonces con un GitCheckout y con el Haskell que tiene cada cómic podéis viajar en el tiempo 00:50:05
y podéis modificar el programa desde ese momento, ¿vale? 00:50:13
Y os voy a estar. 00:50:17
Gracias por la paciencia. 00:50:19
Espero que se me oiga o me estoy hablando un poco bajo. 00:50:22
Valoración:
  • 1
  • 2
  • 3
  • 4
  • 5
Eres el primero. Inicia sesión para valorar el vídeo.
Idioma/s:
es
Autor/es:
Cristina Moreno Ruiz
Subido por:
Cristina M.
Licencia:
Reconocimiento - Compartir igual
Visualizaciones:
14
Fecha:
11 de junio de 2023 - 3:46
Visibilidad:
Público
Centro:
IES LOPE DE VEGA
Duración:
50′ 36″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
155.84 MBytes

Del mismo autor…

Ver más del mismo autor

Comentarios

Para publicar comentarios debes entrar con tu nombre de usuario de EducaMadrid.

Comentarios

Este vídeo todavía no tiene comentarios. Sé el primero en comentar.



EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid