Remove operation help.
[anna.git] / include / anna / dbos / Creator.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
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 //
7
8
9 #ifndef anna_dbos_Creator_hpp
10 #define anna_dbos_Creator_hpp
11
12 #include <anna/dbos/Accesor.hpp>
13
14 namespace anna {
15
16 namespace dbos {
17
18 /**
19    Interfaz que deben cumplir los objetos encargados de crear un nuevo objeto que sera ubicado
20    en el area de almacenamiento asociado a un medio fisico.
21 */
22 class Creator : public Accesor {
23 public:
24   /**
25      Metodo de debemos re-escribir para devolver el nombre completo del selector de recursos.
26      Para evitar ambigüedades este nombre deberia incluir la lista completa de \em namespaces
27      a la que pertenece la clase.
28      \return Una cadena con el nombre de este selector.
29   */
30   virtual const char* getClassName() const throw() { return "anna::dbos::Creator"; }
31
32 protected:
33   /**
34      Constructor.
35      \param database Base de datos asociada a este cargador y que deberia servir para
36      obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador.
37      \param id Identificador de este accesor.
38   */
39   Creator(dbms::Database& database, const Id id = 0) : Accesor(database, id) {;}
40
41   /**
42      Constructor.
43      \param id Identificador de este accesor.
44   */
45   Creator(const Id id = 0) : Accesor(id) {;}
46
47   /**
48      Devuelve el indice usado para ubicar en memoria el objeto que vamos a cargar.
49      @return El indice usado para ubicar en memoria el objeto que vamos a cargar.
50   */
51   virtual Index getIndex() const throw(RuntimeException) = 0;
52
53 private:
54   dbms::Statement* initialize(dbms::Database&) throw(RuntimeException) { return NULL;}
55
56   friend class StorageArea;
57 };
58
59 }
60 }
61
62 #endif
63
64
65