GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::BaseRecordAttribute Klassenreferenzabstract

Basisklasse für die einzelnen Attribute eines Record. Mehr ...

#include <GloBaseRecordAttribute.h>

Klassendiagramm für glo::BaseRecordAttribute:

Öffentliche Methoden

 BaseRecordAttribute (ClassInfoAttribute *pClassInfoAttribut, const std::streampos &rFilePos)
 
virtual ~BaseRecordAttribute ()
 
virtual bool dataIsFieldContent () const =0
 
unsigned int forget ()
 
AttributeID getAttributeID () const
 
virtual int getAttributeValueBlob (eut::Blob &rBlob) const
 
ClassInfoAttributegetClassInfoAttribute () const
 
std::string getClassMemberName () const
 
std::string getClassName () const
 
virtual BaseRecordAttributegetCopy ()=0
 
virtual unsigned short getDataFieldLength () const =0
 
virtual std::string getDataReference () const
 
EnDataType getDataType () const
 
std::string getFieldName () const
 
int getFieldPos ()
 
std::streampos getFilePosition () const
 
virtual int getFormattedFieldContents (std::string &rsRetVal, DATA_REFERENCE_INFO &rRetValInfo, ObjID ObjID)
 
EnDataTypeGroup getInfoType ()
 
unsigned int getReferenceCount () const
 
std::string getTableFieldName () const
 
std::string getTableName () const
 
ClassInfoAttribute::Type getType () const
 
std::string getTypeAsCppString () const
 
std::string getTypeAsString () const
 
std::string getTypeInfo () const
 
virtual std::string getValueAsDataString () const =0
 
virtual std::string getValueAsDisplayString () const =0
 
virtual std::string getValueAsStreamString () const =0
 
virtual std::string getValueAsString () const =0
 
virtual void * getValueAsVoidPointer ()=0
 
virtual void initNew ()=0
 
unsigned int remember ()
 
virtual void setDataReference (const std::string &rsDataReference)
 
void setFilePosition (const std::streampos &rFilePos)
 
virtual int setValueFromObjectAttributeID (Persistent &rObject, const AttributeID &rAttributeID)
 
virtual void setValueFromVoid (void *pValue)=0
 
virtual int takeValue (const BaseRecordAttribute &rT)
 
virtual int updateDataReference (const std::string &rsDataPath, DATA_REFERENCE_INFO MethodInfo)
 
bool operator== (const BaseRecordAttribute &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
bool operator!= (const BaseRecordAttribute &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 

Geschützte Methoden

 BaseRecordAttribute ()
 
 BaseRecordAttribute (const BaseRecordAttribute &rT)
 

Private Methoden

BaseRecordAttributeoperator= (const BaseRecordAttribute &)
 

Private Attribute

std::streampos m_FilePosition
 
eut::CriticalSection m_LocalCriticalSection
 
ClassInfoAttributem_pClassInfoAttribut
 
unsigned int m_uiReferenceCount
 

Statische, private Attribute

static unsigned int sm_uiInstanceCount
 

Freundbeziehungen

class ptl::TDVList< BaseRecordAttribute >
 

Ausführliche Beschreibung

Basisklasse für die einzelnen Attribute eines Record.

Es werden von GlobalObjects nur bestimmte Attribute als speicherbar unterstützt. Jedes unterstütztes Attribut einer persistenten Klasse muss von dieser Klasse abgeleitet sein.

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 wird über remember() der Referenzzähler inkrementiert. Wenn die jetzt besitzende Instanz das Objekt nicht mehr braucht, wird über forget() der Referenzzähler dekrementiert.

Wenn der Referenzzähler auf 0 läuft, wird der Destruktors aufgerufen.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ BaseRecordAttribute() [1/3]

glo::BaseRecordAttribute::BaseRecordAttribute ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ ~BaseRecordAttribute()

virtual glo::BaseRecordAttribute::~BaseRecordAttribute ( )
virtual

Der Destruktor steht nicht zur Verfügung. Das Objekt darf nur über forget() aus dem Speicher entfernt werden.

◆ BaseRecordAttribute() [2/3]

glo::BaseRecordAttribute::BaseRecordAttribute ( ClassInfoAttribute * pClassInfoAttribut,
const std::streampos & rFilePos )

Konstruktor mit Parameterübergabe.

Parameter
[in]pClassInfoAttributEs wird ein Klasseninformations-Attribut erwartet.
[in]rFilePosDie Dateiposition.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ BaseRecordAttribute() [3/3]

glo::BaseRecordAttribute::BaseRecordAttribute ( const BaseRecordAttribute & rT)
protected

Copy-Konstruktor.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.
Siehe auch
getCopy()

Dokumentation der Elementfunktionen

◆ dataIsFieldContent()

virtual bool glo::BaseRecordAttribute::dataIsFieldContent ( ) const
pure virtual

Liefert true, wenn die Attributdaten als Feldinhalt abgelegt werden.
Liefert false, wenn Attribute, deren Inhalt nicht unbedingt in einer Tabellenspalte stehen (weil diese ggf. manchmal oder auch grundsätzlich zu groß sind, und desshalb eine Referenz auf eine Datei als Feldinhalt genutzt wird).

Rückgabe
s.o.
Zu beachten
Muß von allen nichtabstrakten Record-Attributen überschrieben sein.
Achtung
Wenn Record-Attributen eine Referenz auf die Daten haben können, müssen diese die Methoden
  • std::string getDataReference() const
  • void setDataReference (...) const
  • int getFormattedFieldContents (...) überschreiben!"

Implementiert in glo::BlobRecordAttribute, glo::BoolRecordAttribute, glo::CharRecordAttribute, glo::DateTimeRecordAttribute, glo::DoubleRecordAttribute, glo::FloatRecordAttribute, glo::IDRecordAttribute, glo::IntRecordAttribute, glo::LongDoubleRecordAttribute, glo::LongLongRecordAttribute, glo::LongRecordAttribute, glo::LotRecordAttribute, glo::ShortRecordAttribute, glo::StringRecordAttribute, glo::UCharRecordAttribute, glo::UIntRecordAttribute, glo::ULongLongRecordAttribute, glo::ULongRecordAttribute und glo::UShortRecordAttribute.

◆ forget()

unsigned int glo::BaseRecordAttribute::forget ( )

Ein Objekt dieser Klasse sollte immer mit einem vorherigen Aufruf von 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 läuft.

◆ getAttributeID()

AttributeID glo::BaseRecordAttribute::getAttributeID ( ) const

Liefert eine eindeutige Attribut-ID aus m_pClassInfoAttribut.

Rückgabe
Die Attribut-ID.

◆ getAttributeValueBlob()

virtual int glo::BaseRecordAttribute::getAttributeValueBlob ( eut::Blob & rBlob) const
virtual

Fügt den String aus getValueAsStreamString() am Ende des übergebenen Blobs ein. Ist für den DataStreamer.

Parameter
[in,out]rBlobDas übergebene Blob, an welches die Daten angehängt werden.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Nicht alle Unterklassen lassen diese Methode zu, da diese etwas anders gestreamt werden. Diese Unterklassen liefern einen Fehler wenn diese Methode aufgerufen wird.

Erneute Implementation in glo::BlobRecordAttribute, glo::LotRecordAttribute und glo::StringRecordAttribute.

◆ getClassInfoAttribute()

ClassInfoAttribute * glo::BaseRecordAttribute::getClassInfoAttribute ( ) const

Liefert das eigene Klasseninformations-Attribut.

Rückgabe
Das Klasseninformations-Attribut.
Achtung
Das gelieferte Objekt lebt nur so lange wie das liefernde Objekt.

◆ getClassMemberName()

std::string glo::BaseRecordAttribute::getClassMemberName ( ) const

Liefert die Attributbezeichnung mit Klassenbezeichnung getrennt durch einen Punkt. Z.B. "MyClass.m_MyAttribute".

Rückgabe
Die Klassen- und Attributbezeichnung.

◆ getClassName()

std::string glo::BaseRecordAttribute::getClassName ( ) const

Liefert die Klassenbezeichnung zu dem das Attribut gehört.

Rückgabe
Die Klassenbezeichnung.

◆ getCopy()

◆ getDataFieldLength()

◆ getDataReference()

virtual std::string glo::BaseRecordAttribute::getDataReference ( ) const
virtual

Liefert hier nur einen leeren String.
Für Attribute, deren Inhalt nicht unbedingt in einer Tabellenspalte stehen sollen (weil diese ggf. manchmal oder auch grundsätzlich zu groß sind, und desshalb eine Referenz auf eine Datei als Feldinhalt genutzt wird), muß diese Methode überschrieben werden.
Diese Methode soll die Dateibezeichnung, in welcher die Daten abgelegt werden, liefern.

Rückgabe
Ggf. die vorhandene Dateibezeichnung. Wenn leer, dann gibts wohl keine.

Erneute Implementation in glo::BlobRecordAttribute, glo::LotRecordAttribute und glo::StringRecordAttribute.

◆ getDataType()

EnDataType glo::BaseRecordAttribute::getDataType ( ) const

Liefert den Attributtyp als Enum.

Rückgabe
Der Attributtyp als Enum.

◆ getFieldName()

std::string glo::BaseRecordAttribute::getFieldName ( ) const

Es wird die Tabellenfeldbezeichnung geliefert.

Rückgabe
Die Tabellenfeldbezeichnung.

◆ getFieldPos()

int glo::BaseRecordAttribute::getFieldPos ( )

Liefert die SpaltenPosition in der Tabelle (Start bei 0).

Rückgabe
Die TabellenSpaltenPosition.

◆ getFilePosition()

std::streampos glo::BaseRecordAttribute::getFilePosition ( ) const

Liefert die Position in der Tabellendatei.

Rückgabe
Die Dateiposition.

◆ getFormattedFieldContents()

virtual int glo::BaseRecordAttribute::getFormattedFieldContents ( std::string & rsRetVal,
DATA_REFERENCE_INFO & rRetValInfo,
ObjID ObjID )
virtual

Liefert hier sein formattiertes Tabellenfeld wie auch std::string getValueAsDataString (...).
Wenn das Datensatz-Attribut eine Referenz auf die Daten haben kann, liefert diese Methode sein formattiertes Tabellenfeld und eine Information ob eine externe Datei für die Daten des Datensatz-Attributs neu geschrieben, behalten werden soll oder gelöscht werden muss; muss dann in entsprechenden Unterklassen überschrieben werden.

Parameter
[in,out]rsRetValDas Tabellenfeld wie es geschrieben werden soll.
[in,out]rRetValInfoDie Information wie mit einer externen Datei umgegangen werden soll.
[in]ObjIDFalls ein Dateiname kreiert werden muss, wird die Dateibezeichnung aus dieser Objekt-ID gebildet. I.d.R. ist dies die Objekt-ID des Objektes, dessen Attributwert erfragt wird.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Erneute Implementation in glo::BlobRecordAttribute, glo::LotRecordAttribute und glo::StringRecordAttribute.

◆ getInfoType()

EnDataTypeGroup glo::BaseRecordAttribute::getInfoType ( )

Liefert den Gruppentyp des unterstützten Attributtyps.

Rückgabe
Der Gruppentyp.

◆ getReferenceCount()

unsigned int glo::BaseRecordAttribute::getReferenceCount ( ) const

Liefert die Anzahl von referenzierenden Instanzen.

Rückgabe
Die Anzahl von referenzierenden Instanzen.

◆ getTableFieldName()

std::string glo::BaseRecordAttribute::getTableFieldName ( ) const

Liefert die Tabellen- und Tabellenfeldbezeichnung getrennt durch einen Punkt. Z.B. "TableName.FieldName".

Rückgabe
Die Tabellen- und Feldbezeichnung.

◆ getTableName()

std::string glo::BaseRecordAttribute::getTableName ( ) const

Es wird die Tabellenbezeichnung geliefert.

Rückgabe
Die Tabellenbezeichnung.

◆ getType()

ClassInfoAttribute::Type glo::BaseRecordAttribute::getType ( ) const

Liefert den Typ des eigenen Klasseninformations-Attributs.

Rückgabe
Der Typ des eigenen Klasseninformations-Attributs.

◆ getTypeAsCppString()

std::string glo::BaseRecordAttribute::getTypeAsCppString ( ) const

Liefert den von GlobalObjects unterstützten Arttributtyp, wie er in der Header- und Source-Datei steht.

Rückgabe
Der unterstützten Arttributtyp.

◆ getTypeAsString()

std::string glo::BaseRecordAttribute::getTypeAsString ( ) const

Liefert den von GlobalObjects unterstützten Arttributtyp, wie er im Schema steht.

Rückgabe
Der unterstützten Arttributtyp.

◆ getTypeInfo()

std::string glo::BaseRecordAttribute::getTypeInfo ( ) const

Liefert eine Attributtypinformation wie z.B. eine Zahl für eine Stringlänge oder ein Ausdruck wie dependent etc. Ist immer abhängig vom Attributtyp.

Rückgabe
Die Attributtypinformation.

◆ getValueAsDataString()

virtual std::string glo::BaseRecordAttribute::getValueAsDataString ( ) const
pure virtual

◆ getValueAsDisplayString()

◆ getValueAsStreamString()

◆ getValueAsString()

◆ getValueAsVoidPointer()

◆ initNew()

◆ operator!=()

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

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=()

BaseRecordAttribute & glo::BaseRecordAttribute::operator= ( const BaseRecordAttribute & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ operator==()

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

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ remember()

unsigned int glo::BaseRecordAttribute::remember ( )

Inkrementiert den m_uiReferenceCount. Sollte immer bei 'Auslieferung' eines Objektes dieser Klasse aufgerufen werden. Die belieferte Instanz muss dann das Objekt mit forget() 'vergessen'.

Rückgabe
Der Rückgabewert ist die Anzahl der Referenzen auf das Objekt dieser Klasse.

◆ setDataReference()

virtual void glo::BaseRecordAttribute::setDataReference ( const std::string & rsDataReference)
virtual

Tut hier nichts.
Für Attribute, deren Inhalt nicht unbedingt in einer Tabellenspalte stehen sollen (weil diese ggf. manchmal oder auch grundsätzlich zu groß sind, und desshalb eine Referenz auf eine Datei als Feldinhalt genutzt wird), muß diese Methode überschrieben werden.
Diese Methode soll die Dateibezeichnung, in der die Daten abgelegt werden, setzen.

Parameter
[in]rsDataReferenceDie Dateibezeichnung.

Erneute Implementation in glo::BlobRecordAttribute und glo::StringRecordAttribute.

◆ setFilePosition()

void glo::BaseRecordAttribute::setFilePosition ( const std::streampos & rFilePos)

Setzt die Position in der Tabellendatei.

Parameter
[in]rFilePosDie Dateiposition.

◆ setValueFromObjectAttributeID()

virtual int glo::BaseRecordAttribute::setValueFromObjectAttributeID ( Persistent & rObject,
const AttributeID & rAttributeID )
virtual

Es wird der Wert des RecordAttributs aus dem Klassenattribur des übergebenen Persistent anhand der übergebenen AttributeID ermittelt und i.d.R. der Wert über setValueFromVoid (...) gesetzt.
In Unterklassen sollte diese Methode überschrieben werden, wenn es sich um eine ggf. noch zu holendes Attribut handelt. Siehe z.B. EmbeddedRecordAttribute::setValueFromObjectAttributeID (...).

Parameter
[in]rObjectDas persistente Objekt dessen Attribut herangezogen wird.
[in]rAttributeIDDie ID des Attributs des übergebenen Objekts.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler kann in Unterklassen eine Exception geworfenwerden.

Erneute Implementation in glo::EmbeddedRecordAttribute, glo::ObjIDRecordAttribute, glo::OdRefListRecordAttribute, glo::OdRefRecordAttribute, glo::OdRefSetRecordAttribute, glo::PoRefListRecordAttribute, glo::PoRefRecordAttribute, glo::PoRefSetRecordAttribute und glo::StdShrdPoRefRecordAttribute.

◆ setValueFromVoid()

◆ takeValue()

virtual int glo::BaseRecordAttribute::takeValue ( const BaseRecordAttribute & rT)
virtual

◆ updateDataReference()

virtual int glo::BaseRecordAttribute::updateDataReference ( const std::string & rsDataPath,
DATA_REFERENCE_INFO MethodInfo )
virtual

Tut hier nichts.
Für Attribute, deren Inhalt nicht unbedingt in einer Tabellenspalte stehen sollen (weil diese ggf. manchmal oder auch grundsätzlich zu groß sind, und desshalb eine Referenz auf eine Datei als Feldinhalt genutzt wird), muß diese Methode überschrieben werden.
Diese Methode soll die Datei mit den Daten ggf. löschen oder schreiben.

Parameter
[in]rsDataPathDer vollständigen Verzeichnisnamen, in dem die Daten zu finden sind. Die Daten liegen immer in einem Unterverzeichnis von dem Verzeichnis, in dem die Schemadatei liegt (z.B. "C:/Pfad/Data/").
[in]MethodInfoDie Information wie mit einer externen Datei umgegangen werden soll.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Erneute Implementation in glo::BlobRecordAttribute, glo::LotRecordAttribute und glo::StringRecordAttribute.

Freundbeziehungen und Funktionsdokumentation

◆ ptl::TDVList< BaseRecordAttribute >

friend class ptl::TDVList< BaseRecordAttribute >
friend

Dokumentation der Datenelemente

◆ m_FilePosition

std::streampos glo::BaseRecordAttribute::m_FilePosition
private

Jedes persistente Attribut hat, wenn es gespeichert wurde, eine eindeutige Dateiposition

◆ m_LocalCriticalSection

eut::CriticalSection glo::BaseRecordAttribute::m_LocalCriticalSection
private

Damit mehrere Threads auf remember() und forget() zugreifen können, wird mit diesem Objekt der Zugriff synchronisiert.

◆ m_pClassInfoAttribut

ClassInfoAttribute* glo::BaseRecordAttribute::m_pClassInfoAttribut
private

Jedes persistente Attribut braucht spezifische Schema-Informationen. Diese sind im Schema in den jeweiligen Klasseninformationen (ClassInfo) als Klasseninformations-Attribut (ClassInfoAttribute) vorhanden.

◆ m_uiReferenceCount

unsigned int glo::BaseRecordAttribute::m_uiReferenceCount
private

Der Referenzzähler.

◆ sm_uiInstanceCount

unsigned int glo::BaseRecordAttribute::sm_uiInstanceCount
staticprivate

Zu Debug-Zwecken einen statischen Referenzzähler, um zu prüfen, ob alle Instanzen gelöscht sind.


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