|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.ars.ars.repair.ContainerRescue
public class ContainerRescue
Hilfsprogramm, mit dem es möglich ist, Container-Dateien des Archivsystems, in denen bestimmte Defekte vorliegen zu identifizieren und zu korrigieren. Das Programm durchsucht in einem vorgegebenen Verzeichnis und auf Wunsch auch rekursiv in allen Unterverzeichnisse nach Container-Dateien und führt Prüfungen auf bestimmte Defekte durch, die durch Fehler in älteren Versionen des Archivsystems ausgelöst wurden. Defekte Containerdateien werden durch eine entsprechende Ausgabe identifiziert und auf Wunsch wenn möglich auch korrigiert.
Das Programm unterstützt folgende Aufrufparameter: -verzeichnis=... -rekursiv=ja|nein -reparieren=nein|ja -index=nein|ja -container=nein|ja Mit-verzeichnis=...
kann ein beliebiges Verzeichnis angegeben werden, in dem Containerdateien gesucht werden. Defaultwert ist das aktuelle
Arbeitsverzeichnis in dem das Programm gestartet wurde.
Mit -rekursiv=ja|nein
kann spezifiziert werden, ob auch Unterverzeichnisse des Ausgangsverzeichnisses rekursiv durchsucht werden sollen oder
nicht. Ohne Angabe dieses Arguments werden auch Unterverzeichnisse rekursiv durchsucht.
Mit -reparieren=nein|ja
kann spezifiziert werden, ob fehlerhafte Dateien nur identifiziert werden sollen oder ob sie auch repariert werden
sollen.
Mit -index=ja|nein
kann spezifiziert werden, ob Indexdateien überprüft werden
sollen.
Mit -container=ja|nein
kann spezifiziert werden, ob Containerdateien überprüft werden
sollen.
Nested Class Summary | |
---|---|
private static class |
ContainerRescue.Defect
|
Field Summary | |
---|---|
private List<ContainerRescue.Defect> |
_badIndexFiles
|
private List<ContainerRescue.Defect> |
_badRangeEndDefects
|
private List<ContainerRescue.Defect> |
_cantFix
|
private boolean |
_checkContainerFiles
|
private long |
_checkedContainerFileCount
|
private long |
_checkedIndexFileCount
|
private boolean |
_checkIndexFiles
|
private FilenameFilter |
_containerFilenameFilter
|
private Pattern |
_containerFilenamePattern
|
private long |
_correctedDefectCount
|
private long |
_defectContainerFileCount
|
private long |
_defectIndexFileCount
|
private FileFilter |
_directoryFileFilter
|
private boolean |
_fixDefects
|
private FilenameFilter |
_indexFilenameFilter
|
private Pattern |
_indexFilenamePattern
|
private List<ContainerRescue.Defect> |
_oneByteShortDefects
|
private boolean |
_recursiveScan
|
private File |
_startDirectory
|
private long |
_validContainerFileCount
|
private long |
_validIndexFileCount
|
Constructor Summary | |
---|---|
ContainerRescue(ArgumentList arguments)
|
Method Summary | |
---|---|
private void |
checkContainerFile(File containerFile)
|
private ContainerRescue.Defect |
checkDataIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse DataIndexIndex . |
private ContainerRescue.Defect |
checkDataTimeIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse DataTimeIndex . |
private ContainerRescue.Defect |
checkDIDIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse ATimeMonotoneIndex . |
private void |
checkIndexFile(File indexFile,
HashSet<Long> containerIDs)
|
private HashSet<Long> |
fileListToIdList(List<File> containerFiles)
|
private static void |
fixBadIndexFileDefect(ContainerRescue.Defect badIndexFileDefect)
|
private void |
fixBadRangeEndDefect(ContainerRescue.Defect defect)
Beim Löschen eines Containers, in dem als erster Datensatz ein Potentielle-Lücke-Datensatz enthalten ist, wird die optimierte Aufzählung der enthaltenen Datensatzindizes mit falschem Endwert (-9223372036854775808) des ersten Bereichs erzeugt. |
private void |
fixOneByteShortDefect(ContainerRescue.Defect defect)
Beim Löschen eines Containers mit der Methode ContainerFile.deleteContainerData() werden die in der Container-Datei enthaltenen Datensätze ersetzt durch eine optimierte Aufzählung der verwendeten Datensatzindizes. |
private ContainerRescue.Defect |
inspectContainerFile(File containerFile)
|
private ContainerRescue.Defect |
inspectIndexFile(File indexFile,
HashSet<Long> containerIDs)
|
static void |
main(String[] args)
|
private static long |
read5(RandomAccessFile raf)
|
private static long |
read6(RandomAccessFile raf)
|
private static void |
rebuildIndexFile(File fileName,
String indexKind)
|
private void |
scan(File directory)
|
private void |
start()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private File _startDirectory
private boolean _recursiveScan
private boolean _fixDefects
private boolean _checkContainerFiles
private boolean _checkIndexFiles
private final FilenameFilter _containerFilenameFilter
private Pattern _containerFilenamePattern
private final FilenameFilter _indexFilenameFilter
private Pattern _indexFilenamePattern
private FileFilter _directoryFileFilter
private List<ContainerRescue.Defect> _cantFix
private List<ContainerRescue.Defect> _oneByteShortDefects
private long _validContainerFileCount
private long _checkedContainerFileCount
private long _defectContainerFileCount
private long _validIndexFileCount
private long _checkedIndexFileCount
private long _defectIndexFileCount
private List<ContainerRescue.Defect> _badRangeEndDefects
private List<ContainerRescue.Defect> _badIndexFiles
private long _correctedDefectCount
Constructor Detail |
---|
public ContainerRescue(ArgumentList arguments)
Method Detail |
---|
public static void main(String[] args)
private void start()
private void scan(File directory)
private HashSet<Long> fileListToIdList(List<File> containerFiles)
private void checkIndexFile(File indexFile, HashSet<Long> containerIDs)
private ContainerRescue.Defect inspectIndexFile(File indexFile, HashSet<Long> containerIDs)
private ContainerRescue.Defect checkDIDIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
ATimeMonotoneIndex
. In dieser Klasse ist gefordert, dass die Archivzeit monoton und
die ContainerID streng monoton ueber alle Eintraege hinweg steigend sind.
raf
- Geöffnete DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.
IOException
- Eingabe-Ausgabe-Fehlerprivate ContainerRescue.Defect checkDataTimeIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
DataTimeIndex
. In dieser Klasse ist gefordert, dass die Einträge nach der minimalen
Datenzeit sortiert sind
raf
- Geöffente DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.
IOException
- Eingabe-Ausgabe-Fehlerprivate ContainerRescue.Defect checkDataIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
DataIndexIndex
. In dieser Klasse ist gefordert, dass die Einträge nach der
minimalen Datenzeit sortiert sind
raf
- Geöffente DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.
IOException
- Eingabe-Ausgabe-Fehlerprivate static long read5(RandomAccessFile raf) throws IOException
IOException
private static long read6(RandomAccessFile raf) throws IOException
IOException
private static void fixBadIndexFileDefect(ContainerRescue.Defect badIndexFileDefect)
private static void rebuildIndexFile(File fileName, String indexKind) throws IOException, IndexException, PersistenceException
IOException
IndexException
PersistenceException
private void checkContainerFile(File containerFile)
private ContainerRescue.Defect inspectContainerFile(File containerFile)
private void fixOneByteShortDefect(ContainerRescue.Defect defect)
defect
- Identifizierter Defekt einer Containerdateiprivate void fixBadRangeEndDefect(ContainerRescue.Defect defect)
defect
- Identifizierter Defekt einer Containerdatei
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |