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 TypeMethodDescriptionvoid
appendSerializedData
(ArchiveDataSerializer serializer) Haengt den bereits übergebenen und serialisierten Datensatz an die aktuelle Container-Datei an.void
Erzeugt eine neue Container-Datei für den mit spezifizierten Container.boolean
Prüft ob bereits eine Container-Datei existiert.long
Ermittelt die Gesamtlänge des mitaccessContainer()
- im Zugriff befindlichen Containers.void
setContainerHeaderParam
(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.void
setContainerHeaderParam
(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.void
Die mitsetContainerHeaderParam(KeyValParam, String)
gesetzten Parameter werden im Container-Header persistiert.Methods inherited from class de.bsvrz.ars.ars.persistence.BasicContainerFileHandle
getLocation
Methods 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-Knoten
zum 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
-