Class LeaderboardService
java.lang.Object
it.unisa.diem.wordageddon_g16.services.LeaderboardService
Classe che gestisce la classifica globale e filtrata per difficoltà nel gioco.
Recupera i dati dei punteggi dei giocatori tramite JDBCGameReportDAO
e costruisce
statistiche aggregate come punteggio medio, totale, e numero di partite giocate.
Evidenzia l'utente corrente nella lista e determina la difficoltà preferita se non filtrata.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record
Record interno che rappresenta una voce nella classifica. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final User
private final JDBCGameReportDAO
private final Collection
<User> -
Constructor Summary
ConstructorsConstructorDescriptionLeaderboardService
(AppContext context, JDBCGameReportDAO gameReportDAO, UserDAO userDAO) Cosstruttore della classeLeaderboardService
. -
Method Summary
Modifier and TypeMethodDescriptionRestituisce la classifica globale di tutti gli utenti, indipendentemente dalla difficoltà.private List
<LeaderboardService.LeaderboardEntry> getLeaderboardBase
(Difficulty difficulty) Metodo interno che costruisce la classifica base, utilizzata sia globalmente che per singola difficoltà.getLeaderboardByDifficulty
(Difficulty difficulty) Restituisce la classifica filtrata per una specifica difficoltà.
-
Field Details
-
gameReportDAO
-
users
-
currentUser
-
-
Constructor Details
-
LeaderboardService
Cosstruttore della classeLeaderboardService
.- Parameters:
context
- il contesto applicativo corrente contenente l'utente attivogameReportDAO
- DAO per i report di giocouserDAO
- DAO per la selezione degli utenti
-
-
Method Details
-
getGloablLeaderboard
Restituisce la classifica globale di tutti gli utenti, indipendentemente dalla difficoltà.Ogni voce include punteggio medio, totale e statistiche aggregate.
- Returns:
- lista ordinata di
LeaderboardService.LeaderboardEntry
per tutti gli utenti
-
getLeaderboardByDifficulty
Restituisce la classifica filtrata per una specifica difficoltà.- Parameters:
difficulty
- difficoltà da considerare per la classifica- Returns:
- lista ordinata di
LeaderboardService.LeaderboardEntry
relativa alla difficoltà selezionata - Throws:
IllegalArgumentException
- sedifficulty
ènull
-
getLeaderboardBase
Metodo interno che costruisce la classifica base, utilizzata sia globalmente che per singola difficoltà.Per ogni utente:
- Recupera i report di gioco filtrati (se richiesto)
- Calcola media, totale e numero di partite
- Determina la difficoltà preferita se non filtrato
- Evidenzia l'utente corrente apponendo "(Tu)"
- Parameters:
difficulty
- difficoltà da filtrare,null
per classifica globale- Returns:
- lista ordinata di
LeaderboardService.LeaderboardEntry
-