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

Diese Klasse ist die Schnittstelle zu einem GlobalObjects-Schema. Sie beinhaltet alle Klasseninformationen um Objekte von persistenten Klassen in einer Datenbank speichern zu können und um aus Tabellen Objekte und aus Objekten Tabellen bauen zu können. Mehr ...

#include <GloSchemaInterface.h>

Klassen

struct  TempGloClassInfoIndex
 Struktur um Indexe bis zum Ende des Einlesens aus der Schemadatei zu sammeln. Mehr ...
 

Öffentliche Methoden

 SchemaInterface (const SchemaInterface &rT)
 
 SchemaInterface (const std::string &rsSchemaFullName, bool bInDeveloperMode, bool bNew)
 
 SchemaInterface (const std::string &rsSchemaFullName, bool bInDeveloperMode=false)
 
virtual ~SchemaInterface ()
 
std::string _DEBUG_ToString ()
 
void changeAllClassReferences (const std::string &rsOldReferenceName, const std::string &rsNewReferenceName, std::map< unsigned long, ClassInfo *, std::less< unsigned long > > *pChangedClassesMap)
 
bool classIdExisting (unsigned long ulClassID) const
 
bool classInfoFileNameExisting (const std::string &rsClassFileName) const
 
bool classInfoNameExisting (const std::string &rsClassName) const
 
int destroyClassInfo (unsigned long ulClassID)
 
int getAllAttributes (std::map< std::string, ClassInfoAttribute *, std::less< std::string > > &rRetValMap) const
 
int getAllAttributes (std::set< ClassInfoAttribute * > &rRetValSet, unsigned long ulClassID, bool bWithSuperClassAttributes=true) const
 
int getAllClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rClassInfoMap, bool bCopy=true) const
 
int getAllSubClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSubClassInfoMap, unsigned long ulClassID, bool bCopy=true) const
 
int getAllSuperClassIDs (std::set< unsigned long > &rSuperClassIdSet, unsigned long ulClassID) const
 
int getAllSuperClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSuperClassInfoMap, unsigned long ulClassID, bool bCopy=true) const
 
int getAllTableNames (std::map< std::string, std::string, std::less< std::string > > &rTableNameMap) const
 
int getAllTableNames (std::vector< std::string > &rTableNameList, unsigned long ulClassID) const
 
ClassInfogetClassInfo (EnSeekMode eMode)
 
ClassInfoAttributegetClassInfoAttributeByAttributeID (int &riErr, const AttributeID &rAttributeID) const
 
ClassInfoAttributegetClassInfoAttributeByClassAndAttributeName (int &riErr, const std::string &rsClassName, const std::string &rsAttributeName) const
 
ClassInfoAttributegetClassInfoAttributeByTableAndFieldName (int &riErr, const std::string &rsTableName, const std::string &rsFieldName) const
 
ClassInfoAttributegetClassInfoAttributeByTableAndFieldName (int &riErr, unsigned long ulClassID, const std::string &rsTableName, const std::string &rsFieldName) const
 
ClassInfogetClassInfoByID (unsigned long ulClassID) const
 
ClassInfogetClassInfoByMainTable (const std::string &rsMainTableName) const
 
ClassInfogetClassInfoByName (const std::string &rsClassName) const
 
ClassInfoIndexgetClassInfoIndexByClassAndIndexName (int &riErr, const std::string &rsClassName, const std::string &rsIndexName) const
 
int getClassTableWithPath (std::string &rstrRetVal, unsigned long ulClassID) const
 
std::string getDataPath () const
 
std::string getDataSubDir () const
 
std::string getDescription () const
 
unsigned long getNextClassID ()
 
std::size_t getNumberOfClassInfos () const
 
std::string getSchemaFullName () const
 
unsigned long getSchemaID () const
 
std::string getSchemaName () const
 
std::string getSchemaPath () const
 
int getSubClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSubClassInfoMap, unsigned long ulClassID, bool bCopy=true) const
 
int getSuperClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSuperClassInfoMap, unsigned long ulClassID, bool bCopy=true) const
 
unsigned long getVersion () const
 
int insertClassInfo (ClassInfo *pNewClassInfo)
 
bool isSuperClassFrom (unsigned long ulClassIDSuperClass, unsigned long ulClassIDSubClass) const
 
SchemaInterfaceoperator= (const SchemaInterface &rT)
 
void setDataSubDir (const std::string &rsDataSubDir)
 
void setDescription (const std::string &rsDescription)
 
void setSchemaFullName (const std::string &rsSchemaFullName)
 
void setSchemaID (unsigned long ulID)
 
void setSubClassInfosInAllClassInfo ()
 
void setVersion (unsigned long ulVersion)
 
bool tableNameExisting (const std::string &rsTableName) const
 
int writeSchema ()
 

Geschützte Methoden

 SchemaInterface ()
 
 SchemaInterface (const std::map< unsigned long, ClassInfo * > *pClassInfoMap)
 
 SchemaInterface (const std::map< unsigned long, std::shared_ptr< glo::ClassInfo > > rClassInfoMap)
 
bool containedInClassInfoAttributeList (const std::set< ClassInfoAttribute * > &rCheckSet, const ClassInfoAttribute &rCheckAttribut) const
 

Private Methoden

int changeClassNameDotAttributNameInAttributeID (std::vector< TempGloClassInfoIndex > &rTempGloClassInfoIndexVector)
 
void copyClassInfoListFrom (const SchemaInterface &rT)
 
void deleteAllClassInfos ()
 
int getSubClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSubClassInfoMap, unsigned long ulClassID, bool bCopy, bool bDeep) const
 
int getSuperClassInfos (std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rSuperClassInfoMap, unsigned long ulClassID, bool bCopy, bool bDeep) const
 
void init ()
 
void initNew ()
 

Private Attribute

bool m_bInDeveloperMode
 
std::map< unsigned long, ClassInfo *, std::less< unsigned long > > m_ClassInfoMap
 
std::map< unsignedlong, ClassInfo * >::iterator m_ClassInfoMapIterator
 
std::vector< unsigned long > m_CurrentlyAssignedClassIDVector
 
std::string m_sDataSubDir
 
std::string m_sDescription
 
std::string m_sSchemaFullName
 
unsigned long m_ulID
 
unsigned long m_ulVersion
 

Freundbeziehungen

class BaseMaker
 
class Record
 

Ausführliche Beschreibung

Diese Klasse ist die Schnittstelle zu einem GlobalObjects-Schema. Sie beinhaltet alle Klasseninformationen um Objekte von persistenten Klassen in einer Datenbank speichern zu können und um aus Tabellen Objekte und aus Objekten Tabellen bauen zu können.

Diese Klasse kann Schemadateien lesen und speichern. Klasseninformationen können hinzugefügt, geändert und entfernt werden.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ SchemaInterface() [1/6]

glo::SchemaInterface::SchemaInterface ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ SchemaInterface() [2/6]

glo::SchemaInterface::SchemaInterface ( const std::map< unsigned long, ClassInfo * > * pClassInfoMap)
protected

Konstruktor mit Parameterübergabe (wird vom Record genutzt).

Parameter
[in]pClassInfoMapDie Klasseninformationen.
Achtung
pClassInfoMap wird im Konstruktor kopiert. Die aufrufende Instanz behält die Verantwortung für pClassInfoMap.

◆ SchemaInterface() [3/6]

glo::SchemaInterface::SchemaInterface ( const std::map< unsigned long, std::shared_ptr< glo::ClassInfo > > rClassInfoMap)
protected

Konstruktor mit Parameterübergabe (wird vom Record genutzt).

Parameter
[in]rClassInfoMapDie Klasseninformationen.
Achtung
rClassInfoMap wird im Konstruktor kopiert.

◆ SchemaInterface() [4/6]

glo::SchemaInterface::SchemaInterface ( const std::string & rsSchemaFullName,
bool bInDeveloperMode = false )

Konstruktor mit Parameterübergabe.

Parameter
[in]rsSchemaFullNameDer vollständiger Dateiname (z.B. unter dem Betriebssystem Windows "C:/Pfad/MyGloBase.ini").
[in]bInDeveloperModeWenn true ist das SchemaInterface im Entwicklungsmodus. Es werden die Entwickler-Kommentare mit den Klassen und Attributen aus dem Schema geliefert und geschrieben. Ansonsten nicht, um nicht unnötigerweise das Datenaufkommen aufzublasen.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ SchemaInterface() [5/6]

glo::SchemaInterface::SchemaInterface ( const std::string & rsSchemaFullName,
bool bInDeveloperMode,
bool bNew )

Konstruktor mit Parameterübergabe.

Parameter
[in]rsSchemaFullNameDer vollständiger Dateiname (z.B. unter dem Betriebssystem Windows "C:/Pfad/MyGloBase.ini").
[in]bInDeveloperModeWenn true ist das SchemaInterface im Entwicklungsmodus. Es werden die Entwickler-Kommentare mit den Klassen und Attributen aus dem Schema geliefert und geschrieben. Ansonsten nicht, um nicht unnötigerweise das Datenaufkommen aufzublasen.
[in]bNewWenn true, wird ein neues Schema angelegt, es wird SchemaInterface::initNew() aufgerufen, ansonsten SchemaInterface::init().
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ SchemaInterface() [6/6]

glo::SchemaInterface::SchemaInterface ( const SchemaInterface & rT)

Copy-Konstruktor.

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

◆ ~SchemaInterface()

virtual glo::SchemaInterface::~SchemaInterface ( )
virtual

Destruktor, es werden alle Klasseninformationen aus dem Speicher entfernt.

Dokumentation der Elementfunktionen

◆ _DEBUG_ToString()

std::string glo::SchemaInterface::_DEBUG_ToString ( )

◆ changeAllClassReferences()

void glo::SchemaInterface::changeAllClassReferences ( const std::string & rsOldReferenceName,
const std::string & rsNewReferenceName,
std::map< unsigned long, ClassInfo *, std::less< unsigned long > > * pChangedClassesMap )

Es werden in allen Klasseninformationen vorhandene Referenzen auf Klassen mit der übergebenen Klassenbezeichnung rsOldReferenceName in Referenzen auf die Klasse mit der übergebenen Klassenbezeichnung rsNewReferenceName gändert.

Sollte aufgerufen werden, wenn sich ein Klassenname ändert.

Parameter
[in]rsOldReferenceNameDie Klassenbezeichnung, welche ersetzt werden soll.
[in]rsNewReferenceNameDie Klassenbezeichnung, welche anstelle der ersteren eingesetzt werden soll.
[in]pChangedClassesMapWenn übergeben, kommen dort alle geänderten Klasseninformationen rein.

◆ changeClassNameDotAttributNameInAttributeID()

int glo::SchemaInterface::changeClassNameDotAttributNameInAttributeID ( std::vector< TempGloClassInfoIndex > & rTempGloClassInfoIndexVector)
private

Tauscht alle Klassen- und Attributbezeichnungen in allen TempGloClassInfoIndex::m_sIndexPath in Klassen-ID und Attributfeldposition (equivalent zu AttributeID).

Parameter
[in,out]rTempGloClassInfoIndexVectorDer Vector von Objekten vom Typ TempGloClassInfoIndex, in denen die Werte in TempGloClassInfoIndex::m_sIndexPath verändert werden.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ classIdExisting()

bool glo::SchemaInterface::classIdExisting ( unsigned long ulClassID) const

Prüft ob eine Klasse mit übergebener Klassen-ID schon im Schema existiert.

Parameter
[in]ulClassIDDie Klassen ID.
Rückgabe
Wenn true, dann existiert eine Klasse mit der übergebenen Klassen-ID.

◆ classInfoFileNameExisting()

bool glo::SchemaInterface::classInfoFileNameExisting ( const std::string & rsClassFileName) const

Prüft ob eine Klasse mit übergebener Dateibezeichnung schon im Schema existiert.

Parameter
[in]rsClassFileNameDie Klassenbezeichnung
Rückgabe
Wenn true, dann existiert eine Klasse mit der übergebener Dateibezeichnung.

◆ classInfoNameExisting()

bool glo::SchemaInterface::classInfoNameExisting ( const std::string & rsClassName) const

Prüft ob eine Klasse mit übergebener Bezeichnung schon im Schema existiert.

Parameter
[in]rsClassNameDie vollständige Klassenbezeichnung (z.B. "mynamespace::MyClassName").
Rückgabe
Wenn true, dann existiert eine Klasse mit der übergebenen Bezeichnung.

◆ containedInClassInfoAttributeList()

bool glo::SchemaInterface::containedInClassInfoAttributeList ( const std::set< ClassInfoAttribute * > & rCheckSet,
const ClassInfoAttribute & rCheckAttribut ) const
protected

Prüft in übergebener Menge von Klasseninformations-Attributen, ob das übergebene Klasseninformations-Attribut enthalten ist.

Parameter
[in]rCheckSetDie zu prüfende Menge von Klasseninformations-Attributen.
[in]rCheckAttributDas zu prüfende Klasseninformations-Attributen.
Rückgabe
Wenn true, ist rCheckAttribut in rCheckSet enthalten.

◆ copyClassInfoListFrom()

void glo::SchemaInterface::copyClassInfoListFrom ( const SchemaInterface & rT)
private

Es werden alle Klasseninformationen aus der Liste der Klasseninformationen des Schemas und aus dem Speicher entfernt und dafür diejenigen aus dem übergebenen SchemaInterface als Kopien übernommen.

◆ deleteAllClassInfos()

void glo::SchemaInterface::deleteAllClassInfos ( )
private

Es werden alle Klasseninformationen aus der Liste der Klasseninformationen des Schemas und aus dem Speicher entfernt.

◆ destroyClassInfo()

int glo::SchemaInterface::destroyClassInfo ( unsigned long ulClassID)

Entfernt und zerstört die Klasseninformation mit übergebener Klassen-ID aus m_ClassInfoMap. Es werden alle "Unterklassen"-Klasseninformation mit entfernt und zerstört.

Parameter
[in]ulClassIDDie Klassen-ID der zu entfernenden Klasseninformation.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Alle vorher geholten Klasseninformationen der Unterklassen der entfernten Klasseninformation, sind mit dieser nicht mehr gültig.

◆ getAllAttributes() [1/2]

int glo::SchemaInterface::getAllAttributes ( std::map< std::string, ClassInfoAttribute *, std::less< std::string > > & rRetValMap) const

Liefert alle Klasseninformations-Attribute aller Klasseninformationen.

Parameter
[in,out]rRetValMapDie gefundenen Klasseninformations-Attribute werden eingefügt. Die Map wird in dieser Methode vor dem Einfügen nicht geleert.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Die gelieferten Klasseninformations-Attribute leben nur so lsnge wie das liefernde Objekt und dürfen von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getAllAttributes() [2/2]

int glo::SchemaInterface::getAllAttributes ( std::set< ClassInfoAttribute * > & rRetValSet,
unsigned long ulClassID,
bool bWithSuperClassAttributes = true ) const

Liefert alle Klasseninformations-Attribute von einer Klasseninformation mit übergebener Klassen-ID.

Parameter
[in,out]rRetValSetDie gefundenen Klasseninformations-Attribute werden eingefügt. Der Set wird in dieser Methode vor dem Einfügen nicht geleert.
[in]ulClassIDKlassen-ID der Klasseninformation, dessen Klasseninformations-Attribute erwartet werden.
[in]bWithSuperClassAttributesWenn false, werden die Attribute der Super-Klassen nicht (mit)geliefert.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Die gelieferten Klasseninformations-Attribute leben nur so lange wie das liefernde Objekt und dürfen von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getAllClassInfos()

int glo::SchemaInterface::getAllClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rClassInfoMap,
bool bCopy = true ) const

Liefert alle Klasseninformationen des Schemas.

Parameter
[in,out]rClassInfoMapDie Klasseninformationen aller Klassen des Schemas.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Klasseninformationen in rClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Klasseninformationen in rClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getAllSubClassInfos()

int glo::SchemaInterface::getAllSubClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSubClassInfoMap,
unsigned long ulClassID,
bool bCopy = true ) const

Liefert die Klasseninformationen aller Unterklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSubClassInfoMapDie Klasseninformationen aller Unterklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen aller Unterklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getAllSuperClassIDs()

int glo::SchemaInterface::getAllSuperClassIDs ( std::set< unsigned long > & rSuperClassIdSet,
unsigned long ulClassID ) const

Liefert die Klassen-IDs aller Oberklassen der Klasse, deren ID übergeben wird.

Parameter
[in,out]rSuperClassIdSetDie Klassen-IDs der Oberklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klassen-IDs der Oberklassen geliefert werden sollen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getAllSuperClassInfos()

int glo::SchemaInterface::getAllSuperClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSuperClassInfoMap,
unsigned long ulClassID,
bool bCopy = true ) const

Liefert die Klasseninformationen aller Oberklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSuperClassInfoMapDie Klasseninformationen aller Oberklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen aller Oberklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getAllTableNames() [1/2]

int glo::SchemaInterface::getAllTableNames ( std::map< std::string, std::string, std::less< std::string > > & rTableNameMap) const

Liefert alle Tabellenbezeichnungen aller Klasseninformationen.

Parameter
[in,out]rTableNameMapDie gefundenen Tabellenbezeichnungen werden eingefügt. Die Map wird in dieser Methode vor dem Einfügen nicht geleert.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Siehe auch
SchemaInterface::getDataPath()

◆ getAllTableNames() [2/2]

int glo::SchemaInterface::getAllTableNames ( std::vector< std::string > & rTableNameList,
unsigned long ulClassID ) const

Liefert alle Tabellenbezeichnungen von einer Klasseninformation mit übergebener Klassen-ID.

Parameter
[in,out]rTableNameListDie gefundenen Tabellenbezeichnungen werden eingefügt. Die Liste wird in dieser Methode vor dem Einfügen nicht geleert.
[in]ulClassIDKlassen-ID der Klasseninformation, dessen Tabellenbezeichnungen erwartet werden.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Siehe auch
SchemaInterface::getDataPath()

◆ getClassInfo()

ClassInfo * glo::SchemaInterface::getClassInfo ( EnSeekMode eMode)

Liefert eine Klasseninformation aus m_ClassInfoMap in Bezug auf eMode.

Parameter
[in]eModeDer Suchmodus.

Parameterbeispiele:

Rückgabe
Wenn erfolgreich, die Klasseninformation.
Achtung
Das gelieferte Objekt lebt nur so lange wie das liefernde Objekt und darf NICHT von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ getClassInfoAttributeByAttributeID()

ClassInfoAttribute * glo::SchemaInterface::getClassInfoAttributeByAttributeID ( int & riErr,
const AttributeID & rAttributeID ) const

Liefert ein Klasseninformations-Attribut mit übergebener AttributeID.

Parameter
[in,out]riErrEin Wert < 0 zeigt einen Fehler an.
[in]rAttributeIDDie AttributeID des gesuchten Klasseninformations-Attributs.
Rückgabe
Wenn gefunden, lebt das gelieferte Klasseninformations-Attribut nur so lange wie das liefernde Objekt und darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getClassInfoAttributeByClassAndAttributeName()

ClassInfoAttribute * glo::SchemaInterface::getClassInfoAttributeByClassAndAttributeName ( int & riErr,
const std::string & rsClassName,
const std::string & rsAttributeName ) const

Liefert ein Klasseninformations-Attribut von einer Klasseninformation mit den übergebenen Klassen- und Attributbezeichnungen.

Parameter
[in,out]riErrEin Wert < 0 zeigt einen Fehler an.
[in]rsClassNameDie vollständige Klassenbezeichnung des gesuchten Klasseninformations-Attributs (z.B. "mynamespace::MyClassName").
[in]rsAttributeNameDie Attributbezeichnung des gesuchten Klasseninformations-Attributs.
Rückgabe
Wenn gefunden, lebt das gelieferte Klasseninformations-Attribut nur so lange wie das liefernde Objekt und darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getClassInfoAttributeByTableAndFieldName() [1/2]

ClassInfoAttribute * glo::SchemaInterface::getClassInfoAttributeByTableAndFieldName ( int & riErr,
const std::string & rsTableName,
const std::string & rsFieldName ) const

Liefert ein Klasseninformations-Attribut von einer Klasseninformation mit den übergebenen Tabellen- und Feldbezeichnungen.

Parameter
[in,out]riErrEin Wert < 0 zeigt einen Fehler an.
[in]rsTableNameDie Tabellenbezeichnung des gesuchten Klasseninformations-Attributs.
[in]rsFieldNameDie Tabellenfeldbezeichnung des gesuchten Klasseninformations-Attributs.
Rückgabe
Wenn gefunden, lebt das gelieferte Klasseninformations-Attribut nur so lange wie das liefernde Objekt und darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getClassInfoAttributeByTableAndFieldName() [2/2]

ClassInfoAttribute * glo::SchemaInterface::getClassInfoAttributeByTableAndFieldName ( int & riErr,
unsigned long ulClassID,
const std::string & rsTableName,
const std::string & rsFieldName ) const

Liefert ein Klasseninformations-Attribut von einer Klasseninformation mit übergebener Klassen-ID und übergebenen Tabellen- und Feldbezeichnungen.

Parameter
[in,out]riErrEin Wert < 0 zeigt einen Fehler an.
[in]ulClassIDKlassen-ID der Klasseninformation, dessen Klasseninformations-Attribut gesucht wird.
[in]rsTableNameDie Tabellenbezeichnung des gesuchten Klasseninformations-Attributs.
[in]rsFieldNameDie Tabellenfeldbezeichnung des gesuchten Klasseninformations-Attributs.
Rückgabe
Wenn gefunden, lebt das gelieferte Klasseninformations-Attribut nur so lange wie das liefernde Objekt und darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getClassInfoByID()

ClassInfo * glo::SchemaInterface::getClassInfoByID ( unsigned long ulClassID) const

Liefert die Klasseninformation aus m_ClassInfoMap mit übergebener Klassen-ID wenn vorhanden.

Parameter
[in]ulClassIDDie Klassen-ID.
Rückgabe
Wenn erfolgreich, die Klasseninformation.
Achtung
Das gelieferte Objekt lebt nur so lange wie das liefernde Objekt und darf nicht von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ getClassInfoByMainTable()

ClassInfo * glo::SchemaInterface::getClassInfoByMainTable ( const std::string & rsMainTableName) const

Liefert die Klasseninformation aus m_ClassInfoMap, deren Daten in der Tabelle mit übergebener Bezeichnung gespeichert werden.

Parameter
[in]rsMainTableNameDie Tebellenbezeichnung.
Rückgabe
Wenn erfolgreich, die Klasseninformation.
Achtung
Das gelieferte Objekt lebt nur so lange wie das liefernde Objekt und darf nicht von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ getClassInfoByName()

ClassInfo * glo::SchemaInterface::getClassInfoByName ( const std::string & rsClassName) const

Liefert die Klasseninformation aus m_ClassInfoMap mit übergebener Bezeichnung wenn vorhanden.

Parameter
[in]rsClassNameDie vollständige Klassenbezeichnung (z.B. "namespace::MyClassName").
Rückgabe
Wenn erfolgreich, die Klasseninformation.
Achtung
Das gelieferte Objekt lebt nur so lange wie das liefernde Objekt und darf nicht von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ getClassInfoIndexByClassAndIndexName()

ClassInfoIndex * glo::SchemaInterface::getClassInfoIndexByClassAndIndexName ( int & riErr,
const std::string & rsClassName,
const std::string & rsIndexName ) const

Liefert ein Klasseninformations-Index von einer Klasseninformation mit den übergebenen Klassen- und Indexbezeichnungen.

Parameter
[in,out]riErrEin Wert < 0 zeigt einen Fehler an.
[in]rsClassNameDie vollständige Klassenbezeichnung des gesuchten Klasseninformations-Index (z.B. "mynamespace::MyClassName").
[in]rsIndexNameDie Indexbezeichnung des gesuchten Klasseninformations-Index.
Rückgabe
Wenn gefunden, lebt das gelieferte Klasseninformations-Attribut nur so lange wie das liefernde Objekt und darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getClassTableWithPath()

int glo::SchemaInterface::getClassTableWithPath ( std::string & rstrRetVal,
unsigned long ulClassID ) const

Liefert den Tabellen-Dateinamen mit vollständigen Pfad einer Klasseninformation mit übergebener Klassen-ID.

Parameter
[in,out]rstrRetValDer Tabellen-Dateinamen mit vollständigen Pfad (z.B. unter dem Betriebssystem Windows "C:/Pfad/Data/MyClassTable").
[in]ulClassIDKlassen-ID der Klasseninformation, dessen Tabellen-Dateinamen erwartet wird.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getDataPath()

std::string glo::SchemaInterface::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/".

◆ getDataSubDir()

std::string glo::SchemaInterface::getDataSubDir ( ) const

Liefert den 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 Verzeichnisname wie z.B. "Data".

◆ getDescription()

std::string glo::SchemaInterface::getDescription ( ) const

Liefert die Datenbank-Beschreibung.

Rückgabe
s.o.

◆ getNextClassID()

unsigned long glo::SchemaInterface::getNextClassID ( )

Liefert die nächste freie eindeutige Klassen-ID.

Rückgabe
Die eindeutige Klassen-ID

◆ getNumberOfClassInfos()

std::size_t glo::SchemaInterface::getNumberOfClassInfos ( ) const

Liefert die Anzahl der Klasseninformationen.

Rückgabe
s.o.

◆ getSchemaFullName()

std::string glo::SchemaInterface::getSchemaFullName ( ) const

Liefert den vollständiger Dateinamen.

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

◆ getSchemaID()

unsigned long glo::SchemaInterface::getSchemaID ( ) const

Liefert die Schema-ID.

Rückgabe
s.o.

◆ getSchemaName()

std::string glo::SchemaInterface::getSchemaName ( ) const

Liefert die Schema- bzw. Datenbankbezeichnung.

Rückgabe
Schemabezeichnung (z.B. "MyGloBase").

◆ getSchemaPath()

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

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

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

◆ getSubClassInfos() [1/2]

int glo::SchemaInterface::getSubClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSubClassInfoMap,
unsigned long ulClassID,
bool bCopy,
bool bDeep ) const
private

Liefert die Klasseninformationen der Unterklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSubClassInfoMapDie Klasseninformationen der Unterklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen der Unterklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
[in]bDeepWenn true, werden nicht nur die direkten Unterklassen eingefügt, sondern auch deren Unterklassen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getSubClassInfos() [2/2]

int glo::SchemaInterface::getSubClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSubClassInfoMap,
unsigned long ulClassID,
bool bCopy = true ) const

Liefert die Klasseninformationen der direkten Unterklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSubClassInfoMapDie Klasseninformationen der direkten Unterklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen der direkten Unterklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Unterklassen-Klasseninformationen in rSubClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getSuperClassInfos() [1/2]

int glo::SchemaInterface::getSuperClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSuperClassInfoMap,
unsigned long ulClassID,
bool bCopy,
bool bDeep ) const
private

Liefert die Klasseninformationen der Oberklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSuperClassInfoMapDie Klasseninformationen der Oberklassen, wenn vorhanden. Die Map wird in dieser Methode vor dem Einfügen nicht geleert.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen der Oberklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann darf aufrufende Instanz diese Objekt nicht aus dem Speicher entfernen.
[in]bDeepWenn true, werden nicht nur die direkten Oberklassen eingefügt, sondern auch deren Oberklassen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getSuperClassInfos() [2/2]

int glo::SchemaInterface::getSuperClassInfos ( std::map< unsigned long, ClassInfo *, std::less< unsigned long > > & rSuperClassInfoMap,
unsigned long ulClassID,
bool bCopy = true ) const

Liefert die Klasseninformationen der direkten Oberklasse(n) der Klasse, deren Klassen-ID übergeben wird.

Parameter
[in,out]rSuperClassInfoMapDie Klasseninformationen der direkten Oberklassen, wenn vorhanden.
[in]ulClassIDDie Klassen-ID der Klasse, deren Klasseninformationen der direkten Oberklassen erwartet werden.
[in]bCopyKopien oder Originale:
  • Wenn true, werden Kopien der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann muss aufrufende Instanz diese Objekt aus dem Speicher entfernen.
  • Wenn false, werden die Originale der Oberklassen-Klasseninformationen in rSuperClassInfoMap eingefügt; dann darf die aufrufende Instanz diese Objekte nicht aus dem Speicher entfernen.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ getVersion()

unsigned long glo::SchemaInterface::getVersion ( ) const

Liefert die Versionsnummer.

Rückgabe
s.o.

◆ init()

void glo::SchemaInterface::init ( )
private

Es wird das Schemainterface initialisiert. Es wird die Schemadatei geöffnet und alle Klasseninformationen mit ihren Klasseninformations-Attributen gelesen, wird vom Konstruktor aufgerufen.

Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ initNew()

void glo::SchemaInterface::initNew ( )
private

Es wird nür geprüft, ob das File aus "m_sSchemaFullName" nicht schon existiert.

Wird vom Konstruktor aufgerufen.

Ausnahmebehandlung
eut::ErrorNExceptionWenn die Schemadatei schon existiert wird eine Exception geworfen.

◆ insertClassInfo()

int glo::SchemaInterface::insertClassInfo ( ClassInfo * pNewClassInfo)

Fügt übergebene Klasseninformation in m_ClassInfoMap ein, wenn noch keine Klasseninformation mit gleicher Klassen-ID vorhanden.

Parameter
[in]pNewClassInfoDie einzufügende Klasseninformation.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Wenn übergebenes Objekt ohne Fehler übernommen wurde, wird dieses von diesem Objekt aus dem Speicher entfernt. Die aufrufende Instanz darf das übergebene Objekt dann nicht mehr aus dem Speicher entfernen.

◆ isSuperClassFrom()

bool glo::SchemaInterface::isSuperClassFrom ( unsigned long ulClassIDSuperClass,
unsigned long ulClassIDSubClass ) const

Prüft, ob eine Klasse eine Oberklasse einer anderen Klasse ist.

Parameter
[in]ulClassIDSuperClassDie zu prüfende Klassen-ID der Oberklasse.
[in]ulClassIDSubClassDie zu prüfende Klassen-ID der Unterklasse.
Rückgabe
Wenn true, ist die Klasse mit der Klassen-ID ulClassIDSuperClass eine Oberklasse der Unterklasse mit der Klassen-ID ulClassIDSubClass.

◆ operator=()

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

Zuweisungsoperator.

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

◆ setDataSubDir()

void glo::SchemaInterface::setDataSubDir ( const std::string & rsDataSubDir)

Setzt den Verzeichnisnamen, in dem die Daten zu finden sind. Die Daten liegen immer in einem Unterverzeichnis von dem Verzeichnis, in dem die Schemadatei liegt.

Parameter
[in]rsDataSubDirDer Verzeichnisname wie z.B. "Data".

◆ setDescription()

void glo::SchemaInterface::setDescription ( const std::string & rsDescription)

Setzt die Datenbank-Beschreibung.

Parameter
[in]rsDescriptionDie Beschreibung.

◆ setSchemaFullName()

void glo::SchemaInterface::setSchemaFullName ( const std::string & rsSchemaFullName)

Setzt den vollständiger Dateinamen.

Parameter
[in]rsSchemaFullNameVollständiger Dateiname (z.B. unter dem Betriebssystem Windows "C:/Pfad/MyGloBase.ini").

◆ setSchemaID()

void glo::SchemaInterface::setSchemaID ( unsigned long ulID)

Setzt die Schema-ID.

Parameter
[in]ulIDDie Schema-ID.

◆ setSubClassInfosInAllClassInfo()

void glo::SchemaInterface::setSubClassInfosInAllClassInfo ( )

Es werden in allen Klasseninformationen die Unterklassen eingetragen.

Siehe auch
glo::ClassInfo::insertSubClassInfo(glo::ClassInfo*)

◆ setVersion()

void glo::SchemaInterface::setVersion ( unsigned long ulVersion)

Setzt die Versionsnummer.

Parameter
[in]ulVersionDie Versionsnummer.

◆ tableNameExisting()

bool glo::SchemaInterface::tableNameExisting ( const std::string & rsTableName) const

Prüft, ob eine Tabellenbezeichnung für eine Klasseninformation im Schema schon vergeben ist.

Parameter
[in]rsTableNameDie zu prüfende Tabellenbezeichnung.
Rückgabe
Wenn true, wird der Tabellenname im Schema bereits verwendet.

◆ writeSchema()

int glo::SchemaInterface::writeSchema ( )

Schreibt die Schemadatei (m_sSchemaFullName). Es wird versucht eine evtl. schon vorhandene Datei zu überschreiben.

Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Freundbeziehungen und Funktionsdokumentation

◆ BaseMaker

friend class BaseMaker
friend

◆ Record

friend class Record
friend

Dokumentation der Datenelemente

◆ m_bInDeveloperMode

bool glo::SchemaInterface::m_bInDeveloperMode
private

Wenn true ist das SchemaInterface im Entwicklungsmodus. Es werden die Entwickler-Kommentare mit den Klassen und Attributen aus dem Schema geliefert und geschrieben. Ansonsten nicht, um das Datenaufkommen nicht aufzublasen.

◆ m_ClassInfoMap

std::map< unsigned long, ClassInfo *, std::less<unsigned long> > glo::SchemaInterface::m_ClassInfoMap
private

Die Menge der Klasseninformationen des jeweiligen Schemas.

◆ m_ClassInfoMapIterator

std::map<unsignedlong,ClassInfo*>::iterator glo::SchemaInterface::m_ClassInfoMapIterator
private

Ein interner Iterator auf die Menge der Klasseninformationen des jeweiligen Schemas.

◆ m_CurrentlyAssignedClassIDVector

std::vector<unsigned long> glo::SchemaInterface::m_CurrentlyAssignedClassIDVector
private

Nur temporär um vergebene ClassIDs zu festzuhalten, deren Klassen ggf. noch nicht im Schema sind.

◆ m_sDataSubDir

std::string glo::SchemaInterface::m_sDataSubDir
private

Die Objektdaten liegen immer in diesem Unterverzeichnis von dem Verzeichnis, in dem die Schemadatei liegt.

Siehe auch
m_sSchemaFullName

◆ m_sDescription

std::string glo::SchemaInterface::m_sDescription
private

Beschreibung der Datenbank.

◆ m_sSchemaFullName

std::string glo::SchemaInterface::m_sSchemaFullName
private

Der vollständiger Dateiname der Schemadatei (z.B. unter dem Betriebssystem Windows "C:/Pfad/MyGloBase.ini").

Siehe auch
m_sDataSubDir

◆ m_ulID

unsigned long glo::SchemaInterface::m_ulID
private

Die ID der Datenbank.

◆ m_ulVersion

unsigned long glo::SchemaInterface::m_ulVersion
private

Die Version des Schemas; ungleiche IDs von Client und Server können zu unvorhergesehenes Verhalten führen!


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