ssbm.db
Class DatabaseConnector

java.lang.Object
  extended by ssbm.db.DatabaseConnector

public class DatabaseConnector
extends java.lang.Object

Questa classe si occupa della gestione della comunicazione con il database dell’applicazione.
Fornisce i metodi necessari alla connessione al database e all’esecuzione di statement e transazioni SQL.

Author:
Salvatore Piccione

Nested Class Summary
private static class DatabaseConnector.MySQLErrorCode
          Questa classe riporta il codice degli errori di MySQL che sono gestiti da questa classe.
 
Field Summary
private  java.sql.Connection dbConnection
          La connessione al database dell'applicazione.
 
Constructor Summary
DatabaseConnector()
          Costruisce un'istanza in grado di connettersi al database dell'applicazione.
 
Method Summary
 void closeConnection()
          Chiude la connessione al database dell'applicazione.
 void closeStatement(java.sql.PreparedStatement statement)
          Chiude uno statement SQL liberando tutte le risorse ad esso associate.
 void commit()
          Avvia l'esecuzione di una transazione.
 void connect()
          Avvia la connessione al database dell'applicazione.
 int executeDelete(java.sql.PreparedStatement statement)
          Esegue uno statement SQL di eliminazione.
private  int executeDMStatement(java.sql.PreparedStatement statement)
          Esegue uno statement SQL di manipolazione di dati (inserimento, eliminazione e modifica).
 int executeInsert(java.sql.PreparedStatement statement)
          Esegue uno statement SQL di inserimento.
 java.sql.ResultSet executeQuery(java.sql.PreparedStatement query)
          Esegue uno statement SQL di interrogazione.
 int executeUpdate(java.sql.PreparedStatement statement)
          Esegue uno statement SQL di aggiornamento.
 boolean isClosed()
          Controlla se la connessione al database dell'applicazione è chiusa.
 java.sql.PreparedStatement prepareStatement(java.lang.String statement)
          Compila uno statement SQL e restituisce il risultato della compilazione.
 void rollback()
          Annulla gli effetti degli statement SQL di manipolazione dei dati eseguiti nell’ambito di una transazione fino al momento in cui è invocato questo metodo.
 void setAutoCommit(boolean activated)
          Imposta il commit automatico degli statement SQL.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dbConnection

private java.sql.Connection dbConnection
La connessione al database dell'applicazione.

Constructor Detail

DatabaseConnector

public DatabaseConnector()
                  throws DatabaseException
Costruisce un'istanza in grado di connettersi al database dell'applicazione.

Throws:
DatabaseException - se ci sono problemi nel caricamento del driver JDBC.
Method Detail

connect

public void connect()
             throws DatabaseException
Avvia la connessione al database dell'applicazione.

Throws:
DatabaseException - nel caso si verifichino errori durante la connessione al database.

closeConnection

public void closeConnection()
                     throws DatabaseException
Chiude la connessione al database dell'applicazione.

Throws:
DatabaseException - nel caso in cui ci siano dei problemi nella chiusura della connessione con il database.

closeStatement

public void closeStatement(java.sql.PreparedStatement statement)
                    throws DatabaseException
Chiude uno statement SQL liberando tutte le risorse ad esso associate.

Parameters:
statement - lo statement SQL da chiudere.
Throws:
DatabaseException - nel caso si verifichino problemi nella chiusura dello statement.

rollback

public void rollback()
              throws DatabaseException
Annulla gli effetti degli statement SQL di manipolazione dei dati eseguiti nell’ambito di una transazione fino al momento in cui è invocato questo metodo.

Throws:
DatabaseException - se è lanciata una SQLException durante l'esecuzione del rollback.

executeUpdate

public int executeUpdate(java.sql.PreparedStatement statement)
                  throws DatabaseException,
                         DomainException
Esegue uno statement SQL di aggiornamento.

Parameters:
statement - lo statement SQL di aggiornamento (UPDATE) da eseguire.
Returns:
il numero di tuple aggiornate.
Throws:
DomainException - se si verifica una delle seguenti condizioni:
  • duplicazione di dati che non ammettono duplicati;
  • riferimento a dati che non esistono.
DatabaseException - se è lanciata una SQLException durante l'esecuzione dello statement.
See Also:
DomainException.DUPLICATED_DATA_UPDATE_ERROR, DomainException.MISSED_REFERENCE_UPDATE_ERROR

executeDelete

public int executeDelete(java.sql.PreparedStatement statement)
                  throws DomainException,
                         DatabaseException
Esegue uno statement SQL di eliminazione.

Parameters:
statement - lo statement SQL di eliminazione (DELETE) da eseguire.
Returns:
il numero di tuple eliminate.
Throws:
DomainException - se si eliminano dei dati referenziati.
DatabaseException - se è lanciata una SQLException durante l'esecuzione dello statement.
See Also:
DomainException.DELETE_REFERENCED_DATA_ERROR

executeDMStatement

private int executeDMStatement(java.sql.PreparedStatement statement)
                        throws java.sql.SQLException,
                               DatabaseException
Esegue uno statement SQL di manipolazione di dati (inserimento, eliminazione e modifica).
Se si verifica un errore durante l'esecuzione dello statement e lo statement fa parte di una transazione, si effettua il rollback.

Parameters:
statement - lo statement di manipolazione dati da eseguire.
Returns:
il numero di tuple manipolate (inserite, eliminate o modificate).
Throws:
java.sql.SQLException - se si verifica una delle seguenti condizioni:
  • errore nell'accesso al database;
  • lo statement passato come parametro è chiuso;
  • lo statement passato come parametro è un'interrogazione.
DatabaseException - se si verifica un problema nella chiusura dello statement.

executeInsert

public int executeInsert(java.sql.PreparedStatement statement)
                  throws DatabaseException,
                         DomainException
Esegue uno statement SQL di inserimento.

Parameters:
statement - lo statement SQL di inserimento da eseguire.
Returns:
il numero di tuple inserite.
Throws:
DomainException - se si verifica una delle seguenti condizioni:
  • duplicazione di dati che non ammettono duplicati;
  • riferimento a dati che non esistono.
DatabaseException - se è lanciata una SQLException durante l'esecuzione dello statement.
See Also:
DomainException.DUPLICATED_DATA_INS_ERROR, DomainException.MISSED_REFERENCE_INS_ERROR

executeQuery

public java.sql.ResultSet executeQuery(java.sql.PreparedStatement query)
                                throws DatabaseException
Esegue uno statement SQL di interrogazione.
Non chiude lo statement SQL perché l'esemplare della classe che implementa l'interfaccia ResultSet deve essere utilizzabile.
Se si verifica un errore durante l'esecuzione dell'interrogazione e lo statement fa parte di una transazione, si effettua il rollback.

Parameters:
query - l'interrogazione da eseguire (SELECT).
Returns:
l'esemplare di una classe che implementa l'interfaccia ResultSet contenente il risultato dell'interrogaazione oppure null se l'interrogazione non ha prodotto alcun risultato.
Throws:
DatabaseException - se è lanciata una SQLException durante l'esecuzione dell'interrogazione

setAutoCommit

public void setAutoCommit(boolean activated)
                   throws DatabaseException
Imposta il commit automatico degli statement SQL.
Disattivando il commit automatico, gli statement SQL dei quali si richiede l’esecuzione con l’invocazione dell’opportuno metodo executeXXX(StatementSQL) vengono aggiunti ad una transazione SQL e saranno eseguiti solo con l’invocazione del metodo commit(). Attivando il commit automatico gli statement SQL sono eseguiti direttamente con l’invocazione dell’opportuno metodo executeXXX(StatementSQL).

Parameters:
activated - true per attivare l'autocommit, false per disattivare l'autocommit.
Throws:
DatabaseException - se è lanciata una SQLException nell'impostazione dell'autocommit.

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String statement)
                                            throws DatabaseException
Compila uno statement SQL e restituisce il risultato della compilazione.

Parameters:
statement - lo statement SQL da compilare.
Returns:
lo statement SQL compilato.
Throws:
DatabaseException - se è lanciata una SQLException nella compilazione dello statement.

commit

public void commit()
            throws DatabaseException
Avvia l'esecuzione di una transazione.

Throws:
DatabaseException - se è lanciata una SQLException nell'avvio di una transazione.

isClosed

public boolean isClosed()
                 throws DatabaseException
Controlla se la connessione al database dell'applicazione è chiusa.

Returns:
true se la connessione è chiusa, false altrimenti.
Throws:
DatabaseException - se è lanciata una SQLException durante il controllo della chiusura della connessione al database dell'applicazione.