Remove sql resources to ease anna-ericsson building
[anna.git] / include / anna / dbms / Database.hpp
diff --git a/include/anna/dbms/Database.hpp b/include/anna/dbms/Database.hpp
deleted file mode 100644 (file)
index bbe46c5..0000000
+++ /dev/null
@@ -1,296 +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_dbms_Database_hpp
-#define anna_dbms_Database_hpp
-
-#include <vector>
-
-#include <anna/app/Component.hpp>
-
-#include <anna/dbms/Connection.hpp>
-
-namespace anna {
-
-namespace comm {
-class INetAddress;
-class Delivery;
-}
-
-namespace dbms {
-
-class Statement;
-class InputBind;
-class OutputBind;
-class Data;
-class FailRecoveryHandler;
-class StatementTranslator;
-
-/**
-   Clase que modela la interaccion entre la base y nuestra aplicacion.
-*/
-class Database : public app::Component {
-public:
-  /**
-     Numero maximo de conexiones que podemos crear.
-  */
-  static const int MaxConnection = 32;
-
-  /**
-     Formas de conexion a la base de datos.
-  */
-  struct Type {
-    enum _v { Local, Remote } value;
-    Type() : value(Local) {;}
-    Type(const _v v) : value(v) {;}
-    Type(const Type& v) : value(v.value) {;}
-    operator int () const throw() { return value; }
-  };
-
-  typedef std::vector <Connection*>::const_iterator const_connection_iterator; /**<Iterador para acceder a las conexiones de esta base de datos */
-  typedef std::vector <Statement*>::const_iterator const_statement_iterator; /**<Iterador para acceder a las conexiones de esta base de datos */
-
-  /**
-     Destructor.
-  */
-  virtual ~Database();
-
-  /**
-     Devuelve el tipo de conexion de esta base de datos.
-     \return El tipo de conexion de esta base de datos.
-  */
-  const Type& getType() const throw() { return a_type; }
-
-  /**
-     Devuelve el nombre de la base de datos indicado en el constructor.
-     \return El nombre de la base de datos indicado en el constructor.
-  */
-  const std::string& getName() const throw() { return a_name; }
-
-  /**
-     Establece el manejador encargado de actuar cuando la recuperacion de la conexion falla.
-     El manejador por defecto no realiza ninguna activad.
-     \param failRecoveryHandler Manejador que seria invocado en caso de que no sea posible recuperar
-     una determina conexion.
-  */
-  void setFailRecoveryHandler(FailRecoveryHandler* failRecoveryHandler) throw() { a_failRecoveryHandler = failRecoveryHandler; }
-
-  /**
-   * Establece el traductor de sentencias SQL usado ajustar las sentencias SQL al
-   * motor de base de datos usados en la aplicaciĆ³n.
-   */
-  void setStatementTranslator(StatementTranslator* statementTranslator) throw() { a_statementTranslator = statementTranslator; }
-
-  /**
-     Crea y registra una nueva conexion con esta base de datos.
-     La clase usada para conectar con esta base de datos dependeria de la implementacion particular, que
-     seria definida por el metodo #allocateConnection.
-
-     \param name Nombre logico de la conexion a crear.
-     @param user Nombre del usuario con el que realizamos la conexion.
-     @param password Codigo de acceso del usuario.
-
-     @return La instancia de la nueva conexion a la base de datos.
-  */
-  Connection* createConnection(const char* name, const char* user, const char* password)
-  throw(RuntimeException, DatabaseException);
-
-  /**
-     Devuelve la conexion asociada al nombre logico recibido como parametro.
-     \param name Nombre logico de la conexion que queremos obtener.
-     \return La conexion asociada al nombre logico recibido como parametro.
-     \warning Si la conexion logica no existe no puede ser usada se lanzara una excepcion.
-  */
-  Connection& findConnection(const char* name) throw(RuntimeException);
-
-  /**
-     Devuelve un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
-     \return Un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
-  */
-  const_connection_iterator connection_begin() const throw() { return a_connections.begin(); }
-
-  /**
-     Devuelve un iterator al final de la lista de conexiones establecidas con esta base de datos.
-     \return Un iterator al final de la lista de conexiones establecidas con esta base de datos.
-  */
-  const_connection_iterator connection_end() const throw() { return a_connections.end(); }
-
-  /**
-     Crea y registra una nueva sentencia SQL asociada a esta base de datos.
-     La clase usada para interpretar la sentencia SQL dependera de la implementacion particular definida
-     mediante el metodo #allocateStatement.
-
-     \param name Nombre logico de esta sentencia.
-     \param expression Expresion asociada a la sentencia.
-     \param isCritical Si vale \em true indica que si la ejecucion de esta sentencia falla al desbloquear
-     la conexion con la que ejecutamos esta sentencia se invocara a Connection::rollback, en otro caso
-     aunque falle se invocara a Connection::commit. Solo aplicara en sentencias que no sean de seleccion.
-
-     \return Una nueva instancia de una conexion a base de datos. No puede ser NULL.
-  */
-  Statement* createStatement(const char* name, const char* expression, const bool isCritical = true)
-  throw(RuntimeException);
-
-  /**
-     Crea y registra una nueva sentencia SQL asociada a esta base de datos.
-     La clase usada para interpretar la sentencia SQL dependera de la implementacion particular definida
-     mediante el metodo #allocateStatement.
-
-     \param name Nombre logico de esta sentencia.
-     \param expression Expresion asociada a la sentencia.
-     \param isCritical Si vale \em true indica que si la ejecucion de esta sentencia falla al desbloquear
-     la conexion con la que ejecutamos esta sentencia se invocara a Connection::rollback, en otro caso
-     aunque falle se invocara a Connection::commit. Solo aplicara en sentencias que no sean de seleccion.
-
-     \return Una nueva instancia de una conexion a base de datos. No puede ser NULL.
-  */
-  Statement* createStatement(const char* name, const std::string& expression, const bool isCritical = true)
-  throw(RuntimeException) {
-    return createStatement(name, expression.c_str(), isCritical);
-  }
-
-  /**
-     Devuelve la instancia de la sentencia SQL asociada al nombre recibido como parametro.
-
-     @return La instancia de la sentencia SQL  asociada al nombre recibido.
-     Puede ser NULL si el nombre no fue registrado previamente con #createStatement.
-  */
-  Statement* findStatement(const char* name) throw();
-
-  /**
-     Libera los recursos de la sentencia SQL recibida como parametro.
-     \param statement Instancia de la sentencia SQL a liberar. deberia haber sido obtenida mediante
-     el metodo #createStatement.
-  */
-  void releaseStatement(Statement* statement) throw();
-
-  /**
-     Devuelve un iterator al comienzo de la lista de sentencias SQL creadas en esta base de datos.
-     \return Un iterator al comienzo de la lista de sentencias SQL creadas en esta base de datos.
-  */
-  const_statement_iterator statement_begin() const throw() { return a_statements.begin(); }
-
-  /**
-     Devuelve un iterator al final de la lista de sentencias SQL creadas en esta base de datos.
-     \return Un iterator al final de la lista de sentencias SQL creadas en esta base de datos.
-  */
-  const_statement_iterator statement_end() const throw() { return a_statements.end(); }
-
-  /**
-     Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.
-     \param ii Iterator que deberia estar comprendido entre #statement_begin y #statement_end.
-     \return El objeto sobre el que esta posicionado el iterator recibido como parametro.
-  */
-  static Statement* statement(const_statement_iterator& ii) throw() { return *ii; }
-
-  /**
-     Devuelve una cadena con la informacion mas relevante de esta instancia.
-     \return Una cadena con la informacion mas relevante de esta instancia.
-  */
-  virtual std::string asString() const throw();
-
-  /**
-     Devuelve un documento XML con la informacion mas relevante de esta instancia.
-     \param parent Nodo XML del que colgar la informacion referente a esta instancia.
-     \return Un documento XML con la informacion mas relevante de esta instancia.
-  */
-  virtual xml::Node* asXML(xml::Node* parent) const throw();
-
-  /**
-     Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.
-     \param ii Iterator que deberia estar comprendido entre #connection_begin y #connection_end.
-     \return El objeto sobre el que esta posicionado el iterator recibido como parametro.
-  */
-  static const Connection* connection(const_connection_iterator& ii) throw() { return *ii; }
-
-protected:
-  typedef std::vector <Connection*>::iterator connection_iterator; /**<Iterador para acceder a las conexiones de esta base de datos */
-
-  /**
-     Contructor.
-     \param rdbmsmsName Nombre del RDMS que gestiona esta base de datos.
-     \param dbmsName Nombre de la base de datos.
-  */
-  Database(const char* rdbmsmsName, const char* dbmsName);
-
-  /**
-     Recupera el estado de una conexion perdida.
-     \warning Este metodo se invoca automaticamente desde el nucleo de ANNA.dbms y nunca deberia
-     ser invocado por el programador.
-     \param connection Instancia de la conexion en la que hemos detectado el fallo.
-     \param tryCounter numero de intentos de recuperacion de la conexion.
-  */
-  void recover(Connection& connection, const int tryCounter) throw(RuntimeException);
-
-  /**
-     Inicializa las conexiones definidas sobre esta base de datos. Este metodo se invocaria
-     automaticamente desde el nucleo de ANNA.
-     Slo seria necesario invocarlo cuando nuestro programa no tenga asociada ninguna aplicacion
-     que se encarga de inicializar los componentes.
-  */
-  virtual void do_initialize() throw(RuntimeException);
-
-  /**
-     Elimina las conexiones definidas sobre esta base de datos. Este metodo se invocaria automaticamente
-     desde el nucleo de ANNA.
-  */
-  virtual void do_stop() throw();
-
-  /**
-     Devuelve un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
-     \return Un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
-  */
-  connection_iterator connection_begin() throw() { return a_connections.begin(); }
-
-  /**
-     Devuelve un iterator al final de la lista de conexiones establecidas con esta base de datos.
-     \return Un iterator al final de la lista de conexiones establecidas con esta base de datos.
-  */
-  connection_iterator connection_end() throw() { return a_connections.end(); }
-
-  /**
-     Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.
-     \param ii Iterator que deberia estar comprendido entre #connection_begin y #connection_end.
-     \return El objeto sobre el que esta posicionado el iterator recibido como parametro.
-  */
-  static Connection* connection(connection_iterator& ii) throw() { return *ii; }
-
-private:
-  const std::string a_name;
-  std::vector <Connection*> a_connections;
-  std::vector <Statement*> a_statements;
-  const Type a_type;
-  FailRecoveryHandler* a_failRecoveryHandler;
-  StatementTranslator* a_statementTranslator;
-
-  Database(const Database&);
-
-  void do_cloneChild() throw(RuntimeException);
-
-  virtual Connection* allocateConnection(const std::string& name, const char* user, const char* password)
-  throw(RuntimeException) = 0;
-
-  virtual Statement* allocateStatement(const char* name, const std::string& expression, const bool isCritical)
-  throw(RuntimeException) = 0;
-
-  virtual InputBind* allocateInputBind(const char* name, Data& data)
-  throw(RuntimeException) = 0;
-  virtual void deallocate(InputBind* inputBind) throw() = 0;
-
-  virtual OutputBind* allocateOutputBind(const char* name, Data& data)
-  throw(RuntimeException) = 0;
-  virtual void deallocate(OutputBind* outputBind) throw() = 0;
-
-  friend class Statement;
-  friend ResultCode Connection::execute(Statement*) throw(RuntimeException, DatabaseException);
-};
-
-}
-}
-
-#endif