Class ContainerFileHandle

All Implemented Interfaces:
ContainerManagementData, DataSequence, AutoCloseable

public class ContainerFileHandle extends BasicContainerFileHandle
Klasse für den Zugriff auf eine Container-Datei. Diese Klasse implementiert ContainerManagementData um die Header-informationen aus der Container-Datei zu lesen und DataSequence zum Zugriff auf die Daten.

Außerdem implementiert die Klasse AutoCloseable um sicherzustellen, dass die Containerdatei zeitnah wieder geschlossen wird.

  • Constructor Details

    • ContainerFileHandle

      public ContainerFileHandle(@NotNull ContainerDirectory containerDirectory, long containerId, boolean readonly, @NotNull PersistenceDirectoryLayoutInstance persistenceDirectoryLayoutInstance) throws PersistenceException
      Erstellt eine neue Instanz zum Zugriff auf die Containerdatei
      Parameters:
      containerDirectory - Referenz auf die gelockte Datenidentifikation und Datenart für den Zugriff auf Containerdaten Datenidentifikations-Knoten zum synchronisierten Zugriff auf die Datei
      containerId - Container-ID, die geöffnet werden soll
      readonly - Schreibgeschützter Zugriff? (Benötigt weniger Synchronisierung)
      persistenceDirectoryLayoutInstance - Persistenzverzeichnis
      Throws:
      PersistenceException - Fehler beim Zugriff
  • Method Details

    • existsContainer

      public boolean existsContainer() throws PersistenceException
      Prüft ob bereits eine Container-Datei existiert.
      Returns:
      Kennzeichen
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • createContainer

      public void createContainer() throws PersistenceException
      Erzeugt eine neue Container-Datei für den mit spezifizierten Container. Schreibt den Container-Header und befuellt diesen mit den vorher gesetzten Parametern.
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • setContainerHeaderParam

      public void setContainerHeaderParam(KeyValParam param, String val) throws PersistenceException
      Nachdem mit StandaloneContainerFileHandle.readContainerHeader() der Header einer Container-Datei eingelesen worden ist, kann mit dieser Methode der Wert eines Parameters im Container-Header geändert werden. Wirft eine PersistenceException, wenn die Änderung nicht durchgefuehrt werden kann.
      Parameters:
      param - Container-Header-Parameter
      val - Wert des Container-Header-Parameters
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • setContainerHeaderParam

      public void setContainerHeaderParam(KeyValParam param, long val) throws PersistenceException
      Nachdem mit StandaloneContainerFileHandle.readContainerHeader() der Header einer Container-Datei eingelesen worden ist, kann mit dieser Methode der Wert eines numerischen Parameters im Container-Header geändert werden. Wirft eine PersistenceException, wenn die Änderung nicht durchgefuehrt werden kann.
      Parameters:
      param - Container-Header-Parameter
      val - Numerischer Wert des Container-Header-Parameters
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • writeContainerHeaderWithoutUpdatingIndex

      public void writeContainerHeaderWithoutUpdatingIndex() throws PersistenceException
      Die mit setContainerHeaderParam(KeyValParam, String) gesetzten Parameter werden im Container-Header persistiert.

      Diese Methode aktualisiert den Verwaltungsdatenindex nicht und kann z. B. benutzt werden, währen ein Container repariert wird bevor der Index aufgebaut ist.

      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • getContainerSize

      public long getContainerSize() throws PersistenceException
      Ermittelt die Gesamtlänge des mit accessContainer()- im Zugriff befindlichen Containers.
      Returns:
      Länge der Container-Datei
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • appendSerializedData

      public void appendSerializedData(ArchiveDataSerializer serializer) throws PersistenceException
      Haengt den bereits übergebenen und serialisierten Datensatz an die aktuelle Container-Datei an.
      Parameters:
      serializer - Serialisierer
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis