+++ /dev/null
-// 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_dbos_Object_hpp
-#define anna_dbos_Object_hpp
-
-#include <anna/core/RuntimeException.hpp>
-
-#include <anna/dbms/DatabaseException.hpp>
-
-#include <anna/dbos/Loader.hpp>
-
-namespace anna {
-
-namespace dbos {
-
-class Creator;
-
-/**
- Interfaz que deben cumplir los objetos persistentes.
-
- Ejemplo de definicion de una clase usando esta interfaz:
-
- \include dbos_demo.p/oodb.d/hdrs/dbos_demo.oodb.Table01.h
-
- Ejemplo de implementacion de la clase correspondiente a la definicion:
-
- \include dbos_demo.p/oodb.d/oodb.Table01.cc
-*/
-class Object {
-public:
- /**
- Devuelve el indice asociado a este objeto
- \return el indice asociado a este objeto
- */
- Index getIndex() const throw() { return a_index; }
-
- /**
- * Devuelve \em true si este objeto ya existe en el medio físico (fué cargado desde allí o fue creado y grabado posteriormente) o
- * \em false si este objeto sólo existe en la memoria intermedia.
- * \return \em true si este objeto ya existe en el medio físico (fué cargado desde allí o fue creado y grabado posteriormente) o
- * \em false si este objeto sólo existe en la memoria intermedia.
- */
- bool isStored() const throw() { return a_isStored; }
-
-protected:
- /**
- Constructor.
- */
- Object() : a_index(0), a_isStored(false) {;}
-
- /**
- Inicializa este objeto con la informacion obtenida desde el medio fisico donde
- esta grabado el objeto. Normalmente este medio fisico correspondera con una base de datos.
-
- \param loader Cargador que contiene la informacion con la que debemos inicializar este objeto.
-
- */
- virtual void initialize(Loader& loader) throw(RuntimeException, dbms::DatabaseException) = 0;
-
- /**
- Actualiza la informacion de este objeto con la nueva informacion obtenida del medio
- fisico.
- \param creator Creador que contiene la informacion con la que debemos inicializar este objeto.
- */
- virtual void create(Creator& creator) throw(RuntimeException, dbms::DatabaseException) {;}
-
- /**
- Libera los recursos reservados por este objeto. Este metodo solo se invocara cuando el objeto
- vaya a ser sacado definitivamente del area de almacenamiento.
- */
- virtual void destroy() throw() {;}
-
- /**
- Devuelve \em true si el registro del medio fisico ha cambiado respecto al registro
- cargado en memoria o \em false en otro caso.
-
- \param loader Cargador que contiene la informacion con la que deberiamos re-inicializar
- este objeto.
-
- \return \em true si el registro del medio fisico ha cambiado respecto al registro
- cargado en memoria o \em false en otro caso.
- */
- virtual bool hasChanges(Loader& loader) throw(RuntimeException, dbms::DatabaseException) {
- return true;
- }
-
- /**
- Devuelve \em true si el objeto requiere comenzar el proceso de comprobacion de recarga
- de datos \em false en otro caso.
- */
- virtual bool enableUpdate() const throw() { return true; }
-
-private:
- Index a_index;
- bool a_isStored;
-
- void setIndex(const Index index) throw() { a_index = index; }
-
- friend class StorageArea;
-};
-
-
-}
-}
-
-#endif