GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::TableWriterInterface Klassenreferenz

Ein Objekt dieser Klasse greift auf Tabellen zu und schreibt Datensätze (Record) und Binärdateien (eut::Blob) in Texttabellen bzw. ins Dateisystem. Mehr ...

#include <GloTableWriterInterface.h>

Klassendiagramm für glo::TableWriterInterface:

Öffentliche Methoden

 TableWriterInterface (const SchemaInterface &rScheme, RealIndexPool *pRealIndexPool)
 
virtual ~TableWriterInterface ()
 
int deleteObjectData (Record *pRecord, std::vector< TransactionIndexPool * > *pTransactionIndexPoolVector=0)
 
int getNewObjID (ObjID &rObjID)
 
virtual int openTable (const std::string &sTableName)
 
int storeObjectData (Record *pRecord, std::vector< TransactionIndexPool * > *pTransactionIndexPoolVector=0)
 
- Öffentliche Methoden geerbt von glo::TableInterface
 TableInterface (const SchemaInterface &rScheme, RealIndexPool *pRealIndexPool)
 
virtual ~TableInterface ()
 
virtual int closeTable (const std::string &sTable)
 
std::string getDataPath () const
 
int getObjIDRecordAttribute (ObjIDRecordAttribute *&prRetVal, const std::string &sTable, const ObjID &rObjID)
 
SchemaInterfacegetSchemaInterface ()
 
std::string getSchemaPath () const
 
int objIDInBase (bool &rPresent, const ObjID &rObjID) const
 

Geschützte Methoden

 TableWriterInterface ()
 
int appendOnTable (std::streampos &rspFileIndexPosition, const std::string &rsTableName, unsigned long ulClassID, const std::string &rsDataRow)
 
int getFirstDeletedRecordItem (std::streampos &rspFileIndexPosition, unsigned long ulClassID)
 
int readLastMagicNumber (eut::UnsignedMagicNumber &rRetVal, const std::string &rsFileName)
 
int readLastObjCounter (unsigned long &rulObjCounter)
 
int readLastUL (unsigned long &rulRetVal, const std::string &rsFileName)
 
void removeForbiddenCharacters (std::string &rsField) const
 
int updateExternFiles (BaseRecordAttribute *pRecordAttribute, DATA_REFERENCE_INFO MethodInfo)
 
int updateInsert (Record *pInputUpdateRecord, EnInUd eInUd)
 
int updateObjectDataAttribute (BaseRecordAttribute *pRecordAttribute, ObjID ObjID)
 
int writeInTable (const std::string &rsTableName, const std::string &rsContents, const std::streampos spFileIndexPosition)
 
int writeLastMagicNumber (const eut::UnsignedMagicNumber &rVal, const std::string &rsFileName, bool bNew)
 
int writeLastObjCounter (const unsigned long &rulObjCounter, bool bNew)
 
int writeLastUL (const unsigned long &rulVal, const std::string &rsFileName, bool bNew)
 
- Geschützte Methoden geerbt von glo::TableInterface
 TableInterface ()
 
int openFile (std::fstream *&prFStream, const std::string &sFullFileName, std::ios_base::openmode OpenMode)
 

Private Typen

enum  EnInUd { eINSERT , eUPDATE }
 

Private Methoden

 TableWriterInterface (const TableWriterInterface &)
 
TableInterfaceoperator= (const TableInterface &)
 

Private Attribute

std::vector< TransactionIndexPool * > * m_pTransactionIndexPoolVector
 

Weitere Geerbte Elemente

- Geschützte Attribute geerbt von glo::TableInterface
std::unordered_map< std::string, TableInterfaceTable * > m_OpenTableMap
 
RealIndexPoolm_pRealIndexPool
 
SchemaInterfacem_pSchema
 

Ausführliche Beschreibung

Ein Objekt dieser Klasse greift auf Tabellen zu und schreibt Datensätze (Record) und Binärdateien (eut::Blob) in Texttabellen bzw. ins Dateisystem.

Autor
Helmut Jakoby

Dokumentation der Aufzählungstypen

◆ EnInUd

Eine Enumeration um mitzuteilen, ob ein Datensatz in eine Tabellen-Datei neu eingefügt oder überschrieben werden soll.

Aufzählungswerte
eINSERT 

Der Datensatz soll in die Tabellen-Datei neu eingefügt werden

eUPDATE 

Der Datensatz soll in der Tabellen-Datei überschrieben werden

Beschreibung der Konstruktoren und Destruktoren

◆ TableWriterInterface() [1/3]

glo::TableWriterInterface::TableWriterInterface ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ TableWriterInterface() [2/3]

glo::TableWriterInterface::TableWriterInterface ( const SchemaInterface & rScheme,
RealIndexPool * pRealIndexPool )

Konstruktor mit Parameterübergabe.

Parameter
[in]rSchemeOhne Schema gehts nicht, wird kopiert.
[in]pRealIndexPoolIst hier obligatorisch. Beschleunigt den Zugriff auf Datensätze und es werden die Indexe gepflegt.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ ~TableWriterInterface()

virtual glo::TableWriterInterface::~TableWriterInterface ( )
virtual

Destruktor, es werden alle geöffneten Tabellen-Dateien geschlossen und der Speicher aufgeräumt.

◆ TableWriterInterface() [3/3]

glo::TableWriterInterface::TableWriterInterface ( const TableWriterInterface & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ appendOnTable()

int glo::TableWriterInterface::appendOnTable ( std::streampos & rspFileIndexPosition,
const std::string & rsTableName,
unsigned long ulClassID,
const std::string & rsDataRow )
protected

Schreibt einen neuen Datensatz entweder ans Ende der Tabelle oder, wenn ein gelöschter Datensatz vorhanden ist, an dessen Stelle.

Parameter
[in,out]rspFileIndexPositionDie Position in der Tabellen-Datei, wo der Datensatz geschrieben wurde (ist die Position der Objekt-ID, welche für den Index benötigt wird).
[in]rsTableNameDie vollständige Bezeichnung der Tabellen-Datei.
[in]ulClassIDDie Klassen-ID, wird benötigt um die Position eines evtl. gelöschten Datensatzes aus dem TableInterface::m_pRealIndexPool zu ermitteln.
[in]rsDataRowDie in die Tabellen-Datei zu schreibende Zeile mit den Datensatz-Attributen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ deleteObjectData()

int glo::TableWriterInterface::deleteObjectData ( Record * pRecord,
std::vector< TransactionIndexPool * > * pTransactionIndexPoolVector = 0 )

Kennzeichnet den übergebenen Datensatz in den Tabellen als gelöscht (ObjID == 0). Externe Dateien werden gelöscht wenn vorhanden.
Indexe werden im RealIndexPool angepasst

Parameter
[in]pRecordDer zu löschende Datensatz.
[in]pTransactionIndexPoolVectorWenn übergeben, dann werden nicht nur im RealIndexPool, sondern auch in diesem TransactionIndexPools die Indexe aktualisiert
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getFirstDeletedRecordItem()

int glo::TableWriterInterface::getFirstDeletedRecordItem ( std::streampos & rspFileIndexPosition,
unsigned long ulClassID )
protected

Liefert die Position eines Datensatzes in einer Tabellen-Datei der Klasse der übergebenen Klassen-ID, welcher gelöscht wurde aus dem TableInterface::m_pRealIndexPool.

Parameter
[in,out]rspFileIndexPositionDie Position in der Tabellen-Datei, wo ein Datensatz gelöscht wurde.
[in]ulClassIDDie Klassen-ID, wird benötigt um die Position eines evtl. gelöschten Datensatzes aus dem TableInterface::m_pRealIndexPool zu ermitteln.

◆ getNewObjID()

int glo::TableWriterInterface::getNewObjID ( ObjID & rObjID)

Liefert in übergebener ObjID eine neue eindeutige Objekt-ID, ohne Klassen-ID.

Parameter
[in,out]rObjIDDie Objekt-ID wird gesetzt.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ openTable()

virtual int glo::TableWriterInterface::openTable ( const std::string & sTableName)
virtual

Öffnet eine Tabellen-Datei zum schreiben und fügt diese bei Erfolg in die Liste der geöffneten Tabellen-Dateien ein.

Parameter
[in]sTableNameDie Tabellen-Dateibezeichnung.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Implementiert glo::TableInterface.

◆ operator=()

TableInterface & glo::TableWriterInterface::operator= ( const TableInterface & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ readLastMagicNumber()

int glo::TableWriterInterface::readLastMagicNumber ( eut::UnsignedMagicNumber & rRetVal,
const std::string & rsFileName )
protected

Liest eine eut::UnsignedMagicNumber aus einer Datei mit der übergebenen Bezeichnung (die Datei mit der übergebenen Bezeichnung wird im Verzeichnis der Daten erwartet).

Parameter
[in,out]rRetValDie eut::UnsignedMagicNumber wird gesetzt.
[in,out]rsFileNameDie Datei aus der rRetVal gelesen wird.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ readLastObjCounter()

int glo::TableWriterInterface::readLastObjCounter ( unsigned long & rulObjCounter)
protected

Liest einen Objekt-Zähler (für ObjID::m_ulObjCounter) aus der Datei "LastObjID" (die Datei "LastObjID" liegt im Verzeichnis der Daten).
Wird von TableWriterInterface::getNewObjID(ObjID&) genutzt.

Parameter
[in,out]rulObjCounterDer Objekt-Zähler.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ readLastUL()

int glo::TableWriterInterface::readLastUL ( unsigned long & rulRetVal,
const std::string & rsFileName )
protected

Liest eine unsigned long aus einer Datei mit übergebener Bezeichnung (die Datei mit der übergebenen Bezeichnung wird im Verzeichnis der Daten erwartet).

Parameter
[in,out]rulRetValDer Wert wird gesetzt.
[in,out]rsFileNameDie Datei aus der rulRetVal gelesen wird.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ removeForbiddenCharacters()

void glo::TableWriterInterface::removeForbiddenCharacters ( std::string & rsField) const
protected

Entfernt "verbotene" Zeichen aus dem übergebenen String.
Zwei Zeichen werden grundsätzlich in Ersatzzeichen ausgetauscht.
Der TableInterface::TableColumnDelimiter ist als Trenner der einzelnen Tabellenfelder reserviert und wird in ein '^' geändert.
Ein '\n' würde durch den Zeilenumbruch die Texttabelle zerstören und wird in ein '_' gewandelt.

Parameter
[in]rsFieldDer String, welcher überprüft wird.

◆ storeObjectData()

int glo::TableWriterInterface::storeObjectData ( Record * pRecord,
std::vector< TransactionIndexPool * > * pTransactionIndexPoolVector = 0 )

Fügt bzw. hängt den Datensatz in/an die Tabellen ein/an. Externe Dateien werden geschrieben wenn notwendig.

Parameter
[in]pRecordDer zu schreibende Datensatz.
[in]pTransactionIndexPoolVectorWenn übergeben, werden nicht nur im RealIndexPool, sondern auch in diesem TransactionIndexPools die Indexe aktualisiert
Rückgabe
Rückgabe == 1 In Datenbank neu eingefügt
Rückgabe == 0 In Datenbank geändert
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ updateExternFiles()

int glo::TableWriterInterface::updateExternFiles ( BaseRecordAttribute * pRecordAttribute,
DATA_REFERENCE_INFO MethodInfo )
protected

Löscht bzw. schreibt eine externe Datei evtl. neu in Abhängigkeit von der übergebenen DATA_REFERENCE_INFO.

Parameter
[in]pRecordAttributeZeiger auf das Datensatz-Attribut, dessen Daten evtl. in eine externe Datei geschrieben werden sollen bzw. dessen externe Datei gelöscht werden soll.
[in]MethodInfoDie Information wie mit der externen Datei umgegangen werden soll.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ updateInsert()

int glo::TableWriterInterface::updateInsert ( Record * pInputUpdateRecord,
EnInUd eInUd )
protected

Fügt bzw. hängt den Datensatz in/an die Tabellen ein/an. Externe Dateien werden geschrieben wenn notwendig.

Parameter
[in]pInputUpdateRecordDer zu schreibende Datensatz.
[in]eInUdWenn eINSERT wird ein Datensatz neu geschrieben, wenn eUPDATE wird der schon existierende Datensatz überschrieben.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ updateObjectDataAttribute()

int glo::TableWriterInterface::updateObjectDataAttribute ( BaseRecordAttribute * pRecordAttribute,
ObjID ObjID )
protected

Schreibt ein einzelnes Datensatz-Attribut in eine Tabellen-Datei.

Parameter
[in]pRecordAttributeZeiger auf das zu schreibende Datensatz-Attribut.
[in]ObjIDFalls ein Dateiname kreiert werden muss, wird dieser aus dieser Objekt-ID gebieldet.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ writeInTable()

int glo::TableWriterInterface::writeInTable ( const std::string & rsTableName,
const std::string & rsContents,
const std::streampos spFileIndexPosition )
protected

Schreibt das übergebene Tabellenfeld (rsContents) in die Tabelle mit der übergebenen Bezeichnung (rsTableName) an die übergebene Position (spFileIndexPosition).
Diese Methode wird einerseits genutzt um einen Datensatz zu schreiben (siehe Aufruf dieser Methode in TableWriterInterface::updateInsert (...) ) oder ein BaseRecordAttribute in einer Tabellenzeile zu schreiben (siehe Aufruf in der Methode TableWriterInterface::updateObjectDataAttribute (...) ).

Parameter
[in]rsTableNameDie vollständige Bezeichnung der Tabellen-Datei.
[in]rsContentsDas formatierte Tabellenfeld (es wird vorausgesetzt, dass der Inhalt die richtige Länge hat und alle verbotenen Zeichen entfernt bzw. ausgetauscht sind).
[in]spFileIndexPositionDie Position des Tabellenfelds in der Tabellen-Datei.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ writeLastMagicNumber()

int glo::TableWriterInterface::writeLastMagicNumber ( const eut::UnsignedMagicNumber & rVal,
const std::string & rsFileName,
bool bNew )
protected

Schreibt eine eut::UnsignedMagicNumber in eine Datei mit der übergebenen Bezeichnung (die Datei mit der übergebenen Bezeichnung wird im Verzeichnis der Daten erwartet).

Parameter
[in]rValDie eut::UnsignedMagicNumber wird geschrieben.
[in,out]rsFileNameDie Datei in die rVal geschrieben wird.
[in]bNewWenn true, wird die Datei neu angelegt, ansonsten rVal in der Datei überschrieben.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ writeLastObjCounter()

int glo::TableWriterInterface::writeLastObjCounter ( const unsigned long & rulObjCounter,
bool bNew )
protected

Schreibt eine Objekt-Zähler (für ObjID::m_ulObjCounter) in die Datei "LastObjID" (die Datei "LastObjID" liegt im Verzeichnis der Daten).
Wird von TableWriterInterface::getNewObjID(ObjID&) genutzt.

Parameter
[in]rulObjCounterDer Objekt-Zähler.
[in]bNewWenn true, wird die Datei neu angelegt, ansonsten wird der Objekt-Zähler in der Datei "LastObjID" überschrieben.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ writeLastUL()

int glo::TableWriterInterface::writeLastUL ( const unsigned long & rulVal,
const std::string & rsFileName,
bool bNew )
protected

Schreibt eine unsigned long in eine Datei mit der übergebenen Bezeichnung (die Datei mit der übergebenen Bezeichnung wird im Verzeichnis der Daten erwartet).

Parameter
[in]rulValDer Wert wird geschrieben.
[in,out]rsFileNameDie Datei in die rulVal geschrieben wird.
[in]bNewWenn true, wird die Datei neu angelegt, ansonsten rulVal in der Datei überschrieben.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Dokumentation der Datenelemente

◆ m_pTransactionIndexPoolVector

std::vector<TransactionIndexPool *>* glo::TableWriterInterface::m_pTransactionIndexPoolVector
private

Eine Liste von TransactionIndexPools, welche bei einem Neueinfügen wie auch bei einem Löschen eines persistenten Objektes aktualisiert werden müssen.

Wird mittels TableWriterInterface::storeObjectData (...) und TableWriterInterface::deleteObjectData (...) übergeben und ist nur für diesen Zweck rein temporär.


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