GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::TOndemandSet< T > Template-Klassenreferenz

Ein typsicherer Set von Referenzen auf persistente Objekte in der Datenbank (gedacht als Attribut für persistente Objekte).
Objekte können nur einmalig eingefügt werden. Mehr ...

#include <GloTOndemandSet.h>

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

Öffentliche Methoden

 TOndemandSet ()
 
 TOndemandSet (Base &rBase)
 
virtual ~TOndemandSet ()
 
virtual int get (glo::ObjID &rObjID, T *&prRetVal, EnSeekMode eMode)
 
virtual int get (std::shared_ptr< T > &rRetVal, const ObjID &rObjID)
 
virtual int get (T *&prRetVal, const ObjID &rObjID)
 
virtual int get (T *&prRetVal, EnSeekMode eMode)
 
virtual int getTypeAsString (std::string &rsTypeName) override
 
virtual int insert (T *NewObj)
 Fügt das übergebene persistentes Objekt im Set hinter der aktuellen Position ein.
 
virtual int insert (std::shared_ptr< T > NewObj)
 Fügt das übergebene persistentes Objekt im Set hinter der aktuellen Position ein.
 
virtual int remove (T *Object)
 Entfernt das übergebene persistentes Objekt aus dem Set.
 
virtual int remove (std::shared_ptr< T > Object)
 Entfernt das übergebene persistentes Objekt aus dem Set.
 
virtual int get (std::shared_ptr< T > &rRetVal, EnSeekMode eMode)
 Liefert ein Objekt aus dem Set in Bezug auf eMode.
 
virtual int get (TOndemand< T > &rRetVal, EnSeekMode eMode)
 Liefert ein Objekt aus dem Set in Bezug auf eMode.
 
virtual int get (glo::ObjID &rObjID, std::shared_ptr< T > &rRetVal, EnSeekMode eMode)
 Liefert eine Objekt-ID und wenn möglich ein Objekt aus dem Container in Bezug auf eMode.
 
virtual int get (glo::ObjID &rObjID, TOndemand< T > &rRetVal, EnSeekMode eMode)
 Liefert eine Objekt-ID und wenn möglich ein Objekt aus dem Container in Bezug auf eMode.
 
- Öffentliche Methoden geerbt von glo::OndemandSet
 OndemandSet ()
 
 OndemandSet (Base &rBase)
 
virtual ~OndemandSet ()
 
virtual void clear ()
 
virtual ReferencegetOndemand (EnSeekMode eMode)
 
virtual int getPersistent (BasePersistent *&prRetVal, const ObjID &rObjID)
 
virtual int insertOndemand (const Reference &rNewOndemand)
 
virtual int insertPers (BasePersistent *pNewObj)
 
virtual int insertPers (std::shared_ptr< BasePersistent > spNewObj)
 
virtual int removeOndemand (const Reference &rOndemand)
 
virtual int setCurrentObject (const ObjID &rObjID)
 
virtual int setPosition (std::size_t nPosition)
 
virtual std::size_t size () const
 
virtual bool inLot (const ObjID &object) const
 Siehe Beschreibung in Oberklasse.
 
virtual bool inLot (const BasePersistent &object) const
 Siehe Beschreibung in Oberklasse.
 
virtual bool inLot (const std::shared_ptr< BasePersistent > object) const
 Siehe Beschreibung in Oberklasse.
 
virtual bool inLot (const Reference &object) const
 Siehe Beschreibung in Oberklasse.
 
- Öffentliche Methoden geerbt von glo::OndemandLot
 OndemandLot ()
 
 OndemandLot (Base &rBase)
 
virtual ~OndemandLot ()
 
virtual BasegetBase () const override
 
virtual int getObjID (ObjID &rObjID, EnSeekMode eMode)
 
virtual int getPers (BasePersistent *&prRetVal, EnSeekMode eMode)
 
virtual int getPers (glo::ObjID &rObjID, BasePersistent *&prRetVal, EnSeekMode eMode)
 
virtual int getPers (glo::ObjID &rObjID, std::shared_ptr< BasePersistent > &rRetVal, EnSeekMode eMode)
 
virtual int getPers (std::shared_ptr< BasePersistent > &rRetVal, EnSeekMode eMode)
 
std::list< Reference * > & List ()
 
virtual int removePers (BasePersistent *pObject)
 
virtual int setBase (Base *pBase) override
 
- Öffentliche Methoden geerbt von glo::BaseLot
 BaseLot ()
 
virtual ~BaseLot ()
 
virtual int lock (const LockSpecification &rLockSpecification)
 
virtual int lock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int removePers (std::shared_ptr< BasePersistent > spObject)
 
virtual int setWatch (const WatchSpecification &rWatchSpec)
 
virtual int setWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0)
 
virtual int unlock (const LockSpecification &rLockSpecification)
 
virtual int unlock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int unsetWatch (const WatchSpecification &rWatchSpec)
 
virtual int unsetWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0)
 
- Öffentliche Methoden geerbt von glo::AbstractBaseLot
 AbstractBaseLot ()
 
virtual ~AbstractBaseLot ()
 
virtual int getPersistent (std::shared_ptr< BasePersistent > &rRetVal, const ObjID &rObjID)
 
virtual int setCurrentObject (const BasePersistent &rObject)
 
- Ö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.
 

Private Methoden

 TOndemandSet (const TOndemandSet &)
 
TOndemandSet< T > & operator= (const TOndemandSet &)
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von glo::CallBack
std::string m_strDebugInfo
 
- Geschützte Methoden geerbt von glo::BaseLot
int lockObjID (const ObjID &rObjID)
 
int setWatchObjID (const ObjID &rObjID)
 
int takeOverBase (const BasePersistent *pObj)
 
int takeOverBase (const Reference *pRef)
 
int unlockObjID (const ObjID &rObjID)
 
int unsetWatchObjID (const ObjID &rObjID)
 
- Geschützte Methoden geerbt von glo::CallBack
 CallBack (const CallBack &rT)
 
void deinit ()
 
void init ()
 
- Geschützte Attribute geerbt von glo::OndemandLot
std::list< Reference * > m_odRefList
 
std::list< Reference * >::iterator m_odRefListIterator
 
unsigned long m_ulDatabaseID
 
- Geschützte Attribute geerbt von glo::BaseLot
unsigned long m_ulClassID
 

Ausführliche Beschreibung

template<class T>
class glo::TOndemandSet< T >

Ein typsicherer Set von Referenzen auf persistente Objekte in der Datenbank (gedacht als Attribut für persistente Objekte).
Objekte können nur einmalig eingefügt werden.

Im Gegensatz zu einem TPointerSet (bei dem die referenzierten Objekte automatisch 'mitgeladen' werden), ist der TOndemandSet ein Set von Referenzen; es werden die referenzierten Objekte also nicht mit dem referenzierenden Objekt aus der Datenbank geladen, sondern können bei Bedarf 'nachgeladen' werden

Sinnvoller Einsatz ist immer dann gegeben, wenn ein Objekt mehrere, nicht im jeden Fall notwendig im Speicher verfügbare, 'große' Objekte referenzieren soll.

Wenn Objekte einer Objektdatenbank mehrere Objekte in einer anderen Objektdatenbank referenzieren sollen, ist dieses nur mit glo::TOndemandList bzw. glo::TOndemandSet möglich .

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ TOndemandSet() [1/3]

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

Standard-Konstruktor.

◆ TOndemandSet() [2/3]

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

Konstruktor mit Parameterübergabe.

Parameter
[in]rBaseEs wird die Datenbank mitgegeben.

◆ ~TOndemandSet()

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

Destruktor, es wird für alle Objekte im Objekt-Set der eigene Sperr- und Überwachungsmodus aufgehoben und dann der Objekt-Set geleert.

Siehe auch
clear()

◆ TOndemandSet() [3/3]

template<class T >
glo::TOndemandSet< T >::TOndemandSet ( const TOndemandSet< T > & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ get() [1/8]

template<class T >
int glo::TOndemandSet< T >::get ( glo::ObjID & rObjID,
std::shared_ptr< T > & rRetVal,
EnSeekMode eMode )
virtual

Liefert eine Objekt-ID und wenn möglich ein Objekt aus dem Container in Bezug auf eMode.

Dadurch ist auch eine Iteration über nicht lesbare Objekte möglich (es wird dann lediglich die Objekt-ID zurückgegeben).

Parameter
[in,out]rObjIDDie Objekt-ID.
[in,out]rRetValBei keinem Fehler das geholte Objekt in einem std::shared_ptr.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

◆ get() [2/8]

template<class T >
int glo::TOndemandSet< T >::get ( glo::ObjID & rObjID,
T *& prRetVal,
EnSeekMode eMode )
virtual

Liefert eine Objekt-ID und wenn möglich ein Objekt aus dem Container in Bezug auf eMode. Dadurch ist auch eine Iteration über nicht lesbare Objekte möglich (es wird dann lediglich die Objekt-ID zurückgegeben).

Parameter
[in,out]rObjIDDie Objekt-ID.
[in,out]prRetValBei keinem Fehler das geholte Objekt.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.
Achtung
Wenn prRetVal gültig, muss dieses Objekt von der aufrufenden Instanz aus dem Speicher entfernt werden. Es wird empfohlen, die gleichnamige Methode mit einen std::shared_ptr zu nutzen.

◆ get() [3/8]

template<class T >
int glo::TOndemandSet< T >::get ( glo::ObjID & rObjID,
TOndemand< T > & rRetVal,
EnSeekMode eMode )
virtual

Liefert eine Objekt-ID und wenn möglich ein Objekt aus dem Container in Bezug auf eMode.

Dadurch ist auch eine Iteration über nicht lesbare Objekte möglich (es wird dann lediglich die Objekt-ID zurückgegeben).

Parameter
[in,out]rObjIDDie Objekt-ID.
[in,out]rRetValBei keinem Fehler das geholte Objekt in einem std::shared_ptr.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

◆ get() [4/8]

template<class T >
int glo::TOndemandSet< T >::get ( std::shared_ptr< T > & rRetVal,
const ObjID & rObjID )
virtual

Liefert ein Objekt mit übergebener Objekt-ID aus dem Container.

Parameter
[in,out]rRetValBei keinem Fehler das geholte Objekt.
[in]rObjIDDie Objekt-ID.
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
Wenn rRetVal gültig, muss dieses Objekt von der aufrufenden Instanz mittels BasePersistent::forget() aus dem Speicher entfernt werden.

◆ get() [5/8]

template<class T >
int glo::TOndemandSet< T >::get ( std::shared_ptr< T > & rRetVal,
EnSeekMode eMode )
virtual

Liefert ein Objekt aus dem Set in Bezug auf eMode.

Parameter
[in,out]rRetValBei keinem Fehler das geholte Objekt in einem std::shared_ptr.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

◆ get() [6/8]

template<class T >
int glo::TOndemandSet< T >::get ( T *& prRetVal,
const ObjID & rObjID )
virtual

Liefert ein Objekt mit übergebener Objekt-ID aus dem Container.

Parameter
[in,out]prRetValBei keinem Fehler das geholte Objekt.
[in]rObjIDDie Objekt-ID.
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
Wenn prRetVal gültig, muss dieses Objekt von der aufrufenden Instanz mittels BasePersistent::forget() aus dem Speicher entfernt werden.

◆ get() [7/8]

template<class T >
int glo::TOndemandSet< T >::get ( T *& prRetVal,
EnSeekMode eMode )
virtual

Liefert ein Objekt aus dem Set in Bezug auf eMode.

Parameter
[in,out]prRetValBei keinem Fehler das geholte Objekt.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.
Achtung
Wenn prRetVal gültig, muss dieses Objekt von der aufrufenden Instanz aus dem Speicher entfernt werden. Es wird empfohlen, die gleichnamige Methode mit einen std::shared_ptr zu nutzen.

◆ get() [8/8]

template<class T >
int glo::TOndemandSet< T >::get ( TOndemand< T > & rRetVal,
EnSeekMode eMode )
virtual

Liefert ein Objekt aus dem Set in Bezug auf eMode.

Parameter
[in,out]rRetValBei keinem Fehler das geholte Objekt in einem std::shared_ptr.
[in]eModeDer Suchmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Eine Rückgabe == glo::ERR_RANGE zeigt das Ende des AllSets an, ist daher kein echter Fehler.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

◆ getTypeAsString()

template<class T >
int glo::TOndemandSet< T >::getTypeAsString ( std::string & rsTypeName)
overridevirtual

Liefert den Typ des Template-Sets, also den Klassennamen als String, wenn mit der Datenbank verbunden.

Parameter
[in,out]rsTypeNameDie Typbezeichnung.
Rückgabe
Wenn Rückgabewert < 0, ist ein Fehler aufgetreten.

Erneute Implementation von glo::BaseLot.

◆ insert() [1/2]

template<class T >
int glo::TOndemandSet< T >::insert ( std::shared_ptr< T > NewObj)
virtual

Fügt das übergebene persistentes Objekt im Set hinter der aktuellen Position ein.

Wenn der Set gesperrt ist, wird das einzufügende Objekt mit den Sperrmodus des Sets gesperrt.

Wenn der Set überwacht wird, wird das einzufügende Objekt mit den Überwachungsmodus des Sets mitüberwacht.

Parameter
[in]NewObjDas einzufügende persistente Objekt.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der interene Iterator m_odRefListIterator zeigt bei erfolgreichen Einfügen auf das eingefügte Element.

◆ insert() [2/2]

template<class T >
int glo::TOndemandSet< T >::insert ( T * NewObj)
virtual

Fügt das übergebene persistentes Objekt im Set hinter der aktuellen Position ein.

Wenn der Set gesperrt ist, wird das einzufügende Objekt mit den Sperrmodus des Sets gesperrt.

Wenn der Set überwacht wird, wird das einzufügende Objekt mit den Überwachungsmodus des Sets mitüberwacht.

Parameter
[in]NewObjDas einzufügende persistente Objekt.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der interene Iterator m_odRefListIterator zeigt bei erfolgreichen Einfügen auf das eingefügte Element.

◆ operator=()

template<class T >
TOndemandSet< T > & glo::TOndemandSet< T >::operator= ( const TOndemandSet< T > & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ remove() [1/2]

template<class T >
int glo::TOndemandSet< T >::remove ( std::shared_ptr< T > Object)
virtual

Entfernt das übergebene persistentes Objekt aus dem Set.

Wenn der Set gesperrt ist, wird das zu entfernende Objekt mit den Sperrmodus des Sets freigegeben.

Wenn der Set überwacht wird, wird die Überwachung des zu entfernende Objekts mit dem Überwachungsmodus des Sets beendet.

Parameter
[in]ObjectDas zu entfernende persistente Objekt.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der interene Iterator m_odRefListIterator zeigt bei erfolgreichen Löschen auf das, dem entfernten nachfolgende Element. Wenn es kein nachfolgendes Element gibt, zeigt der interene Iterator m_odRefListIterator auf das Kontainerende.

◆ remove() [2/2]

template<class T >
int glo::TOndemandSet< T >::remove ( T * Object)
virtual

Entfernt das übergebene persistentes Objekt aus dem Set.

Wenn der Set gesperrt ist, wird das zu entfernende Objekt mit den Sperrmodus des Sets freigegeben.

Wenn der Set überwacht wird, wird die Überwachung des zu entfernende Objekts mit dem Überwachungsmodus des Sets beendet.

Parameter
[in]ObjectDas zu entfernende persistente Objekt.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der interene Iterator m_odRefListIterator zeigt bei erfolgreichen Löschen auf das, dem entfernten nachfolgende Element. Wenn es kein nachfolgendes Element gibt, zeigt der interene Iterator m_odRefListIterator auf das Kontainerende.

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