Interface DataIdentificationManager

All Known Subinterfaces:
ContainerCreator
All Known Implementing Classes:
PersistenceManager

public interface DataIdentificationManager
Interface für Objekte, die den Zugriff auf Datenidentifikationen erlauben.
  • 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

      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 ein ReentrantLock, 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 ein ReentrantLock, 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 ein LockedContainerDirectory 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

      default String formatObj(long objId)
      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

      @NotNull default String formatContainerDirectory(ContainerDirectory location)
      Die Methode formatDataIdentification gibt eine Datenidentifikation als lesbaren String aus. Dabei wird in der Regel formatObj(long) für die einzelnen Bestandteile aufgerufen.
      Parameters:
      location - Containerverzeichnis-ID
      Returns:
      String