Verwaltet die einzelnen String-Indizes einer Klasse. Wenn dieses ein Unique-Index ist, sind die ObjStrIdTuple in einer Map, ansonsten in einer MultiMap. Dann können Indexe in einer MultiMap als reserviert eingefügt werden, dieses wird beim weiteren Einfügen berücksichtigt.
Mehr ...
#include <GloIndexPool.h>
|
| ObjectStrIndex (const ObjectStrIndex &rT) |
|
| ObjectStrIndex (const std::string &rsPathName, unsigned long ulClassID, const std::string &rsIndexName, bool bUnique) |
|
virtual | ~ObjectStrIndex () |
|
void | deleteAllIndexValues () |
|
unsigned long | getClassID () const |
|
const std::string & | getIndexName () const |
|
const std::multimap< std::string, IndexPool::ObjStrIdTuple *, std::less< std::string > > & | getNonUniqueIndexMapRef () const |
|
const std::map< ObjID, IndexPool::ObjStrIdTuple *, std::less< ObjID > > & | getObjIdIndexMapRef () const |
|
const std::string & | getPathName () const |
|
const std::map< std::string, IndexPool::ObjStrIdTuple *, std::less< std::string > > & | getUniqueIndexMapRef () const |
|
int | insertObjStrIdTuple (const ObjStrIdTuple &rIndexTuple) |
|
bool | isIndexFree (const std::string &rsIndex, const ObjID &rObjID) const |
|
bool | isObjIdAlreadyAvailable (const ObjID &rObjID) const |
|
bool | isUnique () const |
|
IndexPool::ObjectStrIndex & | operator= (const ObjectStrIndex &rT) |
|
void | releaseObjStrIdTuple (const NUM_PTR ipReservingComunicatorTrx) |
|
int | removeObjStrIdTuple (const ObjID &rObjID, NUM_PTR ipReservingComunicatorTrx=0) |
|
void | reserveObjStrIdTuple (const ObjStrIdTuple &rIndexTuple) |
|
|
bool | m_bUnique |
|
std::multimap< std::string, ObjStrIdTuple *, std::less< std::string > > | m_NonUniqueIndexMultiMap |
|
std::multimap< std::string, ObjStrIdTuple * >::iterator | m_NonUniqueIndexMultiMapIterator |
|
std::map< ObjID, ObjStrIdTuple *, std::less< ObjID > > | m_ObjIdIndexMap |
|
std::multimap< std::string, ObjStrIdTuple *, std::less< std::string > > | m_ReservedIndexMultiMap |
|
std::string | m_sIndexName |
|
std::string | m_strPathName |
|
unsigned long | m_ulClassID |
|
std::map< std::string, ObjStrIdTuple *, std::less< std::string > > | m_UniqueIndexMap |
|
std::map< std::string, ObjStrIdTuple * >::iterator | m_UniqueIndexMapIterator |
|
Verwaltet die einzelnen String-Indizes einer Klasse. Wenn dieses ein Unique-Index ist, sind die ObjStrIdTuple in einer Map, ansonsten in einer MultiMap. Dann können Indexe in einer MultiMap als reserviert eingefügt werden, dieses wird beim weiteren Einfügen berücksichtigt.
- Copyright
- © 2010 Helmut Jakoby
- Autor
- Helmut Jakoby
◆ ObjectStrIndex() [1/3]
glo::IndexPool::ObjectStrIndex::ObjectStrIndex |
( |
| ) |
|
|
protected |
Der Standard-Konstruktor steht nicht zur Verfügung.
◆ ObjectStrIndex() [2/3]
glo::IndexPool::ObjectStrIndex::ObjectStrIndex |
( |
const std::string & | rsPathName, |
|
|
unsigned long | ulClassID, |
|
|
const std::string & | rsIndexName, |
|
|
bool | bUnique ) |
Konstruktor mit Parameterübergabe.
- Parameter
-
[in] | rsPathName | Die vollständige Verzeichnisbezeichnung, in dem die Tabellen zu finden sind wie z.B. "C:/Pfad/Data/". |
[in] | ulClassID | Die Klassen-ID der verwalteten Indexe. |
[in] | rsIndexName | Die Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName". |
[in] | bUnique | Wenn true, dann handelt es sich um einen eindeutigen Index (jeder Eintrag kann nur einmal vorhanden sein), ansonsten sind mehrere gleiche Einträge möglich. |
◆ ObjectStrIndex() [3/3]
glo::IndexPool::ObjectStrIndex::ObjectStrIndex |
( |
const ObjectStrIndex & | rT | ) |
|
Copy-Konstruktor.
- Parameter
-
[in] | rT | Von diesem Objekt werden die Daten übernommen. |
- Ausnahmebehandlung
-
◆ ~ObjectStrIndex()
virtual glo::IndexPool::ObjectStrIndex::~ObjectStrIndex |
( |
| ) |
|
|
virtual |
◆ copyMapsFrom()
void glo::IndexPool::ObjectStrIndex::copyMapsFrom |
( |
const ObjectStrIndex & | rT | ) |
|
|
protected |
Entfernt alle Elemente aus den Maps. Dann werden alle Elemente der gleichen Maps des übergebenen Objekt-StringIndex kopiert.
- Parameter
-
[in] | rT | Der Objekt-StringIndex, dessen Elemente aus den Maps kopiert werden sollen. |
- Ausnahmebehandlung
-
◆ deleteAllIndexValues()
void glo::IndexPool::ObjectStrIndex::deleteAllIndexValues |
( |
| ) |
|
◆ getClassID()
unsigned long glo::IndexPool::ObjectStrIndex::getClassID |
( |
| ) |
const |
Liefert die Klassen-ID des verwalteten Objekt-StringIndex.
- Rückgabe
- Die Klassen-ID.
◆ getIndexName()
const std::string & glo::IndexPool::ObjectStrIndex::getIndexName |
( |
| ) |
const |
Liefert die Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
- Rückgabe
- Die Indexbezeichnung.
◆ getNonUniqueIndexMapRef()
const std::multimap< std::string, IndexPool::ObjStrIdTuple *, std::less< std::string > > & glo::IndexPool::ObjectStrIndex::getNonUniqueIndexMapRef |
( |
| ) |
const |
◆ getObjIdIndexMapRef()
◆ getObjStrIdTuple() [1/2]
Liefert einen Zeiger auf ein ObjStrIdTuple aus m_UniqueIndexMap mit übergebener Objekt-ID.
- Parameter
-
- Rückgabe
- Das ggf. gefundene Objekt.
- Achtung
- Die aufrufende Instanz darf das gelieferte Objekt nicht ändern oder aus dem Speicher entfernen. Es lebt nur so lange wie dieses Objekt.
◆ getObjStrIdTuple() [2/2]
Liefert einen Zeiger auf ein ObjStrIdTuple in Abhängigkeit von m_bUnique aus m_UniqueIndexMap oder m_NonUniqueIndexMultiMap in Bezug auf eMode.
- Parameter
-
Parameterbeispiele:
- Rückgabe
- Das ggf. gefundene Objekte.
- Achtung
- Die aufrufende Instanz darf das gelieferte Objekt NICHT ändern oder aus dem Speicher entfernen. Es lebt nur so lange wie dieses Objekt.
◆ getPathName()
const std::string & glo::IndexPool::ObjectStrIndex::getPathName |
( |
| ) |
const |
Liefert die vollständige Verzeichnisbezeichnung, in dem die Tabellen zu finden sind.
- Rückgabe
- Die vollständige Verzeichnisbezeichnung wie z.B. "C:/Pfad/Data/".
◆ getUniqueIndexMapRef()
const std::map< std::string, IndexPool::ObjStrIdTuple *, std::less< std::string > > & glo::IndexPool::ObjectStrIndex::getUniqueIndexMapRef |
( |
| ) |
const |
◆ insertObjStrIdTuple()
int glo::IndexPool::ObjectStrIndex::insertObjStrIdTuple |
( |
const ObjStrIdTuple & | rIndexTuple | ) |
|
◆ isIndexFree()
bool glo::IndexPool::ObjectStrIndex::isIndexFree |
( |
const std::string & | rsIndex, |
|
|
const ObjID & | rObjID ) const |
Prüft ob eine String-Index für ein Objekt noch frei ist. Macht nur Sinn, wenn m_bUnique auf true gesetzt ist.
- Parameter
-
[in] | rsIndex | Der zu überprüfende Index. |
[in] | rObjID | Die zu prüfende Objekt-ID. |
- Rückgabe
- Liefert true (immer wenn m_bUnique == false) oder false, wenn rsIndex schon vergeben.
◆ isObjIdAlreadyAvailable()
bool glo::IndexPool::ObjectStrIndex::isObjIdAlreadyAvailable |
( |
const ObjID & | rObjID | ) |
const |
Prüft ob ein Index mit der Objekt-ID in m_ObjIdIndexMap enthalten ist.
- Parameter
-
[in] | rObjID | Die zu prüfende Objekt-ID. |
- Rückgabe
- Liefert true, wenn ein Index mit der Objekt-ID in m_ObjIdIndexMap enthalten.
◆ isUnique()
bool glo::IndexPool::ObjectStrIndex::isUnique |
( |
| ) |
const |
Liefert, ob dieses ein eindeutiger Index ist oder nicht.
- Rückgabe
- Wenn true, dann handelt es sich um einen eindeutigen Index (jeder Eintrag kann nur einmal vorhanden sein), ansonsten sind mehrere gleiche Einträge möglich.
◆ operator=()
Zuweisungsoperator.
- Parameter
-
[in] | rT | Von diesem Objekt werden die Daten übernommen. |
- Ausnahmebehandlung
-
◆ releaseObjStrIdTuple()
void glo::IndexPool::ObjectStrIndex::releaseObjStrIdTuple |
( |
const NUM_PTR | ipReservingComunicatorTrx | ) |
|
◆ removeObjStrIdTuple() [1/2]
int glo::IndexPool::ObjectStrIndex::removeObjStrIdTuple |
( |
const ObjID & | rObjID, |
|
|
bool | bDelete, |
|
|
NUM_PTR | ipReservingComunicatorTrx = 0 ) |
|
protected |
Entfernt oder löscht einen String-Index in Abhängigkeit von m_bUnique aus m_UniqueIndexMap oder m_NonUniqueIndexMultiMap und ggf. in m_ObjIdIndexMap.
- Parameter
-
[in] | rObjID | Die ObjId des zu entfernenden String-Index. |
[in] | bDelete | Wenn true, wird der String-Index aus allen Maps und aus dem Speicher entfernt. Wenn false, wird der Index in Abhängigkeit von m_bUnique aus m_UniqueIndexMap oder m_NonUniqueIndexMultiMap entfernt. |
[in] | ipReservingComunicatorTrx | Die auf NUM_PTR gecastete Adresse eines Communicator's, in dessen Transaktion der Index ggf. reserviert wurde. Wenn diese gesetzt, wird nur ein reservierter Index gelöscht. |
- Rückgabe
- Eine Rückgabe < 0 zeigt einen Fehler an.
◆ removeObjStrIdTuple() [2/2]
int glo::IndexPool::ObjectStrIndex::removeObjStrIdTuple |
( |
const ObjID & | rObjID, |
|
|
NUM_PTR | ipReservingComunicatorTrx = 0 ) |
Entfernt einen String-Index in Abhängigkeit von m_bUnique aus m_UniqueIndexMap oder m_NonUniqueIndexMultiMap.
- Parameter
-
[in] | rObjID | Die ObjId des zu entfernenden Index. |
[in] | ipReservingComunicatorTrx | Die auf NUM_PTR gecastete Adresse eines Communicator's, in dessen Transaktion der Index ggf. reserviert wurde. Wenn diese gesetzt, wird nur ein reservierter Index gelöscht. |
- Rückgabe
- Eine Rückgabe < 0 zeigt einen Fehler an.
◆ reserveObjStrIdTuple()
void glo::IndexPool::ObjectStrIndex::reserveObjStrIdTuple |
( |
const ObjStrIdTuple & | rIndexTuple | ) |
|
◆ RealIndexPool
◆ m_bUnique
bool glo::IndexPool::ObjectStrIndex::m_bUnique |
|
private |
Wenn true, handelt es sich um einen eindeutigen Index (jeder Eintrag kann nur einmal vorhanden sein), ansonsten sind mehrere gleiche Einträge möglich.
◆ m_NonUniqueIndexMultiMap
std::multimap< std::string, ObjStrIdTuple * , std::less< std::string > > glo::IndexPool::ObjectStrIndex::m_NonUniqueIndexMultiMap |
|
private |
Wenn m_bUnique == false, wird diese Map genutzt.
◆ m_NonUniqueIndexMultiMapIterator
std::multimap<std::string,ObjStrIdTuple*>::iterator glo::IndexPool::ObjectStrIndex::m_NonUniqueIndexMultiMapIterator |
|
private |
◆ m_ObjIdIndexMap
◆ m_ReservedIndexMultiMap
std::multimap< std::string, ObjStrIdTuple * , std::less< std::string > > glo::IndexPool::ObjectStrIndex::m_ReservedIndexMultiMap |
|
private |
Es können Unique-Indexe z.B. in Transaktionen reserviert werden, die hier eingefügt sind.
Das ist z.B. notwendig, wenn ein indiziertes Objekt in einer Transaktion mit einem Unique-Index "1" zum speichern in einem TransactionManager::TransactionStep ist.
Wenn das gleiche Objekt in der Transaktion nochmals, mit dem Unique-Index "2" zum speichern in einem TransactionManager::TransactionStep abgelegt wird, wird auch dieser als reserviert abgelegt.
Erst bei einem 'Commit' bzw. 'Abort' werden diese reservierten Index e entfernt und bei einem 'Commit' in die m_UniqueIndexMap übertragen.
◆ m_sIndexName
std::string glo::IndexPool::ObjectStrIndex::m_sIndexName |
|
private |
Die Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
◆ m_strPathName
std::string glo::IndexPool::ObjectStrIndex::m_strPathName |
|
private |
Die vollständige Verzeichnisbezeichnung, in dem die Tabellen zu finden sind wie z.B. "C:/Pfad/Data/".
◆ m_ulClassID
unsigned long glo::IndexPool::ObjectStrIndex::m_ulClassID |
|
private |
Die Klassen-ID des verwalteten Objekt-StringIndex, gilt nur für eine Klasse (nicht für Tabellen).
◆ m_UniqueIndexMap
std::map< std::string, ObjStrIdTuple * , std::less< std::string > > glo::IndexPool::ObjectStrIndex::m_UniqueIndexMap |
|
private |
Wenn m_bUnique == true, wird diese Map genutzt.
◆ m_UniqueIndexMapIterator
std::map<std::string,ObjStrIdTuple*>::iterator glo::IndexPool::ObjectStrIndex::m_UniqueIndexMapIterator |
|
private |
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: