X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdbos%2FAccesor.hpp;fp=include%2Fanna%2Fdbos%2FAccesor.hpp;h=0000000000000000000000000000000000000000;hb=a3b95648bd76140ef55e0b5941d423eee6c3856f;hp=a719c51e9574d87b7c59d2b9cb3c223e5b964bf7;hpb=94fc4366adedbf26ca6ef3104f88d41fa85f5a72;p=anna.git diff --git a/include/anna/dbos/Accesor.hpp b/include/anna/dbos/Accesor.hpp deleted file mode 100644 index a719c51..0000000 --- a/include/anna/dbos/Accesor.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// 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_dbos_Accesor_hpp -#define anna_dbos_Accesor_hpp - -#include -#include - -#include - -#include - -namespace anna { - -namespace dbms { -class Database; -class Connection; -class Statement; -} - -namespace dbos { - -class StorageArea; - -/** - Interfaz que deben cumplir los objetos encargados de acceder al objeto del medio fisico, - que normalmente sera alguna base de datos. -*/ -class Accesor : public Mutex { -public: - typedef short Id; /**< Permite identificar el tipo de accesor. */ - - /** - Destructor. - */ - virtual ~Accesor(); - - /** - Devuelve el identificador de este accesor. - \return El identificador de este accesor. - */ - Id getId() const throw() { return a_id; } - - /** - Devuelve la instancia de la sentencia \em statement asociada a este cargador. - \return La instancia de la sentencia \em statement asociada a este cargador. Puede ser NULL. - */ - dbms::Statement* getStatement() - throw(RuntimeException) { - return (a_statement == NULL && a_database != NULL) ? (a_statement = initialize(*a_database)) : a_statement; - } - - /** - * Devuelve \em true si el accesor fue inicializado con base de datos o \em false en otro caso. - * \return \em true si el accesor fue inicializado con base de datos o \em false en otro caso. - */ - bool hasDataBase() const throw() { return a_database != NULL; } - - /** - Devuelve la instancia de la base de datos asociada a este cargador. - \return La instancia de la base de datos asociada a este cargador. - - \warning Si el accesor fue inicializado sin base de datos lo resultados no están definidos. - */ - dbms::Database& getDatabase() throw() { return *a_database; } - - /** - Devuelve la conexion que esta usando actualmente este cargador. - \return la conexion que esta usando actualmente este cargador. - */ - dbms::Connection& getConnection() throw(RuntimeException) { - if(a_connection == NULL) { - std::string msg(asString()); - msg += " | No available database connection"; - throw RuntimeException(msg, ANNA_FILE_LOCATION); - } - - return *a_connection; - } - - /** - Devuelve la representacion en forma de cadena de la clave primaria establecida. - @return La representacion en forma de cadena de la clave primaria establecida. - */ - virtual std::string asString() const throw() = 0; - - /** - Metodo de debemos re-escribir para devolver el nombre completo del selector de recursos. - Para evitar ambigüedades este nombre deberia incluir la lista completa de \em namespaces - a la que pertenece la clase. - \return Una cadena con el nombre de este selector. - */ - virtual const char* getClassName() const throw() = 0; - -protected: - /** - Constructor. - \param database Base de datos asociada a este cargador y que deberia servir para - obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador. - \param id Identificador de este accesor. - */ - Accesor(dbms::Database& database, const Id id) : - a_database(&database), - a_id(id), - a_statement(NULL), - a_connection(NULL), - a_emodeIsNull(true) - {;} - - /** - Constructor. - \param database Base de datos asociada a este cargador y que deberia servir para - obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador. - \param id Identificador de este accesor. - \param emode Modo de actuar en caso de no encontrar el dato buscado. - */ - Accesor(dbms::Database& database, const Id id, const Exception::Mode::_v emode) : - a_database(&database), - a_id(id), - a_statement(NULL), - a_connection(NULL), - a_emodeIsNull(false), - a_exceptionMode(emode) - {;} - - /** - Constructor. - \param id Identificador de este accesor. - */ - Accesor(const Id id) : - a_database(NULL), - a_id(id), - a_statement(NULL), - a_connection(NULL), - a_emodeIsNull(true) - {;} - - /** - Metodo que deben implementar todos los accesores para definir la sentencia - SQL que los definira. - Se invocara automaticamente desde el nucleo de anna.dbos la primera vez que - se use este accesor, de forma que el programador solo debe preocuparse por - definir este metodo. - \param database Instancia de la base de datos indicada en el constructor. - */ - virtual dbms::Statement* initialize(dbms::Database& database) throw(RuntimeException) = 0; - -private: - dbms::Database* a_database; - const Id a_id; - dbms::Statement* a_statement; - dbms::Connection* a_connection; - bool a_emodeIsNull; - Exception::Mode::_v a_exceptionMode; - - void setStatement(dbms::Statement* statement) throw() { a_statement = statement; } - - virtual bool load(dbms::Connection*, const StorageArea*) throw(RuntimeException, dbms::DatabaseException); - - friend class StorageArea; -}; - -} -} - -#endif - - -