BankAndCustomer
Lade ...
Suche ...
Keine Treffer
glo::BasePersistent Klassenreferenzabstract

Abstrakte Basisklasse für Persistent und die generische GenericPersistent. Mehr ...

#include <GloBasePersistent.h>

Klassendiagramm für glo::BasePersistent:
Zusammengehörigkeiten von glo::BasePersistent:

Öffentliche Methoden

 BasePersistent ()
 
 BasePersistent (const BasePersistent &rT)
 
virtual int setBase (Base *pBase) override
 
virtual Base * getBase () const override
 
virtual void removeBase ()
 
virtual int getClassInfo (ClassInfo *&prClassInfo)
 
virtual int getTypeAsString (std::string &rsTypeName) override
 
virtual std::time_t getCreateDate () const =0
 
virtual std::time_t getLastChangeDate () const =0
 
virtual unsigned int remember ()
 
virtual unsigned int forget ()
 
virtual int assign (Base &rBase)
 
virtual bool isAssigned () const
 
unsigned int getLinkCount () const
 
virtual ObjID getObjID () const
 
int getRecord (Record *&prRecord) const
 
int getRecord (std::shared_ptr< Record > &rRetVal) const
 
int getAllPersAttributeNames (std::list< std::string > &rRetValList, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributeNamesSortByID (std::map< AttributeID, std::string > &rRetValMap, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getPersAttribute (BaseRecordAttribute *&prRetVal, const std::string &sName) const
 
int getPersAttribute (std::shared_ptr< BaseRecordAttribute > &rRetVal, const std::string &sName) const
 
int getPersAttribute (BaseRecordAttribute *&prRetVal, const AttributeID &rAttributeID) const
 
int getPersAttribute (std::shared_ptr< BaseRecordAttribute > &rRetVal, const AttributeID &rAttributeID) const
 
int getAllPersAttributes (std::list< BaseRecordAttribute * > &rRetValList, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributes (std::list< std::shared_ptr< BaseRecordAttribute > > &rRetValList, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributesSortByName (std::map< std::string, BaseRecordAttribute *, std::less< std::string > > &rRetValMap, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributesSortByName (std::map< std::string, std::shared_ptr< BaseRecordAttribute >, std::less< std::string > > &rRetValMap, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributesSortByID (std::map< AttributeID, BaseRecordAttribute *, std::less< AttributeID > > &rRetValMap, const std::vector< unsigned long > *pClassIdVector=0) const
 
int getAllPersAttributesSortByID (std::map< AttributeID, std::shared_ptr< BaseRecordAttribute >, std::less< AttributeID > > &rRetValMap, const std::vector< unsigned long > *pClassIdVector=0) const
 
virtual void takeOverRecord (Record *pRecord)
 
virtual unsigned long getGloClassID () const =0
 
virtual int store (EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual bool isStored ()
 
virtual int deleteInBase (EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual bool isDeletedInBase ()
 
virtual int refresh ()
 
virtual int lock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int lock (const LockSpecification &rLockSpecification)
 
virtual int relock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int relock (const LockSpecification &rLockSpecification)
 
virtual int unlock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int unlock (const LockSpecification &rLockSpecification)
 
virtual int isLocked (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int isLocked (const LockSpecification &rLockSpecification) 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 getProcessingPossibilities (LockPossibleSpecification &rLockPossibleSpec, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int setWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0)
 
virtual int setWatch (const WatchSpecification &rWatchSpec)
 
virtual int unsetWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0)
 
virtual int unsetWatch (const WatchSpecification &rWatchSpec)
 
BasePersistentoperator= (const BasePersistent &rT)
 
bool operator== (const BasePersistent &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
bool operator!= (const BasePersistent &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
- Ö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.
 

Geschützte Methoden

virtual ~BasePersistent ()
 
virtual void insertInObjectSpy () const =0
 
virtual void removeInObjectSpy () const =0
 
virtual void setCreateDate ()=0
 
void setSpyaction (bool bSpyaction)
 
- Geschützte Methoden geerbt von glo::CallBack
 CallBack (const CallBack &rT)
 
void init ()
 
void deinit ()
 

Geschützte Attribute

Base * m_pBase
 
unsigned int m_uiReferenceCount
 
eut::CriticalSection m_LocalCriticalSection
 
Record * m_pRecord
 
bool m_bSpyaction
 

Freundbeziehungen

class PrivateBase
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von glo::CallBack
std::string m_strDebugInfo
 

Ausführliche Beschreibung

Abstrakte Basisklasse für Persistent und die generische GenericPersistent.

Objekte dieses Typs haben einen Referenzzähler und dürfen nicht mittels des Destruktors aus den Speicher entfernt werden.
Objekte mit Referenzzähler dürfen nur einmalig instanziiert werden. Bei Übergabe an eine andere Instanz muss über BasePersistent::remember() der Referenzzähler inkrementiert werden.
Wenn die eine besitzende Instanz das Objekt nicht mehr braucht, wird über BasePersistent::forget() der Referenzzähler dekrementiert.
Wenn der Referenzzähler auf 0 läuft, wird der Destruktors automatisch aufgerufen.
Diese fehlerträchtige Methode kann durch Nutzung des std::shared_ptr, wenn beim Instantiieren eines persistenten Objekts der Forgetter mit übergeben wird, vermieden werden.
Beispiel (PersClass ist die persistente Klasse):

std::shared_ptr<PersClass> t_NewPersObject( new PersClass(), glo::Forgetter<PersClass>() );
Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ BasePersistent() [1/2]

glo::BasePersistent::BasePersistent ( )

Standard-Konstruktor.

◆ ~BasePersistent()

virtual glo::BasePersistent::~BasePersistent ( )
protectedvirtual

Destruktor, wenn nötig wird Speicher aufgeräumt.
Der Destruktor steht nicht zur Verfügung. Das Objekt darf nur über forget() aus dem Speicher entfernt werden.

◆ BasePersistent() [2/2]

glo::BasePersistent::BasePersistent ( const BasePersistent & rT)

Copy-Konstruktor. Es wird hier nur der Zeiger auf die Datenbank kopiert.

Dokumentation der Elementfunktionen

◆ assign()

virtual int glo::BasePersistent::assign ( Base & rBase)
virtual

Mittels dieser Methode wird ein Objekt dieser Klasse der Datenbank bekannt gemacht und bekommt dadurch (bei Erfolg) eine eindeutige ObjID (wenn nicht schon angemeldet).
Erst nach diesem Aufruf dieser Methode kann ein Objekt gespeichert werden. Ein persistentes Objekt muss nur einmal, vor dem ersten Speichern, an die Datenbank angemeldet werden. Danach behält es ja seine eindeutige ObjID.

Parameter
[in]rBaseDie Datenbank, in der das Objekt gespeichert werden soll.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Die übergebene Datenbank muss geöffnet sein.

Erneute Implementation in glo::Persistent.

◆ deleteInBase()

virtual int glo::BasePersistent::deleteInBase ( EnDeepMode eDeepMode = DM_SHALLOW)
virtual

Das Objekt bzw. dessen persistenten Attribute werden in der Datenbank gelöscht.

Parameter
[in]eDeepModeDer Löschtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

Erneute Implementation in glo::Persistent.

◆ forget()

virtual unsigned int glo::BasePersistent::forget ( )
virtual

Ein Objekt dieser Klasse sollte immer mit einem vorherigen Aufruf von BasePersistent::remember() ausgeliefert werden. Die belieferte Instanz muss dann das Objekt mittels dieser Methode wieder 'vergessen'.

Rückgabe
Der Rückgabewert ist die Anzahl der Referenzen auf das Objekt dieser Klasse.
Ausnahmebehandlung
eut::ErrorNExceptionEs wird eine Exception geworfen, wenn der Referenzzähler ins Minus laufen möchte.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen.

◆ getAllPersAttributeNames()

int glo::BasePersistent::getAllPersAttributeNames ( std::list< std::string > & rRetValList,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle Namen der persistenten Attribute aus seinem Datensatz.

Parameter
[in,out]rRetValListDie Liste aller Attributnamen.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getAllPersAttributeNamesSortByID()

int glo::BasePersistent::getAllPersAttributeNamesSortByID ( std::map< AttributeID, std::string > & rRetValMap,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert die Namen der persistenten Attribute sortiert nach AttributeID aus seinem Datensatz.

Parameter
[in,out]rRetValMapDie Liste aller Attributnamen.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getAllPersAttributes() [1/2]

int glo::BasePersistent::getAllPersAttributes ( std::list< BaseRecordAttribute * > & rRetValList,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz.

Parameter
[in,out]rRetValListIn diese Liste werden die Attribute angehängt. Die Liste wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValList übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die in rRetValList gelieferten Objekte müssen von der aufrufenden Instanz mittels BaseRecordAttribute::forget() aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getAllPersAttributes(std::list<std::shared_ptr<BaseRecordAttribute>>&, const std::vector<unsigned long>*)const zu nutzen.

◆ getAllPersAttributes() [2/2]

int glo::BasePersistent::getAllPersAttributes ( std::list< std::shared_ptr< BaseRecordAttribute > > & rRetValList,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz.

Parameter
[in,out]rRetValListIn diese Liste werden die Attribute angehängt. Die Liste wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValList übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getAllPersAttributesSortByID() [1/2]

int glo::BasePersistent::getAllPersAttributesSortByID ( std::map< AttributeID, BaseRecordAttribute *, std::less< AttributeID > > & rRetValMap,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz sortiert nach deren AttributeID.

Parameter
[in,out]rRetValMapIn diese Map werden die Attribute eingefügt. Die Map wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die in rRetValMap gelieferten Objekte müssen von der aufrufenden Instanz mittels BaseRecordAttribute::forget() aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getAllPersAttributesSortByID(std::map<std::string,std::shared_ptr<BaseRecordAttribute>,std::less<std::string>>&,const std::vector<unsigned long>*)const zu nutzen.

◆ getAllPersAttributesSortByID() [2/2]

int glo::BasePersistent::getAllPersAttributesSortByID ( std::map< AttributeID, std::shared_ptr< BaseRecordAttribute >, std::less< AttributeID > > & rRetValMap,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz sortiert nach deren AttributeID.

Parameter
[in,out]rRetValMapIn diese Map werden die Attribute eingefügt. Die Map wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getAllPersAttributesSortByName() [1/2]

int glo::BasePersistent::getAllPersAttributesSortByName ( std::map< std::string, BaseRecordAttribute *, std::less< std::string > > & rRetValMap,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz sortiert nach der Attributbezeichnung.

Parameter
[in,out]rRetValMapIn diese Map werden die Attribute eingefügt. Die Map wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die in rRetValMap gelieferten Objekte müssen von der aufrufenden Instanz mittels BaseRecordAttribute::forget() aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getAllPersAttributesSortByName(std::map<std::string,std::shared_ptr<BaseRecordAttribute>,std::less<std::string>>&,const std::vector<unsigned long>*)const zu nutzen.

◆ getAllPersAttributesSortByName() [2/2]

int glo::BasePersistent::getAllPersAttributesSortByName ( std::map< std::string, std::shared_ptr< BaseRecordAttribute >, std::less< std::string > > & rRetValMap,
const std::vector< unsigned long > * pClassIdVector = 0 ) const

Liefert alle BaseRecordAttribute aus seinem Datensatz sortiert nach der Attributbezeichnung.

Parameter
[in,out]rRetValMapIn diese Map werden die Attribute eingefügt. Die Map wird nicht vorher bereinigt.
[in]pClassIdVectorWenn übergeben, werden nur die Attribute der (Ober-) Klassen mit der ClassID aus pClassIdVector in rRetValMap übertragen.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getBase()

virtual Base * glo::BasePersistent::getBase ( ) const
overridevirtual
Rückgabe
Liefert Zeiger auf die Datenbank.
Achtung
Das gelieferte Objekt darf von der aufrufenden Insztanz nicht aus dem Speicher entfernt werden.
Siehe auch
setBase(Base*)

Erneute Implementation von glo::CallBack.

◆ getClassInfo()

virtual int glo::BasePersistent::getClassInfo ( ClassInfo *& prClassInfo)
virtual

Liefert die ClassInfo, wenn mit Datenbank verbunden.

Parameter
[in,out]prClassInfoDie ClassInfo dieses Objektes.
Rückgabe
Wenn Rückgabewert < 0, dann ist ein Fehler aufgetreten.
Achtung
Die gelieferte ClassInfo muss von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ getCreateDate()

virtual std::time_t glo::BasePersistent::getCreateDate ( ) const
pure virtual

Liefert in Unterklassen das Datum der Erstellung in der Datenbank.

Rückgabe
Das Erstellungsdatum.

Implementiert in glo::Persistent.

◆ getGloClassID()

virtual unsigned long glo::BasePersistent::getGloClassID ( ) const
pure virtual
Rückgabe
Liefert die eigene Klassen-ID.

Implementiert in glo::Persistent.

◆ getLastChangeDate()

virtual std::time_t glo::BasePersistent::getLastChangeDate ( ) const
pure virtual

Liefert in Unterklassen das Datum der letzten Änderung in der Datenbank.

Rückgabe
Das Änderungsdatum.

Implementiert in glo::Persistent.

◆ getLinkCount()

unsigned int glo::BasePersistent::getLinkCount ( ) const
Rückgabe
Liefert die Anzahl von referenzierenden Instanzen.
Siehe auch
remember() and forget()

◆ getObjID()

virtual ObjID glo::BasePersistent::getObjID ( ) const
virtual
Rückgabe
Liefert die eindeutige ObjID.

Erneute Implementation in glo::Persistent.

◆ getPersAttribute() [1/4]

int glo::BasePersistent::getPersAttribute ( BaseRecordAttribute *& prRetVal,
const AttributeID & rAttributeID ) const

Liefert ein BaseRecordAttribute aus seinem Datensatz, welches der übergebenen AttributID entsprichet.

Parameter
[in,out]prRetValDas Attribut.
[in]rAttributeIDDie Attribut-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Wenn prRetVal gültig, muss dieser mittels BaseRecordAttribute::forget() von der aufrufenden Instanz aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getPersAttribute(std::shared_ptr<BaseRecordAttribute>&, const AttributeID&)const zu nutzen.

◆ getPersAttribute() [2/4]

int glo::BasePersistent::getPersAttribute ( BaseRecordAttribute *& prRetVal,
const std::string & sName ) const

Liefert ein BaseRecordAttribute aus seinem Datensatz, welches der übergebenen Bezeichnung (inkl. der Klassenbezeichnung) entsprichet (z.B.:"glo::Persistent.m_dtCreateDate").

Parameter
[in,out]prRetValDas Attribut.
[in]sNameDie vollständige Bezeichnung des gesuchten Datensatzattributs (z.B."glo::Persistent.m_dtCreateDate").
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Wenn prRetVal gültig, muss dieser mittels BaseRecordAttribute::forget() von der aufrufenden Instanz aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getPersAttribute(std::shared_ptr<BaseRecordAttribute>&, const std::string&)const zu nutzen.

◆ getPersAttribute() [3/4]

int glo::BasePersistent::getPersAttribute ( std::shared_ptr< BaseRecordAttribute > & rRetVal,
const AttributeID & rAttributeID ) const

Liefert ein BaseRecordAttribute aus seinem Datensatz, welches der übergebenen AttributID entsprichet.

Parameter
[in,out]rRetValDas Attribut in einem std::shared_ptr.
[in]rAttributeIDDie Attribut-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getPersAttribute() [4/4]

int glo::BasePersistent::getPersAttribute ( std::shared_ptr< BaseRecordAttribute > & rRetVal,
const std::string & sName ) const

Liefert ein BaseRecordAttribute aus seinem Datensatz, welches der übergebenen Bezeichnung (inkl. der Klassenbezeichnung) entsprichet (z.B.:"glo::Persistent.m_dtCreateDate").

Parameter
[in,out]rRetValDas Attribut in einem std::shared_ptr.
[in]sNameDer Name des Attributs.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getProcessingPossibilities()

virtual int glo::BasePersistent::getProcessingPossibilities ( LockPossibleSpecification & rLockPossibleSpec,
EnDeepMode eDeepMode = DM_SHALLOW ) const
virtual

Liefert die erlaubten Möglichkeiten für dieses Objekt in der Datenbank.

Parameter
[in,out]rLockPossibleSpecDie Möglichkeitsantwort.
[in]eDeepModeDer Tiefenmodus für den geprüft wird.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
Objekt auf Sperren bzw. Zugriffsmöglichkeiten prüfen.

◆ getRecord() [1/2]

int glo::BasePersistent::getRecord ( Record *& prRecord) const

Liefert den Datensatz dieses Objektes.

Parameter
[in,out]prRecordDer Datensatz, wenn vorhanden.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Wenn prRecord gültig ist, muss dieser von der aufrufenden Instanz mittels Record::forget(), aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen und die Methode getRecord(std::shared_ptr<Record>&)const zu nutzen.

◆ getRecord() [2/2]

int glo::BasePersistent::getRecord ( std::shared_ptr< Record > & rRetVal) const

Liefert den Datensatz dieses Objektes.

Parameter
[in,out]rRetValDer Datensatz in einem std::shared_ptr, wenn vorhanden.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ getTypeAsString()

virtual int glo::BasePersistent::getTypeAsString ( std::string & rsTypeName)
overridevirtual

Liefert die Klassenbezeichnung.

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

Erneute Implementation von glo::CallBack.

Erneute Implementation in glo::Persistent.

◆ insertInObjectSpy()

virtual void glo::BasePersistent::insertInObjectSpy ( ) const
protectedpure virtual

Fügt das Objekt in seinen ObjectSpy ein (in Unterklassen, weil Persistent und GenericPersistent unterschiedliche ObjectSpy's haben).

Implementiert in glo::Persistent.

◆ isAssigned()

virtual bool glo::BasePersistent::isAssigned ( ) const
virtual
Rückgabe
Liefert true, wenn Objekt an einer Datenbank angemeldet ist.

◆ isDeletedInBase()

virtual bool glo::BasePersistent::isDeletedInBase ( )
virtual

Fragt in der Datenbank nach, ob Objekt gelöscht ist (nicht irgendein Flag im Speicher, also 'teuer').

Rückgabe
Wenn true, ist Objekt in der Datenbank gelöscht.
Achtung
Gelöschte Objekte können nicht mehr mit ihrer ursprünglichen ObjID gespeichert wertden.

◆ isLocked() [1/2]

virtual int glo::BasePersistent::isLocked ( const LockSpecification & rLockSpecification) const
virtual

Fragt in der Datenbank nach, ob Objekt mit einem bestimmten Sperrmodus von einer anderen Instanz gesperrt ist (nicht irgendein Flag im Speicher, also 'teuer').

Parameter
[in]rLockSpecificationDer Sperr- und Sperrtiefenmodus.
Rückgabe
Wenn > 0, ist das Objekt mit dem übergebenen Sperrmodus in der Datenbank gesperrt. Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
Objekt auf Sperren bzw. Zugriffsmöglichkeiten prüfen.

◆ isLocked() [2/2]

virtual int glo::BasePersistent::isLocked ( EnLockMode eLockMode = LK_DELETEvWRITE,
EnDeepMode eDeepMode = DM_SHALLOW ) const
virtual

Fragt in der Datenbank nach, ob Objekt mit einem bestimmten Sperrmodus von einer anderen Instanz gesperrt ist (nicht irgendein Flag im Speicher, also 'teuer').

Parameter
[in]eLockModeDer Sperrmodus.
[in]eDeepModeDer Sperrtiefenmodus.
Rückgabe
Wenn > 0, ist das Objekt mit dem übergebenen Sperrmodus in der Datenbank gesperrt. Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
Objekt auf Sperren bzw. Zugriffsmöglichkeiten prüfen.

◆ isPossible() [1/2]

virtual int glo::BasePersistent::isPossible ( bool bRead,
bool bWrite,
bool bDelete,
EnDeepMode eDeepMode = DM_SHALLOW ) const
virtual

Es werden die erlaubten Aktionen für das Objekt in der Datenbank erfragt.

Parameter
[in]bReadWenn true, wird auf Lesen dürfen geprüft.
[in]bWriteWenn true, wird auf Schreiben dürfen geprüft.
[in]bDeleteWenn true, wird auf Löschen dürfen geprüft.
[in]eDeepModeDer Tiefenmodus für den geprüft wird.
Rückgabe
Wenn Rückgabe == 0, ist die jeweilige Aktion erlaubt. Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
Objekt auf Sperren bzw. Zugriffsmöglichkeiten prüfen.

◆ isPossible() [2/2]

virtual int glo::BasePersistent::isPossible ( const LockPossibleSpecification & rLockPossibleSpec,
EnDeepMode eDeepMode = DM_SHALLOW ) const
virtual

Es werden die erlaubten Aktionen für das Objekt in der Datenbank erfragt.

Parameter
[in]rLockPossibleSpecDie Möglichkeitsanfrage.
[in]eDeepModeDer Tiefenmodus für den geprüft wird.
Rückgabe
Wenn Rückgabe == 0, ist die jeweilige Aktion in rLockPossibleSpec erlaubt. Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
Objekt auf Sperren bzw. Zugriffsmöglichkeiten prüfen.

◆ isStored()

virtual bool glo::BasePersistent::isStored ( )
virtual

Fragt in der Datenbank nach, ob Objekt gespeichert ist (nicht irgendein Flag im Speicher, also 'teuer').

Rückgabe
Wenn true, ist Objekt in der Datenbank gespeichert.

◆ lock() [1/2]

virtual int glo::BasePersistent::lock ( const LockSpecification & rLockSpecification)
virtual

Das Objekt wird in der Datenbank für andere Clients gesperrt.

Parameter
[in]rLockSpecificationDer Sperr- und Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Sperre aufzuheben muss die korrespondierende Methode unlock(const LockSpecification&) const mit gleichen Parameterwerten genutzt werden.
Letztendlich wird die Methode Persistent::lock(EnLockMode,EnDeepMode) aufgerufen.
Siehe auch
Ein persistentes Objekt sperren.

◆ lock() [2/2]

virtual int glo::BasePersistent::lock ( EnLockMode eLockMode = LK_DELETEvWRITE,
EnDeepMode eDeepMode = DM_SHALLOW )
virtual

Das Objekt wird in der Datenbank für andere Clients gesperrt.

Parameter
[in]eLockModeDer Sperrmodus.
[in]eDeepModeDer Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Sperre aufzuheben muss die korrespondierende Methode unlock(EnLockMode, EnDeepMode) const mit gleichen Parameterwerten genutzt werden.
Siehe auch
Ein persistentes Objekt sperren.

Erneute Implementation in glo::Persistent.

◆ operator!=()

bool glo::BasePersistent::operator!= ( const BasePersistent & rT) const

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=()

BasePersistent & glo::BasePersistent::operator= ( const BasePersistent & rT)

Zuweisungsoperator.

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

◆ operator==()

bool glo::BasePersistent::operator== ( const BasePersistent & rT) const

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ refresh()

virtual int glo::BasePersistent::refresh ( )
virtual

Liest alle persistenten Attribute des Objekts aus der Datenbank neu ein.

Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Wenn das Objekt in einer noch nicht abgeschlossenen Transaktion ist, werden die Werte aus der Transaktion geholt.
Siehe auch
GlobalObjects Transaktion.

Erneute Implementation in glo::Persistent.

◆ relock() [1/2]

virtual int glo::BasePersistent::relock ( const LockSpecification & rLockSpecification)
virtual

Diese Methode führt ein unlock(const LockSpecification&) und anschließendes lock(const LockSpecification&) eines schon gesperrten Objekts aus, womit neu referenzierte Objekte je nach Sperrmodus, wenn möglich, mitgesperrt werden und vorherige mitgesperrte referenzierte Objekte freigegeben werden. Wenn neu referenzierte Objekte nicht gesperrt werden können, wird der vorherige Sperrzustand beibehalten.

Parameter
[in]rLockSpecificationDer Sperr- und Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Sperre zu erneuern müssen die gleichen Parameterwerte wie bei der ursprünglichen Sperre genutzt werden. Um die Sperre aufzuheben muss die korrespondierende Methode unlock(const LockSpecification&) mit gleichen Parameterwerten genutzt werden.
Letztendlich wird die Methode Persistent::relock(EnLockMode,EnDeepMode) aufgerufen.
Siehe auch
Ein persistentes Objekt sperren.

◆ relock() [2/2]

virtual int glo::BasePersistent::relock ( EnLockMode eLockMode = LK_DELETEvWRITE,
EnDeepMode eDeepMode = DM_SHALLOW )
virtual

Diese Methode führt ein unlock(EnLockMode, EnDeepMode) und anschließendes lock(EnLockMode, EnDeepMode) eines schon gesperrten Objekts aus, womit neu referenzierte Objekte je nach Sperrmodus, wenn möglich, mitgesperrt werden und vorherige mitgesperrte referenzierte Objekte freigegeben werden. Wenn neu referenzierte Objekte nicht gesperrt werden können, wird der vorherige Sperrzustand beibehalten.

Parameter
[in]eLockModeDer Sperrmodus.
[in]eDeepModeDer Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Sperre zu erneuern müssen die gleichen Parameterwerte wie bei der ursprünglichen Sperre genutzt werden. Um die Sperre aufzuheben muss die korrespondierende Methode unlock(EnLockMode, EnDeepMode) mit gleichen Parameterwerten genutzt werden.
Siehe auch
Ein persistentes Objekt sperren.

Erneute Implementation in glo::Persistent.

◆ remember()

virtual unsigned int glo::BasePersistent::remember ( )
virtual

Inkrementiert den Referenz-Zähler. Sollte immer bei 'Auslieferung' eines Objektes dieser Klasse aufgerufen werden. Die belieferte Instanz muss dann das Objekt mit BasePersistent::forget() 'vergessen'.

Rückgabe
Der Rückgabewert ist die Anzahl der Referenzen auf das Objekt dieser Klasse.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Verbindung mit Forgetter in Betracht zu ziehen.

◆ removeBase()

virtual void glo::BasePersistent::removeBase ( )
virtual

Entfernt die Referenz auf die Datenbank und setzt diese auf nullptr.

Erneute Implementation in glo::Persistent.

◆ removeInObjectSpy()

virtual void glo::BasePersistent::removeInObjectSpy ( ) const
protectedpure virtual

Entfernt das Objekt aus seinem ObjectSpy (in Unterklassen, weil Persistent und GenericPersistent unterschiedliche ObjectSpy's haben).

Implementiert in glo::Persistent.

◆ setBase()

virtual int glo::BasePersistent::setBase ( Base * pBase)
overridevirtual

Setzt den Zeiger auf die Datenbank.

Parameter
[in]pBaseZeiger auf die Datenbank.
Rückgabe
If return value < 0, then an error has occurred.
Achtung
Die Datenbank verbleibt in der Verantwortung der aufrufenden Instanz. Wird z.B. die Datenbank aus dem Speicher entfernt, muss vorher setBase(Base*) mit nullptr oder removeBase() aufgerufen werden.

Erneute Implementation von glo::CallBack.

◆ setCreateDate()

virtual void glo::BasePersistent::setCreateDate ( )
protectedpure virtual

Setzt das Erstellungsdatum (in Unterklassen).

Implementiert in glo::Persistent.

◆ setSpyaction()

void glo::BasePersistent::setSpyaction ( bool bSpyaction)
protected

Setzt m_bSpyaction.

Parameter
[in]bSpyactionWenn false, wird z.B. im dtor das Objekt nicht aus dem ObjectSpy entfernt.

◆ setWatch() [1/2]

virtual int glo::BasePersistent::setWatch ( const WatchSpecification & rWatchSpec)
virtual

Das Objekt wird in der Datenbank überwacht.

Parameter
[in]rWatchSpecDie Überwachungsspezifikation.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Überwachung aufzuheben muss die korrespondierende Methode unsetWatch(const WatchSpecification&) const mit gleichen Parameterwerten genutzt werden.
Prinzipiell ist es möglich, einzelne Überwachungsmodi aufzuheben Es sollte dann darauf geachtet werden, dass alle einzelnen Überwachungsmodi auch angewendet werden, damit keine Überwachung im Speicher verbleibt bis das Programm beendet wird.
Letztendlich wird die Methode Persistent::setWatch(TdWatchNotifyMode,EnDeepMode,CallBack*) aufgerufen.
Siehe auch
Beobachten und benachrichtigen.

◆ setWatch() [2/2]

virtual int glo::BasePersistent::setWatch ( TdWatchNotifyMode ulWatchMode,
EnDeepMode eDeepMode,
CallBack * pCallBack = 0 )
virtual

Das Objekt wird in der Datenbank überwacht.

Parameter
[in]ulWatchModeDer Überwachungsmodus.
Erlaubte Überwachungsmodi:
  • ::WNM_WRITE = schreiben wird gemeldet
  • ::WNM_WRITE_TRANSACTION = wie ::WNM_WRITE, wird in einer Transaktion ausgelöst
  • ::WNM_DELETE = löschen wird gemeldet
  • ::WNM_DELETE_TRANSACTION = wie ::WNM_DELETE, wird in einer Transaktion ausgelöst
  • ::WNM_LOCK = sperren wird gemeldet
  • ::WNM_UNLOCK = freigeben wird gemeldet
[in]eDeepModeDer Überwachungstiefenmodus.
[in]pCallBackDas CallBack-Objekt, welches über seine Methode CallBack::notify(NotifyNote&) benachrichtigt wird. Wenn kein CallBack übergeben, wird notify(NotifyNote&) von this genommen; in diesem Fall sollte die Methode notify(NotifyNote&) in der jeweiligen abgeleiteten Klasse überschrieben sein.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Um die Überwachung aufzuheben muss die korrespondierende Methode unsetWatch(TdWatchNotifyMode, EnDeepMode, CallBack*) const mit gleichen Parameterwerten genutzt werden.
Prinzipiell ist es möglich, einzelne Überwachungsmodi aufzuheben Es sollte dann darauf geachtet werden, dass alle einzelnen Überwachungsmodi auch angewendet werden, damit keine Überwachung im Speicher verbleibt bis das Programm beendet wird.
Achtung
Grundsätzlich darf pCallBack nicht zerstört werden, bevor die Überwachung aufgehoben wurde!
Siehe auch
Beobachten und benachrichtigen.

Erneute Implementation in glo::Persistent.

◆ store()

virtual int glo::BasePersistent::store ( EnDeepMode eDeepMode = DM_SHALLOW)
virtual

Das Objekt bzw. dessen persistenten Attribute, werden in der Datenbank gespeichert.

Parameter
[in]eDeepModeDer Speichertiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Das Objekt muss der Datenbank bekannt bzw. dort angemeldet sein.
Siehe auch
BasePersistent::assign(Base&)

Erneute Implementation in glo::Persistent.

◆ takeOverRecord()

virtual void glo::BasePersistent::takeOverRecord ( Record * pRecord)
virtual

Übernimmt Record wenn ungleich nullptr. Auf jeden Fall wird der ggf. eigene vorhandene Record in m_pRecord 'vergessen'.

Parameter
[in]pRecordDer zu übernehmende Record.

Erneute Implementation in glo::Persistent.

◆ unlock() [1/2]

virtual int glo::BasePersistent::unlock ( const LockSpecification & rLockSpecification)
virtual

Das Objekt wird in der Datenbank freigegeben. Eine Sperrfreigabe muss mit den gleichen Parametern wie der vorherige Sperraufruf aufgerufen werden.

Parameter
[in]rLockSpecificationDer urspüngliche Sperr- und Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Hebt die Sperre auf, die durch die korrespondierende Methode lock(const LockSpecification&) const initiiet wurde, wenn der Parameter die selben Werte hat.
Letztendlich wird die Methode Persistent::unLock(EnLockMode,EnDeepMode) aufgerufen.
Siehe auch
Ein persistentes Objekt sperren.

◆ unlock() [2/2]

virtual int glo::BasePersistent::unlock ( EnLockMode eLockMode = LK_DELETEvWRITE,
EnDeepMode eDeepMode = DM_SHALLOW )
virtual

Das Objekt wird in der Datenbank freigegeben. Eine Sperrfreigabe muss mit den gleichen Parametern wie der vorherige Sperraufruf aufgerufen werden.

Parameter
[in]eLockModeDer urspüngliche Sperrmodus.
[in]eDeepModeDer urspüngliche Sperrtiefenmodus.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Hebt die Sperre auf, die durch die korrespondierende Methode lock(EnLockMode, EnDeepMode) const initiiet wurde, wenn die Parameter die selben Werte haben.
Siehe auch
Ein persistentes Objekt sperren.

Erneute Implementation in glo::Persistent.

◆ unsetWatch() [1/2]

virtual int glo::BasePersistent::unsetWatch ( const WatchSpecification & rWatchSpec)
virtual

Die Überwachung des Objekts in der Datenbank wird bendet. Eine Überwachungsbeendigung muss mit den gleichen Parametern wie die vorherige Überwachung aufgerufen werden.

Parameter
[in]rWatchSpecDie ursprüngliche Überwachungsspezifikation.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Hebt die Überwachung auf, die durch die korrespondierende Methode setWatch(const WatchSpecification&) const initiiet wurde, wenn die Parameter die selben Werte haben.
Prinzipiell ist es möglich, einzelne Überwachungsmodi aufzuheben Es sollte dann darauf geachtet werden, dass alle einzelnen Überwachungsmodi auch angewendet werden, damit keine Überwachung im Speicher verbleibt bis das Programm beendet wird.
Letztendlich wird die Methode Persistent::unsetWatch(TdWatchNotifyMode,EnDeepMode,CallBack*) aufgerufen.
Siehe auch
Beobachten und benachrichtigen.

◆ unsetWatch() [2/2]

virtual int glo::BasePersistent::unsetWatch ( TdWatchNotifyMode ulWatchMode,
EnDeepMode eDeepMode,
CallBack * pCallBack = 0 )
virtual

Die Überwachung des Objekts in der Datenbank wird beendet. Eine Überwachungsbeendigung muss mit den gleichen Parametern wie die vorherige Überwachung aufgerufen werden.

Parameter
[in]ulWatchModeDer ursprüngliche Überwachungsmodus.
Erlaubte Überwachungsmodi:
  • ::WNM_WRITE = schreiben wird gemeldet
  • ::WNM_WRITE_TRANSACTION = wie ::WNM_WRITE, wird in einer Transaktion ausgelöst
  • ::WNM_DELETE = löschen wird gemeldet
  • ::WNM_DELETE_TRANSACTION = wie ::WNM_DELETE, wird in einer Transaktion ausgelöst
  • ::WNM_LOCK = sperren wird gemeldet
  • ::WNM_UNLOCK = freigeben wird gemeldet
[in]eDeepModeDer ursprüngliche Überwachungstiefenmodus.
[in]pCallBackDas CallBack-Objekt, welches über seine Methode CallBack::notify(NotifyNote&) benachrichtigt wurde. Wenn kein CallBack übergeben, wird notify(NotifyNote&) von this genommen; in diesem Fall sollte die Methode notify(NotifyNote&) in der jeweiligen abgeleiteten Klasse überschrieben sein.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Hebt die Überwachung auf, die durch die korrespondierende Methode setWatch(TdWatchNotifyMode, EnDeepMode, CallBack*) const initiiet wurde, wenn die Parameter die selben Werte haben.
Prinzipiell ist es möglich, einzelne Überwachungsmodi aufzuheben Es sollte dann darauf geachtet werden, dass alle einzelnen Überwachungsmodi auch angewendet werden, damit keine Überwachung im Speicher verbleibt bis das Programm beendet wird.
Siehe auch
Beobachten und benachrichtigen.

Erneute Implementation in glo::Persistent.

Freunde und bezugnehmende Symbol-Dokumentation

◆ PrivateBase

friend class PrivateBase
friend

Wegen Zugriff auf div. Methoden

Dokumentation der Datenelemente

◆ m_bSpyaction

bool glo::BasePersistent::m_bSpyaction
protected

Wenn false, wird das Objekt im Destruktor der Unterklassen (siehe auch dort) nicht aus Objektspy entfernt (ggf. sollte dort nicht vorhanden sein).
Wird z.B. von der PrivateBase beim Nachinstanziieren eines eingebetteten Objektes auf false gesetzt.
Voreinstellung = true.

◆ m_LocalCriticalSection

eut::CriticalSection glo::BasePersistent::m_LocalCriticalSection
protected

Damit mehrere Threads auf BasePersistent::remember() und BasePersistent::forget() zugreifen können, wird der Zugriff mit dieser CriticalSection synchronisiert.

◆ m_pBase

Base* glo::BasePersistent::m_pBase
protected

Persistente Objekte gehören zu einer Datenbank.

◆ m_pRecord

Record* glo::BasePersistent::m_pRecord
protected

Der Datensatz des Objekts, wird ggf. aus mehreren Datensätzen in diesen zusammengeführt.

◆ m_uiReferenceCount

unsigned int glo::BasePersistent::m_uiReferenceCount
protected

Der Referenzzähler. Sie auch Klassenbeschreibung von BasePersistent.


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