Interface DataIdentificationManager
- All Known Subinterfaces:
ContainerCreator
- All Known Implementing Classes:
PersistenceManager
-
Method Summary
Modifier and TypeMethodDescriptiondefault String
formatContainerDirectory
(ContainerDirectory location) Die Methode formatDataIdentification gibt eine Datenidentifikation als lesbaren String aus.default String
formatObj
(long objId) Formatiert eine Objekt-ID.default int
Gibt die maximale Größe für Index-Caches zurückdefault LockedContainerDirectory
lockIndex
(ContainerDirectory containerFileDir) Muss immer vor Zugriffen auf den kritischen Bereich (die Indexe oder Container) eines Containerverzeichnisses aufgerufen werden.lockIndex
(IdDataIdentification dataIdentification) Muss immer vor Zugriffen auf den kritischen Bereich (die Indexe oder Container) der Datenidentifikation aufgerufen werden.default boolean
Gibt zurück, ob bei Fehlern beim Lesen von Containerdateien die Datei umbenannt (und damit deaktiviert) werden soll.
-
Method Details
-
shouldDeleteBrokenContainers
default boolean shouldDeleteBrokenContainers()Gibt zurück, ob bei Fehlern beim Lesen von Containerdateien die Datei umbenannt (und damit deaktiviert) werden soll.- Returns:
- Defekte Container umbenennen/löschen?
-
lockIndex
SyncKey<IdDataIdentification> lockIndex(IdDataIdentification dataIdentification) throws SynchronizationFailedException Muss immer vor Zugriffen auf den kritischen Bereich (die Indexe oder Container) der Datenidentifikation aufgerufen werden.Wenn ein anderer Task sich im kritischen Bereich befindet, blockiert diese Methode bis der kritische Bereich wieder frei ist.
Da der Index-Bereich möglicherweise von vielen Tasks benutzt wird (und auch Zugriffe beim Archivieren von Daten erfolgen sollte), der Bereich so schnell wie möglich wieder verlassen werden. Es ist zwingend erforderlich, das zurückgegebene Lock-Objekt nach Benutzung zu schließen, sonst können andere Threads blockiert werden.
Beispiel-Code:
try(SyncKey<IdDataIdentification> lock = archMgr.lockIndex(din.getDataIdentification())) { // Tue was mit den Indexen }
Das zurückgegebene
SyncKey
-Objekt verhält sich wie einReentrantLock
, es ist also möglich, ein zweites Lock zu erhalten, wenn bereits ein Lock geholt wurde.- Parameters:
dataIdentification
- Datenidentifikation- Returns:
- Lock
- Throws:
SynchronizationFailedException
- Synchronisierung ist fehlgeschlagen (Unterbrochen beim Warten)
-
lockIndex
default LockedContainerDirectory lockIndex(ContainerDirectory containerFileDir) throws SynchronizationFailedException Muss immer vor Zugriffen auf den kritischen Bereich (die Indexe oder Container) eines Containerverzeichnisses aufgerufen werden.Wenn ein anderer Task sich im kritischen Bereich befindet, blockiert diese Methode bis der kritische Bereich wieder frei ist.
Da der Index-Bereich möglicherweise von vielen Tasks benutzt wird (und auch Zugriffe beim Archivieren von Daten erfolgen), sollte der Bereich so schnell wie möglich wieder verlassen werden. Es ist zwingend erforderlich, das zurückgegebene Lock-Objekt nach Benutzung zu schließen, sonst können andere Threads blockiert werden.
Beispiel-Code:
try(SyncKey<IdDataIdentification> lock = archMgr.lockIndex(din.getDataIdentification())) { // Tue was mit den Indexen }
Das zurückgegebene
SyncKey
-Objekt verhält sich wie einReentrantLock
, es ist also möglich, ein zweites Lock zu erhalten, wenn bereits ein Lock geholt wurde.Diese Methode verwendet dieselbe Synchronisierung wie die andere
lockIndex(IdDataIdentification)
-Überladung, bietet jedoch einfachere Nutzung, wenn einLockedContainerDirectory
benötigt wird, das zusätzlich die Datenart mit enthält.- Parameters:
containerFileDir
- Containerverzeichnis- Returns:
- LockedContainerDirectory
- Throws:
SynchronizationFailedException
- Synchronisierung ist fehlgeschlagen (Unterbrochen beim Warten)
-
getIndexCacheMaxSize
default int getIndexCacheMaxSize()Gibt die maximale Größe für Index-Caches zurück- Returns:
- Maximale Größe in Bytes
-
formatObj
Formatiert eine Objekt-ID. Diese Methode konvertiert die ID in einen String, kann jedoch überladen werden, wenn die Klasse eine bessere Ausgabe bereitstellen kann.- Parameters:
objId
- Objekt-ID- Returns:
- String-Ausgabe
-
formatContainerDirectory
Die Methode formatDataIdentification gibt eine Datenidentifikation als lesbaren String aus. Dabei wird in der RegelformatObj(long)
für die einzelnen Bestandteile aufgerufen.- Parameters:
location
- Containerverzeichnis-ID- Returns:
- String
-