Class JDBCGameReportDAO
java.lang.Object
it.unisa.diem.wordageddon_g16.db.JdbcDAO<GameReport>
it.unisa.diem.wordageddon_g16.db.JDBCGameReportDAO
- All Implemented Interfaces:
DAO<GameReport>
,GameReportDAO
Implementazione JDBC del
DocumentDAO
, che gestisce le operazioni sui report.
I report sono salvati nella tabella GameReport
e rappresentati tramite il model GameReport
.
Tutte le interazioni con il database sono gestite tramite JdbcDAO
, con logging automatico via SystemLogger
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DocumentDAO
DAO utilizzato per la gestione dei documenti associati ai report di gioco.private final UserDAO
DAO utilizzato per la gestione degli utenti associati ai report di gioco.Fields inherited from class it.unisa.diem.wordageddon_g16.db.JdbcDAO
connection
-
Constructor Summary
ConstructorsConstructorDescriptionJDBCGameReportDAO
(Connection conn, DAO<Document> documentDAO, DAO<User> userDAO) Costruisce un nuovoJDBCGameReportDAO
utilizzando la connessione e i DAO specificati. -
Method Summary
Modifier and TypeMethodDescriptionvoid
delete
(GameReport gameReport) Elimina unGameReport
dal database.void
insert
(GameReport gameReport) Inserisce un nuovoGameReport
nel database e associa i documenti tramite la tabellaContent
.private String
preFormatTime
(long time) Formatta un valore temporale (in secondi) in una stringa nel formato MM:SS.Recupera tutti i report di gioco presenti nella tabellaGameReport
.private List
<GameReport> selectBase
(String query, Object... params) Metodo interno di utilità per eseguire una query di selezione e mappare i risultati in oggettiGameReport
.Recupera un report di gioco dal database sulla base dell'utente e del timestamp.selectWhere
(String sqlClause, Object... params) Recupera i report di gioco che soddisfano una specifica clausola SQL.void
update
(GameReport gameReport) Aggiorna unGameReport
esistente nel database.Methods inherited from class it.unisa.diem.wordageddon_g16.db.JdbcDAO
executeQuery, executeQuery, executeUpdate, isEmpty
-
Field Details
-
userDAO
DAO utilizzato per la gestione degli utenti associati ai report di gioco. -
documentDAO
DAO utilizzato per la gestione dei documenti associati ai report di gioco.
-
-
Constructor Details
-
JDBCGameReportDAO
Costruisce un nuovoJDBCGameReportDAO
utilizzando la connessione e i DAO specificati.- Parameters:
conn
- la connessione al database da utilizzare per le operazionidocumentDAO
- il DAO per la gestione dei documentiuserDAO
- il DAO per la gestione degli utenti
-
-
Method Details
-
selectBy
Recupera un report di gioco dal database sulla base dell'utente e del timestamp.- Specified by:
selectBy
in interfaceGameReportDAO
- Parameters:
user
- l'utente autore del reporttimestamp
- il timestamp univoco della partita- Returns:
- un
Optional
contenente il report trovato, o vuoto se non esiste - Throws:
QueryFailedException
- se si verifica un errore durante la query
-
selectAll
Recupera tutti i report di gioco presenti nella tabellaGameReport
.- Specified by:
selectAll
in interfaceDAO<GameReport>
- Returns:
- una lista di tutti i report presenti nel database
- Throws:
QueryFailedException
- se si verifica un errore durante la query
-
selectWhere
Recupera i report di gioco che soddisfano una specifica clausola SQL.- Parameters:
sqlClause
- la clausolaWHERE
da applicare (senza la parola chiaveWHERE
)params
- i parametri da sostituire nella query- Returns:
- una lista di report che corrispondono ai criteri specificati
- Throws:
QueryFailedException
- se si verifica un errore durante la query
-
selectBase
Metodo interno di utilità per eseguire una query di selezione e mappare i risultati in oggettiGameReport
. Recupera anche i documenti associati tramite la tabellaContent
.- Parameters:
query
- la query SQL completa da eseguireparams
- i parametri da usare nella query- Returns:
- una lista di
GameReport
risultanti - Throws:
QueryFailedException
- se si verifica un errore durante l'elaborazione dei risultati
-
insert
Inserisce un nuovoGameReport
nel database e associa i documenti tramite la tabellaContent
.- Specified by:
insert
in interfaceDAO<GameReport>
- Parameters:
gameReport
- il report da salvare- Throws:
QueryFailedException
- se si verifica un errore durante l'inserimento
-
preFormatTime
Formatta un valore temporale (in secondi) in una stringa nel formato MM:SS. Garantisce che il tempo formattato rispetti i vincoli del database:- Parameters:
time
- il tempo da formattare- Returns:
- una
String
nel formato "MM:SS" che rappresenta il tempo normalizzato
-
update
Aggiorna unGameReport
esistente nel database.Nota: questa operazione modifica solo la tabella
GameReport
, non la tabellaContent
.- Specified by:
update
in interfaceDAO<GameReport>
- Parameters:
gameReport
- il report aggiornato- Throws:
UpdateFailedException
- se si verifica un errore durante l'aggiornamento
-
delete
Elimina unGameReport
dal database.Grazie al vincolo
ON DELETE CASCADE
, i documenti associati nella tabellaContent
vengono eliminati automaticamente.- Specified by:
delete
in interfaceDAO<GameReport>
- Parameters:
gameReport
- il report da eliminare- Throws:
UpdateFailedException
- se si verifica un errore durante la rimozione
-