1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_dbos_Loader_hpp
10 #define anna_dbos_Loader_hpp
12 #include <anna/dbos/Accesor.hpp>
25 Interfaz que deben cumplir los objetos encargados de cargar el objeto desde el medio fisico,
26 que normalmente sera alguna base de datos, y pasarlo un ambito de objetos en C++.
28 class Loader : public Accesor {
31 Metodo de debemos re-escribir para devolver el nombre completo del selector de recursos.
32 Para evitar ambigüedades este nombre deberia incluir la lista completa de \em namespaces
33 a la que pertenece la clase.
34 \return Una cadena con el nombre de este selector.
36 virtual const char* getClassName() const throw() { return "anna::dbos::Loader"; }
41 \param database Base de datos asociada a este cargador y que deberia servir para
42 obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador.
43 \param id Identificador de este accesor.
45 Loader(dbms::Database& database, const Id id = 0) : Accesor(database, id) {;}
49 \param id Identificador de este accesor.
51 Loader(const Id id = 0) : Accesor(id) {;}
54 Devuelve el indice usado para ubicar en memoria el objeto que vamos a cargar.
55 @return El indice usado para ubicar en memoria el objeto que vamos a cargar.
57 virtual Index getIndex() const throw(RuntimeException) = 0;
60 * Este método debe ser reescrito para poder obtener los datos de la clave principal usada para localizar
61 * los objetos en un área del almacenamiento.
63 * \param crossedLoader Instancia del cargador alternativo que habrá calculado la clave principal en
64 * a lo clave alternativa contenida en él.
66 virtual void upload(CrossedLoader& crossedLoader) throw(RuntimeException) {;}
68 friend class StorageArea;