/**
* @(#) OracleDataStore.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 datos a la base de datos Oracle.
*
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 OracleDataStore extends DataStore
{
/*
* Obtención de la conexión a la base de datos Oracle.
* Utiliza el controlador JDBC de tipo 4 de Oracle para la 10g
* o el de tipo 6 para la 11g
* @return El objeto de conexión a la base de datos.
*/
public Connection obtenerConexion() throws ExcepcionTarisan
{
OracleParametros.inicializarParametros();
Connection conexion = null;
try
{
Class.forName(OracleParametros.driverJdbc);
if(com.tarisan.persistencia.PersistenciaParametros.tipoServidorOracle.equals("11g"))
{
conexion = DriverManager.getConnection(OracleParametros.cadenaConexion,com.tarisan.persistencia.PersistenciaParametros.usuario,com.tarisan.persistencia.PersistenciaParametros.password);
LogTarisan.logger.log(NivelLog.DEBUG, "Conexión 11g obtenida: " + conexion + " (" + OracleParametros.cadenaConexion+", "+com.tarisan.persistencia.PersistenciaParametros.usuario+", "+com.tarisan.persistencia.PersistenciaParametros.password + ")");
}
else
{
conexion = DriverManager.getConnection(OracleParametros.cadenaConexion);
LogTarisan.logger.log(NivelLog.DEBUG, "Conexión 10g 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 SQLEXCEPTION 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 EXCEPTION 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 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 Oracle.
* @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());
}
}
}