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 recordRecord interno che rappresenta una voce nella classifica. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Userprivate final JDBCGameReportDAOprivate 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.LeaderboardEntryper 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.LeaderboardEntryrelativa 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,nullper classifica globale- Returns:
- lista ordinata di
LeaderboardService.LeaderboardEntry
-