Class UserPanelController
- All Implemented Interfaces:
javafx.fxml.Initializable
Gestisce la visualizzazione delle statistiche personali dell’utente, la gestione dei documenti, delle stopwords e, se l’utente ha privilegi amministrativi, fornisce gli strumenti per la gestione degli utenti.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate javafx.scene.layout.Pane
private javafx.scene.layout.AnchorPane
private final AppContext
Riferimento al contesto applicativo che fornisce accesso ai servizi e alle risorse condivise.private javafx.scene.control.Label
private final User
Riferimento all’utente attualmente autenticato nell'applicazione.private final AtomicBoolean
Indica se è in corso un ricalcolo delle WDM, per evitare concorrenza.private javafx.scene.control.TableColumn
<GameReport, String> private javafx.scene.control.Label
private final AtomicBoolean
Se 'true', segnala che un altro ricalcolo WDM è stato richiesto mentre uno era già in esecuzione.private javafx.scene.control.TableColumn
<GameReport, Integer> private final UserPanelService
private javafx.scene.layout.StackPane
private javafx.scene.control.TableColumn
<GameReport, String> (package private) ExecutorService
Thread pool utilizzato per il ricalcolo parallelo delle WDM.private javafx.scene.control.Label
private javafx.scene.control.Label
private javafx.scene.control.TableView
<GameReport> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
Metodo di callback chiamato al termine del ricalcolo delle WDM.private void
Apre un popup per la gestione dei ruoli degli utenti presenti nel sistema.private void
Apre un popup per la gestione dei documenti testuali.private void
Gestisce il ritorno alla schermata del menu principale.private void
Effettua il logout dell'utente corrente e ritorna alla schermata di autenticazione.private void
Apre un popup che permette la gestione delle stopwords.void
initialize
(URL url, ResourceBundle resourceBundle) Metodo di inizializzazione del controller, invocato automaticamente da JavaFX.private void
Avvia il ricalcolo parallelo delleWDM
(Word Document Matrix) per tutti i documenti registrati nel database.
-
Field Details
-
service
-
adminPanel
private javafx.scene.layout.Pane adminPanel -
livelloClm
-
totalGameLabel
private javafx.scene.control.Label totalGameLabel -
avgScoreLabel
private javafx.scene.control.Label avgScoreLabel -
maxScoreLabel
private javafx.scene.control.Label maxScoreLabel -
punteggioClm
-
tempoClm
-
userTableView
-
usernameLabel
private javafx.scene.control.Label usernameLabel -
anchorSemicerchio
private javafx.scene.layout.AnchorPane anchorSemicerchio -
stackMedio
private javafx.scene.layout.StackPane stackMedio -
currentUser
Riferimento all’utente attualmente autenticato nell'applicazione. -
appContext
Riferimento al contesto applicativo che fornisce accesso ai servizi e alle risorse condivise. -
isRecalculatingWDMs
Indica se è in corso un ricalcolo delle WDM, per evitare concorrenza. -
needsRecalculation
Se 'true', segnala che un altro ricalcolo WDM è stato richiesto mentre uno era già in esecuzione. -
threadPool
ExecutorService threadPoolThread pool utilizzato per il ricalcolo parallelo delle WDM. Ogni thread esegue un task di aggiornamento della WDM di una specifica WDM. Per evitare concorrenza indesiderata, tali thread sono usati solo per il calcolo delle WDM
-
-
Constructor Details
-
UserPanelController
Costruttore del controller.- Parameters:
context
- Il contesto applicativo che fornisce accesso all'utente corrente e ai service delle interfacce.
-
-
Method Details
-
handleAdmin
private void handleAdmin()Apre un popup per la gestione dei ruoli degli utenti presenti nel sistema.Viene visualizzata una lista di utenti (escluso l'attuale tramite
UserPanelService.getAllUsersExceptCurrent()
), ognuno dei quali può essere promosso o degradato tramite unToggleButton
. L’aggiornamento del ruolo viene effettuato tramite chiamate aUserPanelService.promoteUser(String)
oUserPanelService.demoteUser(String)
. -
handleDocumenti
private void handleDocumenti()Apre un popup per la gestione dei documenti testuali.Funzionalità offerte:
- Visualizzazione di tutti i documenti salvati nel database.
- Rimozione di documenti esistenti.
- Caricamento di nuovi documenti con estensione ".txt" tramite
FileChooser
.
Dopo il caricamento, viene avviato in background il calcolo automatico della WDM associata, tramite
UserPanelService.updateWDM(WDM)
. -
handleLogOut
private void handleLogOut()Effettua il logout dell'utente corrente e ritorna alla schermata di autenticazione. -
handleGoBack
private void handleGoBack()Gestisce il ritorno alla schermata del menu principale. -
handleStopWords
private void handleStopWords()Apre un popup che permette la gestione delle stopwords.Le funzionalità offerte includono:
- Aggiunta manuale tramite un
TextField
- Caricamento da file di solo tipo '.txt'
- Rimozione selezionata di stopwords da una
ListView
Se viene rilevata una modifica alle stopwords, al termine della finestra viene avviato automaticamente il ricalcolo di tutte le WDM associate ai documenti esistenti nel sistema in modo ascrincono attraverso il thread pool
- Aggiunta manuale tramite un
-
reCalculateWDMs
private void reCalculateWDMs()Avvia il ricalcolo parallelo delleWDM
(Word Document Matrix) per tutti i documenti registrati nel database.Viene creato un
Task
per ogni documento, eseguito tramite unExecutorService
. Ogni task aggiorna la matrice WDM associata invocandoUserPanelService.updateWDM(WDM)
.Il metodo assicura che il ricalcolo non avvenga in parallelo ad altri ricalcoli tramite il flag
isRecalculatingWDMs
, mentre eventuali richieste successive vengono accodate tramiteneedsRecalculation
. -
completeRecalculation
private void completeRecalculation()Metodo di callback chiamato al termine del ricalcolo delle WDM.Ripristina il flag
isRecalculatingWDMs
a 'false'. Se durante l’esecuzione erano state richieste ulteriori modifiche (es. nuove stopwords), il metodo ne avvia automaticamente un nuovo ricalcolo. -
initialize
Metodo di inizializzazione del controller, invocato automaticamente da JavaFX.Imposta i contenuti iniziali dell’interfaccia utente, tra cui:
- Nome utente
- Visualizzazione dell' adminPanel solo se l’utente è un amministratore
- Popolamento della tabella
userTableView
con iGameReport
tramite la chiamata al metodoUserPanelService.getCurrentUserReports()
- Calcolo attraverso il metodo
UserPanelService.getCurrentUserReports()
e visualizzazione delle statistiche dell’utente corrente come punteggio massimo, media, numero di partite giocate
- Specified by:
initialize
in interfacejavafx.fxml.Initializable
-