--- /dev/null
+// ANNA - Anna is Not Nothingness Anymore //
+// //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
+// //
+// See project site at http://redmine.teslayout.com/projects/anna-suite //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
+
+
+#ifndef anna_dbms_oracle_Connection_hpp
+#define anna_dbms_oracle_Connection_hpp
+
+struct OCIServer;
+struct OCISession;
+struct OCISvcCtx;
+
+#include <anna/dbms/Connection.hpp>
+#include <anna/dbms/DatabaseException.hpp>
+
+namespace anna {
+
+namespace dbms {
+
+class Database;
+
+namespace oracle {
+
+class Database;
+
+/**
+ Clase que modela la conexion con el RDBMS Oracle (tm).
+
+ Esta clase no puede usarse directamente, ya que la capa ANNA.dbms obliga a que todas las peticiones
+ se hagan atraves de una instancia anna::dbms::Connection.
+
+ Para obtener una conexion a una determinada base de datos habra que instanciar dicha base de datos
+ e invocar al metodo createConnection. Independientemente del tipo de conexion particular que la
+ base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Connection.
+*/
+class Connection : public dbms::Connection {
+public:
+ /**
+ Devuelve una cadena con la informacion referente a esta instancia.
+ @return Una cadena con la informacion referente a esta instancia.
+ */
+ std::string asString() const throw();
+
+ /**
+ Operador de conversion.
+ \return El puntero al contexto asociado a este conexion.
+ */
+ operator OCISvcCtx*() throw() { return a_context; }
+
+private:
+ Database& a_oracleDatabase;
+ OCISvcCtx* a_context;
+ OCISession* a_session;
+ OCIServer* a_server;
+
+ Connection(Database& database, const std::string& name, const char* user, const char* password);
+ bool isAvailable() const throw(RuntimeException) { return a_context != NULL && a_session != NULL && a_server != NULL; }
+ void do_commit() throw(RuntimeException, DatabaseException);
+ void do_rollback() throw();
+ void open() throw(DatabaseException);
+ void close() throw();
+
+ friend class anna::dbms::oracle::Database;
+};
+
+}
+}
+}
+
+#endif