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

Ein Objekt dieser Klasse bzw. der Unterklasse greift auf Tabellen zu und liest bzw. schreibt Datensätze (Record) und Binärdateien (eut::Blob). Mehr ...

#include <GloTableInterface.h>

Klassendiagramm für glo::TableInterface:

Klassen

class  TableInterfaceTable
 Eine Datei (std::fstream) und deren Bezeichnung. Mehr ...
 

Öffentliche Methoden

 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
 
virtual int openTable (const std::string &sTableName)=0
 

Geschützte Methoden

 TableInterface ()
 
int openFile (std::fstream *&prFStream, const std::string &sFullFileName, std::ios_base::openmode OpenMode)
 

Geschützte Attribute

std::unordered_map< std::string, TableInterfaceTable * > m_OpenTableMap
 
RealIndexPoolm_pRealIndexPool
 
SchemaInterfacem_pSchema
 

Private Methoden

 TableInterface (const TableInterface &)
 
void closeAllTables ()
 
TableInterface::TableInterfaceTablegetTable (const std::string &m_sTableName)
 
TableInterfaceoperator= (const TableInterface &)
 

Ausführliche Beschreibung

Ein Objekt dieser Klasse bzw. der Unterklasse greift auf Tabellen zu und liest bzw. schreibt Datensätze (Record) und Binärdateien (eut::Blob).

Es wird ein IndexPool übergeben der beim instanziieren die Indexe (z.B. die ObjIDs) aller Tabellen aufgebaut hat. Es werden Zugriffe auf die Tabellen wenn möglich über diesen IndexPool realisiert.

Wenn eine Tabelle geschlossen bzw. gelesen wird, wird der Index nicht zerstört bzw. neu eingelesen, welches voraussetzt, dass nur ein abgeleiteter Writer mit selbigen RealIndexPool in die Tabellen schreibt darf und die Indexe pflegt.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ TableInterface() [1/3]

glo::TableInterface::TableInterface ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ TableInterface() [2/3]

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

Konstruktor mit Parameterübergabe.

Parameter
[in]rSchemeOhne Schema gehts nicht, wird kopiert.
[in]pRealIndexPoolBeschleunigt den Zugriff auf Datensätze.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ ~TableInterface()

virtual glo::TableInterface::~TableInterface ( )
virtual

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

◆ TableInterface() [3/3]

glo::TableInterface::TableInterface ( const TableInterface & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ closeAllTables()

void glo::TableInterface::closeAllTables ( )
private

Schliesst und entfernt alle Tabellen-Dateien aus der Liste der geöffneten Tabellen-Dateien.

◆ closeTable()

virtual int glo::TableInterface::closeTable ( const std::string & sTable)
virtual

Schliesst eine Tabellen-Datei.

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

◆ getDataPath()

std::string glo::TableInterface::getDataPath ( ) const

Liefert den 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.

Rückgabe
Der vollständigen Verzeichnisname wie z.B. unter dem Betriebssystem Windows "C:/Pfad/Data/".

◆ getObjIDRecordAttribute()

int glo::TableInterface::getObjIDRecordAttribute ( ObjIDRecordAttribute *& prRetVal,
const std::string & sTable,
const ObjID & rObjID )

Liefert das Objekt-ID-Attribut mit übergebener Objekt-ID aus der Tabellen-Datei mit der übergebenen Bezeichnung.

Parameter
[in,out]prRetValDas gefundene Objekt-ID-Attribut.
[in]sTableDie Tabellen-Dateibezeichnung in der das Objekt-ID-Attribut gesucht wird.
[in]rObjIDDie Objekt-ID des gesuchten Objekt-ID-Attributs.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getSchemaInterface()

SchemaInterface & glo::TableInterface::getSchemaInterface ( )

Liefert einen Zeiger auf m_pSchema.

Rückgabe
s.o.
Achtung
Das SchemaInterface lebt nur so lange wie das liefernde Objekt dieser Klasse.

◆ getSchemaPath()

std::string glo::TableInterface::getSchemaPath ( ) const

Liefert den Datei-Pfad wo die Schemadatei zu finden ist.

Rückgabe
Vollständiger Pfadname (z.B. unter dem Betriebssystem Windows "C:/Pfad/").

◆ getTable()

TableInterface::TableInterfaceTable * glo::TableInterface::getTable ( const std::string & m_sTableName)
private

Liefert eine Tabellen-Datei in einem Objekt vom Typ TableInterfaceTable mit der übergebenen Bezeichnung aus der Liste der geöffneten Tabellen-Dateien.

Parameter
[in]m_sTableNameDie Dateibezeichnung.
Rückgabe
Die Tabellen-Datei, wenn mit übergebener Bezeichnung vorhanden; ansonsten 0.
Achtung
Das gelieferte Objekt lebt nur so lange, wie die liefernde Instanz.

◆ objIDInBase()

int glo::TableInterface::objIDInBase ( bool & rPresent,
const ObjID & rObjID ) const

Prüft ob ein Objekt mit übergebener Objekt-ID in der Datenbank gespeichert ist.

Parameter
[in,out]rPresentWenn true, gibt es ein Objekt mit übergebener Objekt-ID in der Datenbank.
[in]rObjIDDie zu prüfende Objekt-ID.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ openFile()

int glo::TableInterface::openFile ( std::fstream *& prFStream,
const std::string & sFullFileName,
std::ios_base::openmode OpenMode )
protected

Öffnet und liefert die geöffnete Datei. Es wird zuerst in der Liste der geöffneten Tabellen-Dateien nachgeschaut, und wenn vorhanden diese geliefert.
Ansonsten wird versucht, eine Datei mit übergebener Bezeichnung zu öffnen und bei Erfolg, diese in der Liste der geöffneten Tabellen-Dateien einzufügen und zu liefern.
Wird von beiden Unterklassen mit unterschiedlichen 'OpenMode' genutzt.

Parameter
[in,out]prFStreamDie geöffnete Datei (wenn gelungen).
[in]sFullFileNameDie Dateibezeichnung.
[in]OpenModeDer Modus, in dem die Datei geöffnet wird.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Zu beachten
Wenn ein prFStream geliefert wurde, ist dieser in m_OpenTableMap und wird mit closeTable (...) geschlossen und aus dem Speicher entfernt.

◆ openTable()

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

Öffnet in Unterklassen eine Tabellen-Datei 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 in glo::TableReaderInterface und glo::TableWriterInterface.

◆ operator=()

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

Der Zuweisungsoperator steht nicht zur Verfügung.

Dokumentation der Datenelemente

◆ m_OpenTableMap

std::unordered_map< std::string, TableInterfaceTable * > glo::TableInterface::m_OpenTableMap
protected

Die Menge der geöffneten Tabellen-Dateien.

◆ m_pRealIndexPool

RealIndexPool* glo::TableInterface::m_pRealIndexPool
protected

Wenn verfügbar, wird der RealIndexPool genutzt um einen Datensatz schneller zu finden.

◆ m_pSchema

SchemaInterface* glo::TableInterface::m_pSchema
protected

Das zugrundeliegende Schema.


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