/**
* @(#) OdbcDataStore.java
*/
package com.tarisan.persistencia;
import com.tarisan.excepcion.*;
import com.tarisan.log.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* Gestión de accesos de conexión, recuperación y actualización de una base de datos vía ODBC.
*
Los métodos de recuperación y actualización pueden sobreescribir a los definidos
* en la clase padre DataStore si es necesario.
* @author Dpto. Informática.
* @version 1.0, 24/09/2003
*/
public class OdbcDataStore extends DataStore
{
/*
* Obtención de la conexión a la base de datos vía ODBC.
* Utiliza el controlador JDBC puente con ODBC (jdbc-odbc bridge).
* @return El objeto de conexión a la base de datos.
*/
public java.sql.Connection obtenerConexion() throws ExcepcionTarisan
{
OdbcParametros.inicializarParametros();
Connection conexion = null;
try
{
Class.forName(OdbcParametros.driverJdbc);
conexion = DriverManager.getConnection(OdbcParametros.cadenaConexion);
LogTarisan.logger.log(NivelLog.DEBUG, "Conexión obtenida: " + conexion + " (" + OracleParametros.cadenaConexion + ")");
}
catch(ClassNotFoundException e)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error CLASSNOTFOUND en la obtención de la conexión: " + e + " (" + OracleParametros.cadenaConexion + ")");
throw new ExcepcionTarisan(e.toString());
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error SQL en la obtención de la conexión: " + sqle + " (" + OracleParametros.cadenaConexion + ")");
throw new ExcepcionTarisan(sqle.getMessage());
}
catch(Exception e)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error EXCEPCION en la obtención de la conexión: " + e + " (" + OracleParametros.cadenaConexion + ")");
throw new ExcepcionTarisan(e.toString());
}
catch(Throwable t)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error THROWABLE en la obtención de la conexión: " + t + " (" + OracleParametros.cadenaConexion + ")");
throw new ExcepcionTarisan(t.getMessage());
}
return conexion;
}
/**
* Liberar la conexión a la base de datos ODBC.
* @param conexion La conexión a liberar.
*/
public void liberarConexion(Connection conexion) throws ExcepcionTarisan
{
try
{
conexion.close();
LogTarisan.logger.log(NivelLog.DEBUG, "Conexión liberada: " + conexion + " (" + OracleParametros.cadenaConexion + ")");
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la liberación de la conexión " + conexion + ": " + sqle + " (" + OracleParametros.cadenaConexion + ")");
throw new ExcepcionTarisan(sqle.getMessage());
}
}
}