ANNA Suite  2020b
Multipurpose development suite for Telco applications
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Friends | List of all members
anna::dbms::Database Class Referenceabstract

#include <Database.hpp>

Inheritance diagram for anna::dbms::Database:
Inheritance graph
[legend]
Collaboration diagram for anna::dbms::Database:
Collaboration graph
[legend]

Classes

struct  Type
 

Public Types

typedef std::vector< Connection * >::const_iterator const_connection_iterator
 
typedef std::vector< Statement * >::const_iterator const_statement_iterator
 

Public Member Functions

virtual ~Database ()
 
const TypegetType () const
 
const std::string & getName () const
 
void setFailRecoveryHandler (FailRecoveryHandler *failRecoveryHandler)
 
void setStatementTranslator (StatementTranslator *statementTranslator)
 
ConnectioncreateConnection (const char *name, const char *user, const char *password) noexcept(false)
 
ConnectionfindConnection (const char *name) noexcept(false)
 
const_connection_iterator connection_begin () const
 
const_connection_iterator connection_end () const
 
StatementcreateStatement (const char *name, const char *expression, const bool isCritical=true) noexcept(false)
 
StatementcreateStatement (const char *name, const std::string &expression, const bool isCritical=true) noexcept(false)
 
StatementfindStatement (const char *name)
 
void releaseStatement (Statement *statement)
 
const_statement_iterator statement_begin () const
 
const_statement_iterator statement_end () const
 
virtual std::string asString () const
 
virtual xml::NodeasXML (xml::Node *parent) const
 
- Public Member Functions inherited from anna::app::Component
virtual ~Component ()
 
void attach () noexcept(false)
 
- Public Member Functions inherited from anna::Component
const char * getClassName () const
 
- Public Member Functions inherited from anna::Mutex
 Mutex (const Mode::_v mode=Mode::Recursive)
 
virtual ~Mutex ()
 
virtual void lock () noexcept(false)
 
virtual void unlock ()
 
bool trylock () noexcept(false)
 
 operator const pthread_mutex_t * () const
 

Static Public Member Functions

static Statementstatement (const_statement_iterator &ii)
 
static const Connectionconnection (const_connection_iterator &ii)
 

Static Public Attributes

static const int MaxConnection = 32
 

Protected Types

typedef std::vector< Connection * >::iterator connection_iterator
 

Protected Member Functions

 Database (const char *rdbmsmsName, const char *dbmsName)
 
void recover (Connection &connection, const int tryCounter) noexcept(false)
 
virtual void do_initialize () noexcept(false)
 
virtual void do_stop ()
 
connection_iterator connection_begin ()
 
connection_iterator connection_end ()
 
- Protected Member Functions inherited from anna::app::Component
 Component (const char *className)
 
State::_v getState () const
 
void addPredecessor (const char *componentName)
 
void initialize () noexcept(false)
 
void stop ()
 
virtual void kill ()
 
- Protected Member Functions inherited from anna::Component
 Component (const char *className)
 
 Component (const Component &other)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Static Protected Member Functions

static Connectionconnection (connection_iterator &ii)
 

Friends

class Statement
 
ResultCode Connection::execute (Statement *) noexcept(false)
 

Additional Inherited Members

- Protected Attributes inherited from anna::Component
const std::string a_className
 

Detailed Description

Clase que modela la interaccion entre la base y nuestra aplicacion.

Member Typedef Documentation

◆ connection_iterator

typedef std::vector<Connection*>::iterator anna::dbms::Database::connection_iterator
protected

Iterador para acceder a las conexiones de esta base de datos

◆ const_connection_iterator

typedef std::vector<Connection*>::const_iterator anna::dbms::Database::const_connection_iterator

Iterador para acceder a las conexiones de esta base de datos

◆ const_statement_iterator

typedef std::vector<Statement*>::const_iterator anna::dbms::Database::const_statement_iterator

Iterador para acceder a las conexiones de esta base de datos

Constructor & Destructor Documentation

◆ ~Database()

virtual anna::dbms::Database::~Database ( )
virtual

Destructor.

Reimplemented in anna::dbms::oracle::Database, and anna::dbms::mysql::Database.

◆ Database()

anna::dbms::Database::Database ( const char *  rdbmsmsName,
const char *  dbmsName 
)
protected

Contructor.

Parameters
rdbmsmsNameNombre del RDMS que gestiona esta base de datos.
dbmsNameNombre de la base de datos.

Member Function Documentation

◆ asString()

virtual std::string anna::dbms::Database::asString ( ) const
virtual

Devuelve una cadena con la informacion mas relevante de esta instancia.

Returns
Una cadena con la informacion mas relevante de esta instancia.

Reimplemented from anna::app::Component.

◆ asXML()

virtual xml::Node* anna::dbms::Database::asXML ( xml::Node parent) const
virtual

Devuelve un documento XML con la informacion mas relevante de esta instancia.

Parameters
parentNodo XML del que colgar la informacion referente a esta instancia.
Returns
Un documento XML con la informacion mas relevante de esta instancia.

Reimplemented from anna::app::Component.

◆ connection() [1/2]

static const Connection* anna::dbms::Database::connection ( const_connection_iterator ii)
inlinestatic

Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre connection_begin y connection_end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
209 { return *ii; }

◆ connection() [2/2]

static Connection* anna::dbms::Database::connection ( connection_iterator ii)
inlinestaticprotected

Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre connection_begin y connection_end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
261 { return *ii; }

◆ connection_begin() [1/2]

const_connection_iterator anna::dbms::Database::connection_begin ( ) const
inline

Devuelve un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.

Returns
Un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
115 { return a_connections.begin(); }

◆ connection_begin() [2/2]

connection_iterator anna::dbms::Database::connection_begin ( )
inlineprotected

Devuelve un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.

Returns
Un iterator al comienzo de la lista de conexiones establecidas con esta base de datos.
248 { return a_connections.begin(); }

◆ connection_end() [1/2]

const_connection_iterator anna::dbms::Database::connection_end ( ) const
inline

Devuelve un iterator al final de la lista de conexiones establecidas con esta base de datos.

Returns
Un iterator al final de la lista de conexiones establecidas con esta base de datos.
121 { return a_connections.end(); }

◆ connection_end() [2/2]

connection_iterator anna::dbms::Database::connection_end ( )
inlineprotected

Devuelve un iterator al final de la lista de conexiones establecidas con esta base de datos.

Returns
Un iterator al final de la lista de conexiones establecidas con esta base de datos.
254 { return a_connections.end(); }

◆ createConnection()

Connection* anna::dbms::Database::createConnection ( const char *  name,
const char *  user,
const char *  password 
)
noexcept

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.

Parameters
nameNombre logico de la conexion a crear.
userNombre del usuario con el que realizamos la conexion.
passwordCodigo de acceso del usuario.
Returns
La instancia de la nueva conexion a la base de datos.

◆ createStatement() [1/2]

Statement* anna::dbms::Database::createStatement ( const char *  name,
const char *  expression,
const bool  isCritical = true 
)
noexcept

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.

Parameters
nameNombre logico de esta sentencia.
expressionExpresion asociada a la sentencia.
isCriticalSi vale 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.
Returns
Una nueva instancia de una conexion a base de datos. No puede ser NULL.

◆ createStatement() [2/2]

Statement* anna::dbms::Database::createStatement ( const char *  name,
const std::string &  expression,
const bool  isCritical = true 
)
inlinenoexcept

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.

Parameters
nameNombre logico de esta sentencia.
expressionExpresion asociada a la sentencia.
isCriticalSi vale 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.
Returns
Una nueva instancia de una conexion a base de datos. No puede ser NULL.
153  {
154  return createStatement(name, expression.c_str(), isCritical);
155  }
Statement * createStatement(const char *name, const char *expression, const bool isCritical=true) noexcept(false)

◆ do_initialize()

virtual void anna::dbms::Database::do_initialize ( )
protectedvirtualnoexcept

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.

Implements anna::app::Component.

◆ do_stop()

virtual void anna::dbms::Database::do_stop ( )
protectedvirtual

Elimina las conexiones definidas sobre esta base de datos. Este metodo se invocaria automaticamente desde el nucleo de ANNA.

Implements anna::app::Component.

◆ findConnection()

Connection& anna::dbms::Database::findConnection ( const char *  name)
noexcept

Devuelve la conexion asociada al nombre logico recibido como parametro.

Parameters
nameNombre logico de la conexion que queremos obtener.
Returns
La conexion asociada al nombre logico recibido como parametro.
Warning
Si la conexion logica no existe no puede ser usada se lanzara una excepcion.

◆ findStatement()

Statement* anna::dbms::Database::findStatement ( const char *  name)

Devuelve la instancia de la sentencia SQL asociada al nombre recibido como parametro.

Returns
La instancia de la sentencia SQL asociada al nombre recibido. Puede ser NULL si el nombre no fue registrado previamente con createStatement.

◆ getName()

const std::string& anna::dbms::Database::getName ( ) const
inline

Devuelve el nombre de la base de datos indicado en el constructor.

Returns
El nombre de la base de datos indicado en el constructor.
73 { return a_name; }

◆ getType()

const Type& anna::dbms::Database::getType ( ) const
inline

Devuelve el tipo de conexion de esta base de datos.

Returns
El tipo de conexion de esta base de datos.
67 { return a_type; }

◆ recover()

void anna::dbms::Database::recover ( Connection connection,
const int  tryCounter 
)
protectednoexcept

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.
Parameters
connectionInstancia de la conexion en la que hemos detectado el fallo.
tryCounternumero de intentos de recuperacion de la conexion.

◆ releaseStatement()

void anna::dbms::Database::releaseStatement ( Statement statement)

Libera los recursos de la sentencia SQL recibida como parametro.

Parameters
statementInstancia de la sentencia SQL a liberar. deberia haber sido obtenida mediante el metodo createStatement.

◆ setFailRecoveryHandler()

void anna::dbms::Database::setFailRecoveryHandler ( FailRecoveryHandler failRecoveryHandler)
inline

Establece el manejador encargado de actuar cuando la recuperacion de la conexion falla. El manejador por defecto no realiza ninguna activad.

Parameters
failRecoveryHandlerManejador que seria invocado en caso de que no sea posible recuperar una determina conexion.
81 { a_failRecoveryHandler = failRecoveryHandler; }

◆ setStatementTranslator()

void anna::dbms::Database::setStatementTranslator ( StatementTranslator statementTranslator)
inline

Establece el traductor de sentencias SQL usado ajustar las sentencias SQL al motor de base de datos usados en la aplicación.

87 { a_statementTranslator = statementTranslator; }

◆ statement()

static Statement* anna::dbms::Database::statement ( const_statement_iterator ii)
inlinestatic

Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre statement_begin y statement_end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
189 { return *ii; }

◆ statement_begin()

const_statement_iterator anna::dbms::Database::statement_begin ( ) const
inline

Devuelve un iterator al comienzo de la lista de sentencias SQL creadas en esta base de datos.

Returns
Un iterator al comienzo de la lista de sentencias SQL creadas en esta base de datos.
176 { return a_statements.begin(); }

◆ statement_end()

const_statement_iterator anna::dbms::Database::statement_end ( ) const
inline

Devuelve un iterator al final de la lista de sentencias SQL creadas en esta base de datos.

Returns
Un iterator al final de la lista de sentencias SQL creadas en esta base de datos.
182 { return a_statements.end(); }

Friends And Related Function Documentation

◆ Connection::execute

◆ Statement

friend class Statement
friend

Member Data Documentation

◆ MaxConnection

const int anna::dbms::Database::MaxConnection = 32
static

Numero maximo de conexiones que podemos crear.


The documentation for this class was generated from the following file: