Package de.bsvrz.ars.ars.persistence
Class DeletedContainerFile
java.lang.Object
de.bsvrz.ars.ars.persistence.DeletedContainerFile
public final class DeletedContainerFile
extends java.lang.Object
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 Classes Modifier and Type Class Description static class
DeletedContainerFile.IndexRange
Ein Datenindex-Bereich -
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DELETED_CONTAINER_FILENAME
Dateiname für Reguläte dateien für gelöschte Containerstatic java.lang.String
DELETED_CONTAINER_FILENAME_BACKUP
Dateiname für Temporäres Backup für die vorige Version der Dateistatic java.lang.String
DELETED_CONTAINER_FILENAME_TMP
Dateiname unter der die neue Datei geschrieben wird. -
Constructor Summary
Constructors Constructor Description DeletedContainerFile(IdContainerFileDir containerFileDir, PersistenceManager persistenceManager)
DeletedContainerFile(java.nio.file.Path adkPath, IdContainerFileDir containerFileDir)
Erstellt ein neues DeletedContainerFile ohne Inhalt. -
Method Summary
Modifier and Type Method Description void
addDeletedContainer(BasicContainerFileHandle existingContainer)
Fügt einen (gelöschten) Container hinzuvoid
addDeletedContainer(ContainerManagementData header, DataSequence data)
Fügt einen (gelöschten) Container hinzujava.util.Set<java.lang.Long>
containers()
Gibt eine Collction über alle Container in der Datei zurückDataIterator
dataIterator(long containerId)
Iteriert über die Daten eines gelöschten Containers.java.util.List<DeletedContainerFile.IndexRange>
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 existiertIdContainerFileDir
getContainerFileDir()
Gibt die Datenidentifikation zurückjava.nio.file.Path
getFile()
Gibt die Datei zurückContainerManagementData
headers(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.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
DELETED_CONTAINER_FILENAME
public static final java.lang.String DELETED_CONTAINER_FILENAMEDateiname für Reguläte dateien für gelöschte Container- See Also:
- Constant Field Values
-
DELETED_CONTAINER_FILENAME_TMP
public static final java.lang.String DELETED_CONTAINER_FILENAME_TMPDateiname unter der die neue Datei geschrieben wird. Sie wird erst nach "_deleted.dat" umbenannt, wenn sie erfolgreich komplett geschrieben wurde.- See Also:
- Constant Field Values
-
DELETED_CONTAINER_FILENAME_BACKUP
public static final java.lang.String DELETED_CONTAINER_FILENAME_BACKUPDateiname für Temporäres Backup für die vorige Version der Datei- See Also:
- Constant Field Values
-
-
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(IdContainerFileDir containerFileDir, PersistenceManager persistenceManager)
-
-
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, SynchronizationFailedExceptionFü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
-
addDeletedContainer
public void addDeletedContainer(ContainerManagementData header, DataSequence data) throws PersistenceException, SynchronizationFailedExceptionFügt einen (gelöschten) Container hinzu- Parameters:
header
- Container-Headerdata
- Container-Daten- Throws:
PersistenceException
- Falls der Container nicht gelesen werden konnteSynchronizationFailedException
-
removeDeletedContainer
public void removeDeletedContainer(long containerID)Entfernt einen gelöschten Container aus der Datei (z. B. sinnvoll beim Wiederherstellen)- Parameters:
containerID
- Container-ID
-
dataIterator
public DataIterator dataIterator(long containerId) throws PersistenceException, SynchronizationFailedExceptionIteriert ü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.SynchronizationFailedException
-
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
public java.util.Set<java.lang.Long> containers()Gibt eine Collction über alle Container in der Datei zurück- Returns:
- Container-IDs
-
getContainerFileDir
Gibt die Datenidentifikation zurück- Returns:
- die Datenidentifikation
-
getFile
public java.nio.file.Path getFile()Gibt die Datei zurück- Returns:
- die Datei
-