Skip to content
NikoblasPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Backend - API REST para Gestión de Eventos y Fuentes

Descripción

Este backend implementa una API REST en Java para gestionar eventos y fuentes. Los datos se cargan desde archivos CSV sin utilizar bases de datos, y la carga se realiza de forma paralela para optimizar el rendimiento.

Requisitos

  • Java 8 o superior
  • Maven 3.6 o superior

Estructura del Proyecto

backend/
├── src/
│   ├── main/
│   │   ├── java/com/ariadna/backend/
│   │   │   ├── BackendServer.java      # Servidor principal con endpoints REST
│   │   │   ├── DataLoader.java         # Carga de datos desde archivos CSV
│   │   │   ├── model/
│   │   │   │   ├── Evento.java         # Modelo de datos para eventos
│   │   │   │   └── Fuente.java         # Modelo de datos para fuentes
│   │   │   └── service/
│   │   │       └── DataLoaderService.java
│   │   └── resources/
│   │       ├── fuentes.csv             # Archivo de fuentes
│   │       └── eventos_1.csv a eventos_6.csv  # Archivos de eventos
│   └── test/
│       └── java/com/ariadna/backend/
│           ├── BackendServerTest.java   # Tests para endpoints
│           └── DataLoaderTest.java      # Tests para carga de datos
├── pom.xml                             # Configuración de Maven
└── README.md                           # Este archivo

Instalación y Ejecución

1. Compilar el proyecto

cd backend
mvn clean compile

2. Ejecutar los tests

mvn test

3. Ejecutar el servidor

Opción 1: Usando Maven exec plugin

mvn exec:java -Dexec.mainClass="com.ariadna.backend.BackendServer"

Opción 2: Crear JAR ejecutable

mvn clean package
java -jar target/backend-1.0.0.jar

El servidor se iniciará en http://localhost:4567

Endpoints de la API

Fuentes

  • GET /api/fuentes - Obtener todas las fuentes
  • GET /api/fuentes/:id - Obtener una fuente específica por ID

Eventos

  • GET /api/eventos - Obtener todos los eventos
  • GET /api/eventos/:id - Obtener un evento específico por ID
  • GET /api/eventos/fuente/:fuenteId - Filtrar eventos por fuente
  • GET /api/eventos/fecha?desde=YYYY-MM-DDTHH:mm:ssZ&hasta=YYYY-MM-DDTHH:mm:ssZ - Filtrar eventos por rango de fechas
  • GET /api/eventos/pagina?pagina=1&tamano=10 - Obtener eventos con paginación

Estadísticas

  • GET /api/stats - Obtener estadísticas generales (total fuentes, eventos, promedio de valores)

Formato de Datos

Fuentes (fuentes.csv)

id,nombre,latitud,longitud
1,Fuente Norte,40.4168,-3.7038
2,Fuente Sur,37.3891,-5.9845
...

Eventos (eventos_X.csv)

id,fuente_id,timestamptz,valor,latitud,longitud
1,1,2024-06-01T10:00:00Z,23.5,40.4170,-3.7035
2,2,2024-06-01T10:05:00Z,19.8,37.3895,-5.9840
...

Características Técnicas

  • Carga paralela: Los archivos de eventos se cargan en paralelo usando ExecutorService
  • Sin base de datos: Todos los datos se mantienen en memoria
  • CORS habilitado: Permite peticiones desde el frontend
  • JSON responses: Todas las respuestas están en formato JSON
  • Tests unitarios: Cobertura de tests para carga de datos y lógica de filtrado

Dependencias

  • Spark Java: Framework web ligero para crear la API REST
  • Gson: Para serialización/deserialización JSON
  • JUnit: Para tests unitarios

Ejemplos de Uso

Obtener todas las fuentes

curl http://localhost:4567/api/fuentes

Obtener eventos de una fuente específica

curl http://localhost:4567/api/eventos/fuente/1

Filtrar eventos por fecha

curl "http://localhost:4567/api/eventos/fecha?desde=2024-06-01T10:00:00Z&hasta=2024-06-01T11:00:00Z"

Obtener eventos paginados

curl "http://localhost:4567/api/eventos/pagina?pagina=1&tamano=5"

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages