GlobalObjects
Alle Klassen Namensbereiche Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Freundbeziehungen Makrodefinitionen Seiten
glo::TOndemand< T > Template-Klassenreferenz

Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenbank. Mehr ...

#include <GloTOndemand.h>

Klassendiagramm für glo::TOndemand< T >:

Öffentliche Methoden

 TOndemand ()
 
 TOndemand (Base &rBase)
 
 TOndemand (const ObjID &rObjID)
 
 TOndemand (const ObjID &rObjID, Base &rBase)
 
 TOndemand (const ObjID &rObjID, unsigned long ulDatabaseID)
 
 TOndemand (const TOndemand &rT)
 
 TOndemand (unsigned long ulDatabaseID)
 
virtual ~TOndemand ()
 
int get (std::shared_ptr< T > &rRetVal)
 
int get (T *&prObj)
 
virtual int setReference (const ObjID &rObjID) override
 
int set (const T *rObj)
 Übernimmt die Objekt-ID des übergeben Objekt als Referenz.
 
int set (const T &rObj)
 Übernimmt die Objekt-ID des übergeben Objekt als Referenz.
 
int set (const std::shared_ptr< T > &rObj)
 Übernimmt die Objekt-ID des übergeben Objekt als Referenz.
 
TOndemand< T > & operator= (const TOndemand &rT)
 Zuweisungsoperator.
 
bool operator== (const TOndemand &rT) const
 Vergleichsoperator.
 
bool operator!= (const TOndemand &rT) const
 Vergleichsoperator.
 
- Öffentliche Methoden geerbt von glo::Reference
 Reference ()
 
 Reference (Base &rBase)
 
 Reference (const ObjID &rObjID)
 
 Reference (const ObjID &rObjID, Base &rBase)
 
 Reference (const ObjID &rObjID, unsigned long ulDatabaseID)
 
 Reference (const Reference &rT)
 
 Reference (unsigned long ulDatabaseID)
 
virtual ~Reference ()
 
virtual int deleteInBase (EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual BasegetBase () const override
 
ObjID getObjID () const
 
const ObjIDgetObjIDAsPointer () const
 
int getReference (BasePersistent *&prRetVal)
 
int getReference (std::shared_ptr< BasePersistent > &rspRetVal)
 
virtual int getTypeAsString (std::string &rsTypeName) override
 
virtual int isLocked (const LockSpecification &rLockSpecification) const
 
virtual int isLocked (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
bool isNULL () const
 
virtual int isPossible (bool bRead, bool bWrite, bool bDelete, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int isPossible (const LockPossibleSpecification &rLockPossibleSpec, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int lock (const LockSpecification &rLockSpecification) const
 
virtual int lock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
Referenceoperator= (const Reference &rT)
 
virtual int setBase (Base *pBase) override
 
void setNULL ()
 
int setReference (const BasePersistent &rObj)
 
int setReference (const BasePersistent *pObj)
 
virtual int setWatch (const WatchSpecification &rWatchSpec) const
 
virtual int setWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0) const
 
virtual int unlock (const LockSpecification &rLockSpecification) const
 
virtual int unlock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int unsetWatch (const WatchSpecification &rWatchSpec) const
 
virtual int unsetWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack) const
 
bool operator== (const Reference &rT) const
 Vergleichsoperator.
 
bool operator!= (const Reference &rT) const
 Vergleichsoperator.
 
- Öffentliche Methoden geerbt von glo::CallBack
 CallBack ()
 
virtual ~CallBack ()
 
virtual void notify (NotifyNote &rNote)
 
CallBackoperator= (const CallBack &rT)
 
bool operator== (const CallBack &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
bool operator!= (const CallBack &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 

Öffentliche, statische Methoden

static unsigned long getStaticGloClassID ()
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von glo::CallBack
std::string m_strDebugInfo
 
- Geschützte Methoden geerbt von glo::CallBack
 CallBack (const CallBack &rT)
 
void deinit ()
 
void init ()
 

Ausführliche Beschreibung

template<class T>
class glo::TOndemand< T >

Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenbank.

Im Gegensatz zu einem Zeiger auf ein persistentes Objekt (bei dem das referenzierte Objekt 'mitgeladen' wird), ist TOndemand eine Referenz über die Objekt-ID auf ein persistentes Objekt; es wird also nicht mit dem referenzierenden Objekt aus der Datenbank geladen, sondern kann bei Bedarf 'nachgeladen' werden.

Sinnvoller Einsatz ist immer dann gegeben, wenn ein Objekt ein nicht im jeden Fall notwendig im Speicher verfügbares 'großes' Objekt referenziert.

Z.B. bei einer Bilderverwaltung könnte ein Bildobjekt textuelle Informationen, ein Thumpnail und ein 'große' Bild enthalten. Für einige Ansichten ist es evtl. aus Geschwindigkeitsgründen gar nicht sinnvoll bei jeder Anzeige das 'große' Bild mit aus der Datenbank zu holen. Da wäre dann eine Referenz über ein TOndemand sinnvoll.

Wenn Objekte einer Objektdatenbank Objekte in einer anderen Objektdatenbank referenzieren sollen, ist dieses nur mit glo::TOndemand möglich.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ TOndemand() [1/7]

template<class T>
glo::TOndemand< T >::TOndemand ( )

Standard-Konstruktor.

Benutzt glo::CallBack::m_strDebugInfo und SUPER.

Wird benutzt von TOndemand(), operator!=(), operator=() und operator==().

◆ TOndemand() [2/7]

template<class T>
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID)

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts mitgegeben werden.

Benutzt glo::CallBack::m_strDebugInfo und SUPER.

◆ TOndemand() [3/7]

template<class T>
glo::TOndemand< T >::TOndemand ( Base & rBase)

Konstruktor mit Parameterübergabe.

Parameter
[in]rBaseEs kann schon bei der Erstellung die maßgebliche Datenbank mitgegeben werden.

Benutzt glo::Reference::Base, glo::CallBack::m_strDebugInfo und SUPER.

◆ TOndemand() [4/7]

template<class T>
glo::TOndemand< T >::TOndemand ( unsigned long ulDatabaseID)

Konstruktor mit Parameterübergabe.

Parameter
[in]ulDatabaseIDEs kann schon bei der Erstellung die maßgebliche Datenbank ID mitgegeben werden.

Benutzt glo::CallBack::m_strDebugInfo und SUPER.

◆ TOndemand() [5/7]

template<class T>
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID,
Base & rBase )

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts und...
[in]rBase...die maßgebliche Datenbank mitgegeben werden.

Benutzt glo::Reference::Base, glo::CallBack::m_strDebugInfo und SUPER.

◆ TOndemand() [6/7]

template<class T>
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID,
unsigned long ulDatabaseID )

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts und...
[in]ulDatabaseID...die maßgebliche Datenbank ID mitgegeben werden.

Benutzt glo::CallBack::m_strDebugInfo und SUPER.

◆ TOndemand() [7/7]

template<class T>
glo::TOndemand< T >::TOndemand ( const TOndemand< T > & rT)

Copy-Konstruktor.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

Benutzt TOndemand(), glo::CallBack::m_strDebugInfo und SUPER.

◆ ~TOndemand()

template<class T>
glo::TOndemand< T >::~TOndemand ( )
virtual

Destruktor.

Dokumentation der Elementfunktionen

◆ get() [1/2]

template<class T>
int glo::TOndemand< T >::get ( std::shared_ptr< T > & rRetVal)

Liefert das referenzierte Objekt aus der Datenbank (bzw. aus dem Speicher wenn schon geladen) in einem std::shared_ptr.

Parameter
[in,out]rRetValDas referenzierte Objekt in einem std::shared_ptr.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

Benutzt get().

◆ get() [2/2]

template<class T>
int glo::TOndemand< T >::get ( T *& prObj)

Liefert das referenzierte Objekt aus der Datenbank (bzw. aus dem Speicher wenn schon geladen).

Parameter
[in,out]prObjDie Zeigerreferenz auf das referenzierte Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.
Achtung
Das gelieferte Objekt muss von der aufrufenden Instanz mittels BasePersistent::forget() aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Betracht zu ziehen und die Methode get(std::shared_ptr<T>&) zu nutzen.

Benutzt glo::ERR_WRONG_TYPE und glo::BasePersistent::forget().

Wird benutzt von get().

◆ getStaticGloClassID()

template<class T>
static unsigned long glo::TOndemand< T >::getStaticGloClassID ( )
inlinestatic

Gibt die Klassen-ID des Templates zurück.

Rückgabe
Die Klassen-ID

◆ operator!=()

template<class T>
bool glo::TOndemand< T >::operator!= ( const TOndemand< T > & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

Benutzt TOndemand().

◆ operator=()

template<class T>
TOndemand< T > & glo::TOndemand< T >::operator= ( const TOndemand< T > & rT)

Zuweisungsoperator.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

Benutzt TOndemand().

◆ operator==()

template<class T>
bool glo::TOndemand< T >::operator== ( const TOndemand< T > & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

Benutzt TOndemand().

◆ set() [1/3]

template<class T>
int glo::TOndemand< T >::set ( const std::shared_ptr< T > & rObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]pObjDer Zeiger auf das zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

Benutzt set().

◆ set() [2/3]

template<class T>
int glo::TOndemand< T >::set ( const T & rObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]pObjDer Zeiger auf das zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

Benutzt glo::ERR_WRONG_TYPE.

◆ set() [3/3]

template<class T>
int glo::TOndemand< T >::set ( const T * rObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]pObjDer Zeiger auf das zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

Benutzt glo::ERR_WRONG_TYPE.

Wird benutzt von glo::TOndemandList< T >::get(), glo::TOndemandList< T >::get(), glo::TOndemandSet< T >::get(), glo::TOndemandSet< T >::get() und set().

◆ setReference()

template<class T>
int glo::TOndemand< T >::setReference ( const ObjID & rObjID)
overridevirtual

Übernimmt die Objekt-ID als Referenz.

Parameter
[in]rObjIDDie zu referenzierende Objekt-ID.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

Erneute Implementation von glo::Reference.

Benutzt glo::ERR_WRONG_TYPE, glo::ObjID::getClassID() und glo::ObjID::isNULL().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: