Package de.bsvrz.ars.ars.persistence
Class DeletedContainerFile
java.lang.Object
de.bsvrz.ars.ars.persistence.DeletedContainerFile
Klasse, die den Zugriff auf die Datei bietet, die die Header und Datensatzindizes von gelöschten Containern enthält.
Soll eine vorhandene Datei eingelesen werden, muss nach dem Konstruktor read()
aufgerufen werden. Die Datei wird dabei so weit gelesen wie möglich.
Treten durch fehlerhafte Daten dabei Exceptions auf, enthält das DeletedContainerFile trotzdem alle Daten, die noch gelesen werden konnten, d.h. es hat einen konsistenten Zustand.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record
Ein Datenindex-Bereich -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDeletedContainerFile
(ContainerDirectory containerFileDir, PersistenceDirectory persistenceDirectory) Erstellt ein neues DeletedContainerFile ohne Inhalt.DeletedContainerFile
(Path adkPath, ContainerDirectory containerFileDir) Erstellt ein neues DeletedContainerFile ohne Inhalt. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addDeletedContainer
(BasicContainerFileHandle existingContainer) Fügt einen (gelöschten) Container hinzuvoid
addDeletedContainer
(ContainerManagementData header, DataSequence data) Fügt einen (gelöschten) Container hinzuGibt eine Collection über alle Container in der Datei zurückdataIterator
(long containerId) Iteriert über die Daten eines gelöschten Containers.deletedBlocks
(long containerId) Gibt die Liste mit monotonen Datenindexblöcken für den angegebenen gelöschten Container zurück.boolean
exists()
Gibttrue
zurück, wenn eien bestehende Datei existiertgetFile()
Gibt die Datei zurückheaders
(long containerId) Gibt die Container-Header eines gelöschten Containers zurückvoid
read()
Liest die bestehende Datei ein.void
removeDeletedContainer
(long containerID) Entfernt einen gelöschten Container aus der Datei (z.void
write()
Schreibt die aktuelle Datei.
-
Field Details
-
DELETED_CONTAINER_FILENAME
Dateiname für Reguläte dateien für gelöschte Container- See Also:
-
DELETED_CONTAINER_FILENAME_TMP
Dateiname unter der die neue Datei geschrieben wird. Sie wird erst nach "_deleted.dat" umbenannt, wenn sie erfolgreich komplett geschrieben wurde.- See Also:
-
DELETED_CONTAINER_FILENAME_BACKUP
Dateiname für temporäres Backup für die vorige Version der Datei- See Also:
-
-
Constructor Details
-
DeletedContainerFile
Erstellt ein neues DeletedContainerFile ohne Inhalt. Soll die existierende Datei (falls vorhanden) gelesen werden mussread()
aufgerufen werden.- Parameters:
adkPath
- Pfad der Archivdatenart (Verzeichnis, in dem Containerdateien angelegt werden)containerFileDir
- Datenidentifikation (Wird später beim Iterator benutzt, um die Datenidentifikation an den Daten zurückzugeben)
-
DeletedContainerFile
public DeletedContainerFile(ContainerDirectory containerFileDir, PersistenceDirectory persistenceDirectory) Erstellt ein neues DeletedContainerFile ohne Inhalt. Soll die existierende Datei (falls vorhanden) gelesen werden mussread()
aufgerufen werden.- Parameters:
containerFileDir
- Datenidentifikation (Wird später beim Iterator benutzt, um die Datenidentifikation an den Daten zurückzugeben)persistenceDirectory
- Persistenzverzeichnis
-
-
Method Details
-
exists
public boolean exists()Gibttrue
zurück, wenn eien bestehende Datei existiert- Returns:
true
, wenn eien bestehende Datei existiert, sonstfalse
-
read
Liest die bestehende Datei ein.- Throws:
PersistenceException
- Fehler in der Datei oder IO-Fehler
-
write
Schreibt die aktuelle Datei. Dabei wird der Inhalt in eine temporäre Datei geschreiben, die existierende Datei falls vorhanden weggeschoben, die temporäre Datei in den richtige Dateinamen umbenannt und ggf. dann bei Erfolg die vorher weg geschobene Datei gelöscht.Auf diese Weise ist die Datei, falls sie existiert, immer in einem konsistenten Zustand.
- Throws:
PersistenceException
- Lesefehler im Persistenzverzeichnis
-
addDeletedContainer
public void addDeletedContainer(BasicContainerFileHandle existingContainer) throws PersistenceException, SynchronizationFailedException Fügt einen (gelöschten) Container hinzu- Parameters:
existingContainer
- Container, der in die Datei eingetragen werden soll- Throws:
PersistenceException
- Falls der Container nicht gelesen werden konnteSynchronizationFailedException
- Fehler bei Synchronisierung
-
addDeletedContainer
public void addDeletedContainer(ContainerManagementData header, DataSequence data) throws PersistenceException, SynchronizationFailedException Fügt einen (gelöschten) Container hinzu- Parameters:
header
- Container-Headerdata
- Container-Daten- Throws:
PersistenceException
- Falls der Container nicht gelesen werden konnteSynchronizationFailedException
- Fehler bei Synchronisierung
-
removeDeletedContainer
public void removeDeletedContainer(long containerID) Entfernt einen gelöschten Container aus der Datei (z. B. sinnvoll beim Wiederherstellen)- Parameters:
containerID
- Container-ID
-
dataIterator
Iteriert über die Daten eines gelöschten Containers. Der Iterator enthält nur Werte für die folgenden Attribute: containerID, dataIndex, dataKind.- Parameters:
containerId
- Container-ID- Returns:
- DataIterator
- Throws:
PersistenceException
- Fehler beim elsen aus Datei oder angegebener Container ist nicht enthalten.
-
headers
Gibt die Container-Header eines gelöschten Containers zurück- Parameters:
containerId
- ID- Returns:
- Headers oder null (falls Container mit der ID nicht enthalten)
-
deletedBlocks
Gibt die Liste mit monotonen Datenindexblöcken für den angegebenen gelöschten Container zurück.- Parameters:
containerId
- Container-ID- Returns:
- Liste oder null (falls Container mit der ID nicht enthalten)
-
containers
Gibt eine Collection über alle Container in der Datei zurück- Returns:
- Container-IDs
-
getFile
Gibt die Datei zurück- Returns:
- die Datei
-