Package de.bsvrz.ars.ars.persistence
Class ContainerFileHandle
java.lang.Object
de.bsvrz.ars.ars.persistence.StandaloneContainerFileHandle
de.bsvrz.ars.ars.persistence.BasicContainerFileHandle
de.bsvrz.ars.ars.persistence.ContainerFileHandle
- All Implemented Interfaces:
ContainerManagementData,DataSequence,AutoCloseable
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 Summary
ConstructorsConstructorDescriptionContainerFileHandle(ContainerDirectory containerDirectory, long containerId, boolean readonly, PersistenceDirectoryLayoutInstance persistenceDirectoryLayoutInstance) Erstellt eine neue Instanz zum Zugriff auf die Containerdatei -
Method Summary
Modifier and TypeMethodDescriptionvoidappendSerializedData(ArchiveDataSerializer serializer) Haengt den bereits übergebenen und serialisierten Datensatz an die aktuelle Container-Datei an.voidErzeugt eine neue Container-Datei für den mit spezifizierten Container.booleanPrüft ob bereits eine Container-Datei existiert.longErmittelt die Gesamtlänge des mitaccessContainer()- im Zugriff befindlichen Containers.voidsetContainerHeaderParam(KeyValParam param, long val) Nachdem mitStandaloneContainerFileHandle.readContainerHeader()der Header einer Container-Datei eingelesen worden ist, kann mit dieser Methode der Wert eines numerischen Parameters im Container-Header geändert werden.voidsetContainerHeaderParam(KeyValParam param, String val) Nachdem mitStandaloneContainerFileHandle.readContainerHeader()der Header einer Container-Datei eingelesen worden ist, kann mit dieser Methode der Wert eines Parameters im Container-Header geändert werden.voidDie mitsetContainerHeaderParam(KeyValParam, String)gesetzten Parameter werden im Container-Header persistiert.Methods inherited from class de.bsvrz.ars.ars.persistence.BasicContainerFileHandle
getLocationMethods inherited from class de.bsvrz.ars.ars.persistence.StandaloneContainerFileHandle
close, ensureHeaderRead, getContainerFile, getContainerHeaderParamAsArchiveDataKind, getContainerHeaderParamAsBoolean, getContainerHeaderParamAsBoolean, getContainerHeaderParamAsInt, getContainerHeaderParamAsInt, getContainerHeaderParamAsLong, getContainerHeaderParamAsLong, getContainerHeaderParamAsString, getContainerHeaderParamAsString, getContainerId, getFile, getLocationFromHeader, isClosedInternal, isContainerClosed, iterator, leaveContainer, readContainerHeader, toString
-
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 ContainerdatenDatenidentifikations-Knotenzum synchronisierten Zugriff auf die DateicontainerId- Container-ID, die geöffnet werden sollreadonly- Schreibgeschützter Zugriff? (Benötigt weniger Synchronisierung)persistenceDirectoryLayoutInstance- Persistenzverzeichnis- Throws:
PersistenceException- Fehler beim Zugriff
-
-
Method Details
-
existsContainer
Prüft ob bereits eine Container-Datei existiert.- Returns:
- Kennzeichen
- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
createContainer
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
Nachdem mitStandaloneContainerFileHandle.readContainerHeader()der Header einer Container-Datei eingelesen worden ist, kann mit dieser Methode der Wert eines Parameters im Container-Header geändert werden. Wirft einePersistenceException, wenn die Änderung nicht durchgefuehrt werden kann.- Parameters:
param- Container-Header-Parameterval- Wert des Container-Header-Parameters- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
setContainerHeaderParam
Nachdem mitStandaloneContainerFileHandle.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 einePersistenceException, wenn die Änderung nicht durchgefuehrt werden kann.- Parameters:
param- Container-Header-Parameterval- Numerischer Wert des Container-Header-Parameters- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
writeContainerHeaderWithoutUpdatingIndex
Die mitsetContainerHeaderParam(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
Ermittelt die Gesamtlänge des mitaccessContainer()- im Zugriff befindlichen Containers.- Returns:
- Länge der Container-Datei
- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
appendSerializedData
Haengt den bereits übergebenen und serialisierten Datensatz an die aktuelle Container-Datei an.- Parameters:
serializer- Serialisierer- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-