public final class ContainerBackupIndex
extends java.lang.Object
Ein ContainerBackupIndex ist eine Klasse, die innerhalb einer Datenindentifikationsverzeichnisses speichert, welche Container in diesem Verzeichnis noch zu sichern sind, damit nicht jeder einzelne ContainerHeader geprüft werden muss.
Es wird eine Datei namens _backupindex.idx gespeichert, welche die eigentlichen Einträge enthält. Diese besteht aus einem Header-Bereich un einem Datenbereich, wobei der Datenbereich unterteilt ist, in sortierte Daten und unsortierte Daten. Zur Optimierung des Zugriffs, wird, falls es notwendig wird, der komplette Datenbereich sortiert.
Als Daten enthält ein ContainerBackupIndex ContainerIDs mit einem zugehörigen Byte-Wert, der den Status dieses Container-Eintrags angibt (sichern oder ungültig). Sichern bedeutet, dass der Container gesichert wird. Ungültig bedeutet, dass ein Eintrag ungültig ist. Ein Eintrag wird typischerweise als ungültig markiert, wenn der entsprechende Container gesichert wurde, um diesen nicht erneut zu sichern. Einen Eintrag als ungültig zu markieren ist performancemäßig sinnvoller, als ständig den gesamten Datenbereich neu zu schreiben um eventuelle Lücken zu schließen.
Modifier and Type | Class and Description |
---|---|
private static class |
ContainerBackupIndex.ContainerBackupIndexImplementation
Eigentliche Implementierung des ContainerBackupIndex. wird von der
ContainerBackupIndex -Klasse gekapselt um einen sicheren Referenzzähler zu ermöglichen. |
Modifier and Type | Field and Description |
---|---|
private static Debug |
_debug |
private ContainerBackupIndex.ContainerBackupIndexImplementation |
_impl |
private java.lang.Object |
_implLock |
private boolean |
_isOpened |
static java.lang.String |
BACKUP_INDEX_FILE_NAME
Dateiname unter dem der Index gespchert wird
|
static int |
MEDIUM_ID_UNKNOWN
Maximale MedienID unbekannt
|
static int |
MEDIUM_ID_UNSAVED
Datenidentifikation wurde noch nie gesichert
|
Modifier | Constructor and Description |
---|---|
private |
ContainerBackupIndex(ContainerBackupIndex.ContainerBackupIndexImplementation implementation)
Erstellt mit der angebenden ContainerBackupIndexImplementation einen neuen ContainerBackupIndex.
|
Modifier and Type | Method and Description |
---|---|
void |
appendContainerID(long containerID)
Fügt dem Index eine ContainerID hinzu
|
void |
close()
Schließt diesen ContainerBackupIndex.
|
boolean |
containsContainerID(long containerID)
Gibt zurück, ob eine Container-ID im Index enthalten ist
|
static ContainerBackupIndex |
createNewContainerBackupIndex(java.io.File path)
Erstellt einen neuen, leeren ContainerBackupIndex im angegebenen Verzeichnis.
|
static boolean |
deleteContainerBackupIndex(java.io.File path)
Löscht den ContainerBackupIndex im angebenden Verzeichnis
|
static boolean |
existsIn(java.io.File path)
Prüft ob im angebenden Verzeichnis ein ContainerBackupIndex existiert
|
static boolean |
existsIn(java.lang.String path)
Prüft ob im angebenden Verzeichnis ein ContainerBackupIndex existiert
|
protected void |
finalize() |
static ContainerBackupIndex |
getContainerBackupIndex(java.io.File path)
Gibt einen ContainerBackupIndex aus einem angegebenen Verzeichnis zurück
|
static ContainerBackupIndex |
getContainerBackupIndex(java.lang.String path)
Gibt einen ContainerBackupIndex aus einem angegebenen Verzeichnis zurück
|
java.util.List<java.lang.Long> |
getContainerIDs()
Gibt alle zu sichernden ContainerIDs im Index zurück
|
int |
getMaxMedienID()
Gibt die in der ContainerBackupIndex-Datei maximal gespeicherte MedienID zurück.
|
boolean |
removeContainerID(long containerID)
Entfernt eine ContainerID aus dem Index
|
boolean |
removeContainerID(long containerID,
int mediumID)
Entfernt eine ContainerID aus dem Index
|
void |
setMaxMedienID(int mediumID)
Setzt die MedienID auf einen festgelegten Wert (erlaubt auch das Zurücksetzen oder das Setzen von
MEDIUM_ID_UNSAVED bzw. |
java.lang.String |
toString() |
public static final int MEDIUM_ID_UNKNOWN
Maximale MedienID unbekannt
public static final int MEDIUM_ID_UNSAVED
Datenidentifikation wurde noch nie gesichert
public static final java.lang.String BACKUP_INDEX_FILE_NAME
Dateiname unter dem der Index gespchert wird
private static final Debug _debug
private final ContainerBackupIndex.ContainerBackupIndexImplementation _impl
private final java.lang.Object _implLock
private boolean _isOpened
private ContainerBackupIndex(ContainerBackupIndex.ContainerBackupIndexImplementation implementation)
Erstellt mit der angebenden ContainerBackupIndexImplementation einen neuen ContainerBackupIndex.
implementation
- Implementationpublic static ContainerBackupIndex getContainerBackupIndex(java.io.File path)
Gibt einen ContainerBackupIndex aus einem angegebenen Verzeichnis zurück
path
- Verzeichnispublic static ContainerBackupIndex getContainerBackupIndex(java.lang.String path) throws java.io.IOException
Gibt einen ContainerBackupIndex aus einem angegebenen Verzeichnis zurück
path
- Verzeichnisjava.io.IOException
- IO-Fehlerpublic static ContainerBackupIndex createNewContainerBackupIndex(java.io.File path) throws java.io.IOException
Erstellt einen neuen, leeren ContainerBackupIndex im angegebenen Verzeichnis. Ein eventuell bereits vorhandener wird überschrieben.
path
- Verzeichnisjava.io.IOException
- IO-Fehlerpublic static boolean deleteContainerBackupIndex(java.io.File path)
Löscht den ContainerBackupIndex im angebenden Verzeichnis
path
- Verzeichnispublic static boolean existsIn(java.io.File path)
Prüft ob im angebenden Verzeichnis ein ContainerBackupIndex existiert
path
- Verzeichnispublic static boolean existsIn(java.lang.String path)
Prüft ob im angebenden Verzeichnis ein ContainerBackupIndex existiert
path
- Verzeichnispublic java.util.List<java.lang.Long> getContainerIDs() throws java.io.IOException
Gibt alle zu sichernden ContainerIDs im Index zurück
java.io.IOException
- IO-Fehlerjava.lang.IllegalStateException
- Falls Index bereits geschlossen wurdepublic boolean removeContainerID(long containerID) throws java.io.IOException
Entfernt eine ContainerID aus dem Index
containerID
- ContainerID die zu entfernen ist.java.io.IOException
- IO-Fehlerjava.lang.IllegalStateException
- Falls Index bereits geschlossen wurdepublic boolean removeContainerID(long containerID, int mediumID) throws java.io.IOException
Entfernt eine ContainerID aus dem Index
containerID
- ContainerID die zu entfernen ist.mediumID
- Beim sichern eines Containers kann eine MediumID mit angegeben werden, die dann im Index vermerkt wird. Wird nur berücksichtigt, wenn es sich um eine positive Zahl handelt und nicht bereits eine größere MedienID in der Datei vorhanden istjava.io.IOException
- IO-Fehlerjava.lang.IllegalStateException
- Falls Index bereits geschlossen wurdepublic boolean containsContainerID(long containerID) throws java.io.IOException
Gibt zurück, ob eine Container-ID im Index enthalten ist
containerID
- ContainerID die zu entfernen ist.java.io.IOException
- IO-Fehlerpublic void appendContainerID(long containerID) throws java.io.IOException
Fügt dem Index eine ContainerID hinzu
containerID
- ContainerID die einzufügen istjava.io.IOException
- IO-Fehlerjava.lang.IllegalStateException
- Falls Index bereits geschlossen wurdepublic int getMaxMedienID() throws java.io.IOException
Gibt die in der ContainerBackupIndex-Datei maximal gespeicherte MedienID zurück.
java.io.IOException
- IO-Fehlerpublic void setMaxMedienID(int mediumID) throws java.io.IOException
Setzt die MedienID auf einen festgelegten Wert (erlaubt auch das Zurücksetzen oder das Setzen von MEDIUM_ID_UNSAVED
bzw. MEDIUM_ID_UNKNOWN
mediumID
- MedienIDjava.io.IOException
- IO-Fehlerpublic void close()
Schließt diesen ContainerBackupIndex. Muss immer nach Benutzung aufgerufen werden um kein mögliches Speicherleck zu verursachen
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public java.lang.String toString()
toString
in class java.lang.Object