Autor/a: <Santiago Diestro Gallego> uvus:<sandiegal>
Este proyecto tiene como objetivo es escoger y manipular un dataset e implementar, documentar y probar un tipo base.
- /src: Contiene los diferentes archivos que forman parte del proyecto.
- fp.<conflict>: Paquete que contiene los tipos del proyecto.
- fp.<conflict.test>: Paquete que contiene las clases de test del proyecto.
- fp.common: Paquete que contiene los tipos auxiliares del proyecto
- fp.utiles: Paquete que contiene las clases de utilidad.
- /data: Contiene el dataset o datasets del proyecto
- <conflict_data_cod.csv>: Este dataset recoge diferentes conflictos en la República Democrática del Congo
URL del dataset: https://www.kaggle.com/manassengudia/drc-conflicts-19972020
El dataset estan compuesto por <8> columnas, con la siguiente descripcion:
- <columna 1>: de tipo <Int>, representa el numero de identificación de los datos.
- <columna 2>: de tipo <String>, representa el id del evento.
- <columna 3>: de tipo <LocalDate>, representa la decha del evento.
- <columna 4>: de tipo <String>, representa tipo del evento.
- <columna 5>: de tipo <String>, representa la localización del evento.
- <columna 6>: de tipo <Double>, representa la longitud de la localizacion.
- <columna 7>: de tipo <Integer>, representa el numero de víctimas.
- <columna 8>: de tipo <Boolean>, representa el uso o no de armas de fuego.
Los tipos que se han implementado en el proyecto son los siguientes:
Representa un conflicto concreto. Propiedades:
- dataId, de tipo Integer, consultable. Indica el id de los datos.
- eventId, de tipo String, consultable. Indica el id del evento.
- date, de tipo LocalDate, consultable. Indica la fecha del evento.
- type, de tipo String, consultable. Indica el tipo del evento.
- location, de tipo String, consultable. Indica la localización del evento.
- longitude, de tipo Double, consultable. Indica la longitud de la localización del evento.
- fatalities, de tipo Integer, consultable. Indica el número de victimas.
- firearm, de tipo List<Boolean>, consultable. Indica si han sido usadas armas de fuego o no.
- importanciaDerivada, de tipo Imporatancia, consultable. Indica la importancia del evento. Puede tomar los valores GRANDE,MEDIA,PEQUEÑA
- gruposArmados, de tipo List, consultable. Son los diferentes grupos armados que han actuado en el conflicto.
- victima, de tipo Victima, consultable. Indica los datos de las víctimas del conflicto.
Constructores:
- C1: Tiene un parámetro por cada propiedad básica del tipo.
- C2: Crea un objeto de tipo Conflicto a partir de los siguientes parámetros: Integer dataId, String eventId, LocalDate date, String location, Double longitude, Integer fatalities
Restricciones:
- R1: dataId no puede ser mayor de 8000000.
- R2: el tipo del conflicto no puede estar vacio. *Criterio de igualdad: Dos partidas son iguales si todas sus dataId y eventId coinciden.
Criterio de ordenación: Por eventId y firearm.
Otras operaciones: añadeGruposArmados, función la cual nos permite añadir los nombres de los grupos armados a la lista gruposArmados.
- Importancia, ENUMERADO. Puede tomar los valores GRANDE,MEDIA,PEQUEÑA.
- Victima. Representa los datos de la víctimas.
-
leerConflicto: recibe como parámetro una cadena con el formato de las líneas del fichero CSV, y devuelve un objeto del tipo a partir de esa cadena.
-
parsearConflicto: recibe como parámetro una cadena que contiene el nombre y ruta del fichero CSV, y devuelve una lista de objetos del tipo.
-leerConflictoStrm: recibe como parámetro una cadena que contiene el nombre y ruta del fichero CSV y devuelve un objeto del tipo contenedor creado mediante el constructor C3.
- En esta interfaz se encuentran todos los metodos utilizados en los tipos contenedores.
Propiedades:
- conflictos de tipo List<Conflicto>, consultable.
Constructores:
-C1: tiene todas las propiedades básicas excepto conflicto, y crea un objeto de tipo contenedor sin ningún elemento en la colección.
-C2: otro con todas las propiedades básicas y una colección de objetos del tipo base, que crea un objeto de tipo contenedor con todos los elementos de la colección.
-C3: constructor con todas las propiedades basicas y un stream de objetos de tipo base que crea un objeto del tipo contenedor con todos los elementos del stream.
Criterio de igualdad: comprueba la igualdad entre dos propiedades.
Otras operaciones: -getNumeroConflictos: permite obtener el numero de elementos de conflictos
-añadirConflictos: permite añadir un elemento a conflictos
-añadirCollectionConflictos: permite añadir una colección a conflictos
-eliminarConflicto: permite eliminar un elemento de conflictos
-existeConflictoConNFatalities: comprueba si existe algún conflicto que tenga el numero de muertes que le pasamos como parámetro.
-getSumaFatalities: calcula la suma de todos las muertes de los conflictos.
-getConflictosSitio: devuelve los conflictos ocurridos en el lugar que pasamos como parámetro.
-ConflictoId: Devuelve un Map en el que las claves son el event type y los valores una listas de tipo Conflicto los cuales deben tener un id mayor al que entramos por parámetro
-ConteoConflictosPorLocalizacion: Devuelve un Map en el que las claves son las localiciones y los valores el número de conflictos ocurridos en esa dicha localizacion
-existeConflictoConNFatalitiesStreams: comprueba si existe algún conflicto que tenga el numero de muertes que le pasamos como parámetro, implementado con streams.
-getSumaFatalitiesStreams: calcula la suma de todos las muertes de los conflictos, implementado con streams.
-getConflictosSitioStreams: devuelve los conflictos ocurridos en el lugar que pasamos como parámetro, implementado con streams.
-getMaxMuertesSitio: devuelve el conflicto con mayor numero de muertes de la localizacion pasada por parametro.
-getConflictosSitioOrdenadosPorMuertes: devuelve una lista con los conflictos de la localizacion que pasamos por parametro ordenados segun el numero de muertes de mayor a menor
-ConteoConflictosPorLocalizacionStreams: devuelve un Map en el que las claves son las localiciones y los valores el número de conflictos ocurridos en esa dicha localizacion.
-ConflictosSitios: devuelve una lista con las ubicaciones de los conflictos haciendo uso del Collector mapping
-tipoConflictoMaxMuertes: devuelve un map en el que las claves son el tipo de conflicto y las claves el maximo numero de fatalities en dicho tipo de conflicto
-localizacionesNMayorNumeroFatalities: devuelve un sortedMap en el que los valores son las localizaciones y las claves son una lista de los N mayores numeros de Fatalities en ese lugar
-mayorConflicto: Esta funcion devuelve la localizacion con mayor numero de Fatalities