Class UserPanelService

java.lang.Object
it.unisa.diem.wordageddon_g16.services.UserPanelService

public class UserPanelService extends Object
Classe di 'servizio' associata alla gestione pannello utente.

Fornisce funzionalità per la gestione dei documenti, delle WDM, degli utenti e delle stopword. Opera come interfaccia tra il livello GUI e il livello DAO.

  • Field Details

  • Constructor Details

    • UserPanelService

      public UserPanelService(GameReportDAO gameReportDAO, JDBCUserDAO userDAO, DocumentDAO documentDAO, JDBCStopWordDAO stopWordDAO, JDBCWdmDAO wdmDAO, AppContext appContext)
      Costruttore del UserPanelService.
      Parameters:
      gameReportDAO - DAO per i report di gioco
      userDAO - DAO per gli utenti
      documentDAO - DAO per i documenti
      stopWordDAO - DAO per le stopword
      appContext - Contesto applicativo
  • Method Details

    • updateWDM

      public void updateWDM(WDM wdm)
      Inserisce o aggiorna una WDM nel database. Se il documento associato esiste già, aggiorna la WDM eliminando la precedente.
      Parameters:
      wdm - la matrice parola-documento da salvare
    • getCurrentUserReports

      public List<GameReport> getCurrentUserReports()
      Recupera tutti i report di gioco dell'utente attualmente loggato.
      Returns:
      List<GameReport> lista di report
    • getUserStatsForCurrentUser

      public Map<String,Object> getUserStatsForCurrentUser()
      Restituisce le statistiche (punteggio massimo, medio, numero totale) dell'utente corrente.
      Returns:
      Map<String, Object>
    • promoteUser

      public void promoteUser(String username)
      Promuove un utente a ruolo di amministratore.
      Parameters:
      username - il nome dell'utente da promuovere
    • demoteUser

      public void demoteUser(String username)
      Declassa un amministratore a semplice utente.
      Parameters:
      username - il nome dell'utente da declassare
    • getAllUsersExceptCurrent

      public List<User> getAllUsersExceptCurrent()
      Restituisce tutti gli utenti eccetto quello attualmente loggato.
      Returns:
      List<User>
    • addStopwordsFromFile

      public void addStopwordsFromFile(File file) throws IOException
      Aggiunge le stopword contenute in un file al database.
      Parameters:
      file - file di testo contenente le stopword
      Throws:
      IOException - se si verifica un errore di lettura
    • symbolicNameOf

      public String symbolicNameOf(String filename)
      Converte un nome file in un titolo simbolico con la prima lettera maiuscola di ogni parola. Esempio: "mario_rossi.txt" -> "Mario Rossi"
      Parameters:
      filename - il nome del file (può contenere estensione e underscore)
      Returns:
      String il titolo simbolico
    • getAllDocuments

      public Collection<Document> getAllDocuments()
      Restituisce tutti i documenti presenti nel sistema.
      Returns:
      Collection<Document>
    • moveDocument

      public void moveDocument(File tempFile) throws IOException
      Aggiunge un nuovo documento al sistema e copia fisicamente il file nella cartella di lavoro.
      Parameters:
      tempFile - file da importare
      Throws:
      IOException - se il file esiste già o non è accessibile
    • deleteDocument

      public void deleteDocument(Document doc)
      Elimina un documento dal database e dal filesystem se non è più utilizzato.
      Parameters:
      doc - documento da eliminare
    • getStopwords

      public Set<String> getStopwords()
      Recupera tutte le stopword.
      Returns:
      Set<String>
    • addStopWords

      public void addStopWords(String tfRaw)
      Aggiunge nuove stopword dal campo di testo dell'interfaccia grafica.
      Parameters:
      tfRaw - contenuto grezzo del campo testo
    • deleteStopword

      public void deleteStopword(String word)
      Rimuove una stopword dal sistema.
      Parameters:
      word - la parola da rimuovere
    • stopWordsParser

      private Set<String> stopWordsParser(String tfRaw)
      Estrae tutte le stopword (parole e simboli di punteggiatura) da una singola riga di testo.

      Il metodo effettua il parsing della stringa fornita, estraendo:

      • Le parole (sequenze di caratteri alfabetici) separate da spazi o punteggiatura
      • Tutti i simboli di punteggiatura presenti
      Tutti i token vengono inseriti in un Set<String> per garantire l’unicità. La stringa viene convertita in minuscolo e ripulita da spazi iniziali/finali.
      Parameters:
      tfRaw - la riga di testo da analizzare (può contenere parole e simboli)
      Returns:
      un insieme di stopword estratte dalla riga (parole e simboli di punteggiatura)