Class JDBCUserDAO

java.lang.Object
it.unisa.diem.wordageddon_g16.db.JdbcDAO<User>
it.unisa.diem.wordageddon_g16.db.JDBCUserDAO
All Implemented Interfaces:
DAO<User>, UserDAO

public class JDBCUserDAO extends JdbcDAO<User> implements UserDAO
Implementazione JDBC del UserDAO, che gestisce le operazioni Dao sullo user.

Gli utenti sono salvati nella tabella User, e rappresentati dal modello User. Tutte le interazioni con il database sono gestite tramite JdbcDAO, con logging automatico via SystemLogger.

  • Constructor Details

    • JDBCUserDAO

      public JDBCUserDAO(Connection connection)
      Costruisce un nuovo JDBCUserDAO utilizzando la connessione specificata.
      Parameters:
      connection - la connessione al database da utilizzare per le operazioni
  • Method Details

    • selectBy

      public Optional<User> selectBy(String username)
      Recupera un utente dal database in base al nome utente.
      Specified by:
      selectBy in interface UserDAO
      Parameters:
      username - il nome dell’utente da cercare
      Returns:
      un Optional contenente l’utente se trovato, altrimenti vuoto
      Throws:
      QueryFailedException - se si verifica un errore durante l'esecuzione della query
    • selectAll

      public List<User> selectAll()
      Recupera tutti gli utenti presenti nella tabella User.
      Specified by:
      selectAll in interface DAO<User>
      Returns:
      una lista contenente tutti gli utenti registrati
      Throws:
      QueryFailedException - se si verifica un errore durante la query
    • insert

      public void insert(User user)
      Inserisce un nuovo utente nella tabella User.

      Se l’utente esiste già (in base alla chiave primaria), l’inserimento viene ignorato.

      Specified by:
      insert in interface DAO<User>
      Parameters:
      user - l’oggetto User da inserire
      Throws:
      UpdateFailedException - se si verifica un errore durante l'inserimento
    • update

      public void update(User user)
      Aggiorna le informazioni di un utente esistente.
      Specified by:
      update in interface DAO<User>
      Parameters:
      user - l’oggetto User da aggiornare
      Throws:
      UpdateFailedException - se si verifica un errore durante l'aggiornamento
    • delete

      public void delete(User user)
      Elimina un utente dal database.

      L'eliminazione comporta anche la cancellazione automatica dei GameReport associati, grazie ai vincoli di integrità (ON DELETE CASCADE).

      Specified by:
      delete in interface DAO<User>
      Parameters:
      user - l’oggetto User da eliminare
      Throws:
      UpdateFailedException - se si verifica un errore durante la cancellazione
    • isEmpty

      public boolean isEmpty()
      Verifica se la tabella User è vuota.
      Returns:
      true se non esiste alcun utente nel database, altrimenti false