Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Segunda parte Examen Ordinario - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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.
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
si
00:23:06
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:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- 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
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.