ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
anna::dbos::Accesor Class Referenceabstract

#include <Accesor.hpp>

Inheritance diagram for anna::dbos::Accesor:
Inheritance graph
[legend]
Collaboration diagram for anna::dbos::Accesor:
Collaboration graph
[legend]

Public Types

typedef short Id
 

Public Member Functions

virtual ~Accesor ()
 
Id getId () const
 
dbms::StatementgetStatement () noexcept(false)
 
bool hasDataBase () const
 
dbms::DatabasegetDatabase ()
 
dbms::ConnectiongetConnection () noexcept(false)
 
virtual std::string asString () const =0
 
virtual const char * getClassName () const =0
 
- 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
 

Protected Member Functions

 Accesor (dbms::Database &database, const Id id)
 
 Accesor (dbms::Database &database, const Id id, const Exception::Mode::_v emode)
 
 Accesor (const Id id)
 
virtual dbms::Statementinitialize (dbms::Database &database) noexcept(false)=0
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

class StorageArea
 

Detailed Description

Interfaz que deben cumplir los objetos encargados de acceder al objeto del medio fisico, que normalmente sera alguna base de datos.

Member Typedef Documentation

◆ Id

typedef short anna::dbos::Accesor::Id

Permite identificar el tipo de accesor.

Constructor & Destructor Documentation

◆ ~Accesor()

virtual anna::dbos::Accesor::~Accesor ( )
virtual

Destructor.

◆ Accesor() [1/3]

anna::dbos::Accesor::Accesor ( dbms::Database database,
const Id  id 
)
inlineprotected

Constructor.

Parameters
databaseBase 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.
idIdentificador de este accesor.
108  :
109  a_database(&database),
110  a_id(id),
111  a_statement(NULL),
112  a_connection(NULL),
113  a_emodeIsNull(true)
114  {;}

◆ Accesor() [2/3]

anna::dbos::Accesor::Accesor ( dbms::Database database,
const Id  id,
const Exception::Mode::_v  emode 
)
inlineprotected

Constructor.

Parameters
databaseBase 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.
idIdentificador de este accesor.
emodeModo de actuar en caso de no encontrar el dato buscado.
123  :
124  a_database(&database),
125  a_id(id),
126  a_statement(NULL),
127  a_connection(NULL),
128  a_emodeIsNull(false),
129  a_exceptionMode(emode)
130  {;}

◆ Accesor() [3/3]

anna::dbos::Accesor::Accesor ( const Id  id)
inlineprotected

Constructor.

Parameters
idIdentificador de este accesor.
136  :
137  a_database(NULL),
138  a_id(id),
139  a_statement(NULL),
140  a_connection(NULL),
141  a_emodeIsNull(true)
142  {;}

Member Function Documentation

◆ asString()

virtual std::string anna::dbos::Accesor::asString ( ) const
pure virtual

Devuelve la representacion en forma de cadena de la clave primaria establecida.

Returns
La representacion en forma de cadena de la clave primaria establecida.

◆ getClassName()

virtual const char* anna::dbos::Accesor::getClassName ( ) const
pure virtual

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 namespaces a la que pertenece la clase.

Returns
Una cadena con el nombre de este selector.

Implemented in anna::dbos::CrossedLoader, anna::dbos::Eraser, anna::dbos::Loader, anna::dbos::Creator, and anna::dbos::Recorder.

◆ getConnection()

dbms::Connection& anna::dbos::Accesor::getConnection ( )
inlinenoexcept

Devuelve la conexion que esta usando actualmente este cargador.

Returns
la conexion que esta usando actualmente este cargador.
77  {
78  if(a_connection == NULL) {
79  std::string msg(asString());
80  msg += " | No available database connection";
81  throw RuntimeException(msg, ANNA_FILE_LOCATION);
82  }
83 
84  return *a_connection;
85  }
virtual std::string asString() const =0
#define ANNA_FILE_LOCATION
Definition: defines.hpp:23

◆ getDatabase()

dbms::Database& anna::dbos::Accesor::getDatabase ( )
inline

Devuelve la instancia de la base de datos asociada a este cargador.

Returns
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.
71 { return *a_database; }

◆ getId()

Id anna::dbos::Accesor::getId ( ) const
inline

Devuelve el identificador de este accesor.

Returns
El identificador de este accesor.
48 { return a_id; }

◆ getStatement()

dbms::Statement* anna::dbos::Accesor::getStatement ( )
inlinenoexcept

Devuelve la instancia de la sentencia statement asociada a este cargador.

Returns
La instancia de la sentencia statement asociada a este cargador. Puede ser NULL.
55  {
56  return (a_statement == NULL && a_database != NULL) ? (a_statement = initialize(*a_database)) : a_statement;
57  }
virtual dbms::Statement * initialize(dbms::Database &database) noexcept(false)=0

◆ hasDataBase()

bool anna::dbos::Accesor::hasDataBase ( ) const
inline

Devuelve true si el accesor fue inicializado con base de datos o false en otro caso.

Returns
true si el accesor fue inicializado con base de datos o false en otro caso.
63 { return a_database != NULL; }

◆ initialize()

virtual dbms::Statement* anna::dbos::Accesor::initialize ( dbms::Database database)
protectedpure virtualnoexcept

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.

Parameters
databaseInstancia de la base de datos indicada en el constructor.

Friends And Related Function Documentation

◆ StorageArea

friend class StorageArea
friend

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