Open HugoSanchezGallego opened 1 week ago
@startuml !define RECTANGLE entity skinparam linetype ortho skinparam directionTopDownStrategy vertical_center
RECTANGLE Programa { +INTEGER id +TEXT nombre }
RECTANGLE SplashScreen { +INTEGER id +TEXT estado +INTEGER programa_id }
RECTANGLE CSVLoader { +INTEGER id +TEXT archivo +INTEGER programa_id +void cargarDatos() }
RECTANGLE Menu { +INTEGER id +TEXT opciones +INTEGER programa_id }
RECTANGLE Graph { +INTEGER id +TEXT tipo_grafico +INTEGER menu_id +void aplicarFiltro(TipoFiltro) }
RECTANGLE Data { +INTEGER id +TEXT contenido +INTEGER graph_id }
RECTANGLE ExecutorServiceManager { +INTEGER id +TEXT estado +INTEGER programa_id +void ejecutarConcurrencia() }
RECTANGLE DataProcessor { +INTEGER id +TEXT estado +INTEGER executor_service_manager_id }
RECTANGLE SyncManager { +INTEGER id +TEXT estado +INTEGER data_processor_id }
RECTANGLE CountDownLatch { +INTEGER id +INTEGER cuenta +INTEGER sync_manager_id }
RECTANGLE CyclicBarrier { +INTEGER id +INTEGER cuenta +INTEGER sync_manager_id }
RECTANGLE DatabaseService { +INTEGER id +TEXT estado +INTEGER programa_id +void insertarDatosConcurrentes(datos) }
RECTANGLE Usuario { +INTEGER id +TEXT nombre +TEXT contrasena }
RECTANGLE Autenticacion { +void autenticar() +void crearUsuario() }
RECTANGLE Dataset { +INTEGER rank +TEXT country +INTEGER IQ +FLOAT education_expenditure +FLOAT avg_income +FLOAT avg_temp }
Programa --> SplashScreen : "pertenece a" Programa --> CSVLoader : "pertenece a" Programa --> Menu : "pertenece a" Programa --> ExecutorServiceManager : "gestiona" Programa --> DatabaseService : "gestiona"
Menu --> Graph : "genera" Graph --> Data : "contiene"
ExecutorServiceManager --> DataProcessor : "procesa" DataProcessor --> SyncManager : "sincroniza" SyncManager --> CountDownLatch : "usa" SyncManager --> CyclicBarrier : "usa"
CSVLoader --> Dataset : "carga" CSVLoader --> CountDownLatch : "libera latch" SplashScreen --> CountDownLatch : "espera latch" SplashScreen --> Menu : "ocultar splash" DatabaseService --> ExecutorServiceManager : "inserta concurrentemente"
Usuario --> Autenticacion : "delegar autenticación" Autenticacion --> Menu : "mostrar menu" Autenticacion --> ExecutorServiceManager : "ejecuta autenticación" Usuario --> DatabaseService : "gestiona usuarios"
left to right direction Programa -[hidden]-> SplashScreen CSVLoader -[hidden]-> Dataset ExecutorServiceManager -[hidden]-> DataProcessor
@enduml
@startuml entity "Programa" { +INTEGER id +TEXT nombre }
entity "SplashScreen" { +INTEGER id +TEXT estado +INTEGER programa_id }
entity "CSVLoader" { +INTEGER id +TEXT archivo +INTEGER programa_id +void cargarDatos() }
entity "Menu" { +INTEGER id +TEXT opciones +INTEGER programa_id }
entity "Graph" { +INTEGER id +TEXT tipo_grafico +INTEGER menu_id +void aplicarFiltro(TipoFiltro) }
entity "Data" { +INTEGER id +TEXT contenido +INTEGER graph_id }
entity "ExecutorServiceManager" { +INTEGER id +TEXT estado +INTEGER programa_id +void ejecutarConcurrencia() }
entity "DataProcessor" { +INTEGER id +TEXT estado +INTEGER executor_service_manager_id }
entity "SyncManager" { +INTEGER id +TEXT estado +INTEGER data_processor_id }
entity "CountDownLatch" { +INTEGER id +INTEGER cuenta +INTEGER sync_manager_id }
entity "CyclicBarrier" { +INTEGER id +INTEGER cuenta +INTEGER sync_manager_id }
entity "DatabaseService" { +INTEGER id +TEXT estado +INTEGER programa_id +void insertarDatosConcurrentes(datos) }
entity "Usuario" { +INTEGER id +TEXT nombre +TEXT contrasena }
entity "Autenticacion" { +void autenticar() +void crearUsuario() }
entity "Dataset" { +INTEGER rank +TEXT country +INTEGER IQ +FLOAT education_expenditure +FLOAT avg_income +FLOAT avg_temp }
Programa ||--o{ SplashScreen : "pertenece a" Programa ||--o{ CSVLoader : "pertenece a" Programa ||--o{ Menu : "pertenece a" Programa ||--o{ ExecutorServiceManager : "gestiona" Programa ||--o{ DatabaseService : "gestiona"
Menu ||--o{ Graph : "genera"
Graph ||--o{ Data : "contiene"
ExecutorServiceManager ||--o{ DataProcessor : "procesa" DataProcessor ||--o{ SyncManager : "sincroniza" SyncManager ||--o{ CountDownLatch : "usa" SyncManager ||--o{ CyclicBarrier : "usa"
CSVLoader ||--o{ Dataset : "carga"
CSVLoader --|> CountDownLatch : "libera latch cuando finaliza" SplashScreen --|> CountDownLatch : "espera a latch" SplashScreen --> Menu : "ocultar splash cuando CSV termina" DatabaseService --|> ExecutorServiceManager : "ejecuta inserción concurrente" CSVLoader --|> ExecutorServiceManager : "ejecuta en paralelo"
Usuario --|> Autenticacion : "delegar autenticación" Autenticacion --|> Menu : "mostrar menu tras autenticación" Autenticacion --> ExecutorServiceManager : "ejecuta autenticación en paralelo" Usuario --> DatabaseService : "gestiona base de datos de usuarios"
@enduml