Interface BackupImplementation

All Known Implementing Classes:
AbstractFileSystemBackup, BackupAdapter, FileSystemBackupImpl

public interface BackupImplementation
Eine Subklasse dieses Interfaces ist die Implementierung eines Backup-Moduls (Plugins). Eine Instanz dieser Klasse wird von BackupModule erzeugt.
  • Method Summary

    Modifier and Type Method Description
    boolean backupContainer​(int mediumID, Container containerData)
    Mit dieser Methode wird festgelegt, dass ein Container auf dem angegebenen und vorher geöffneten Medium zu speichern ist.
    void closeMediumAfterBackup​(int mediumID, java.io.File indexFile)
    Sobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, wird der aktuelle Backup-Lauf auf diesem Medium mit dieser Methode abgeschlossen.
    static int estimateIndexSize​(int countSavedContainers)
    Schätzt die Indexgröße für eine angegebene Zahl Einträge.
    java.util.List<java.lang.String> getAllContFileNames​(Task task, int mediumID)
    Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.
    void openMediumBeforeBackup​(int mediumID, java.lang.String backupRunID)
    Diese Methode wird aufgerufen, bevor der erste Container auf dem Medium gesichert wird.
    java.io.InputStream restoreContainer​(int mediumID, java.lang.String contFileName)
    Mit dieser Methode wird ein InputStream der Containerdaten des Containers mit Namen contFile auf dem Medium mediumID erzeugt.
  • Method Details

    • openMediumBeforeBackup

      void openMediumBeforeBackup​(int mediumID, java.lang.String backupRunID) throws BackupException
      Diese Methode wird aufgerufen, bevor der erste Container auf dem Medium gesichert wird. Mit dem Parameter backupRunID können mehrere Backup-Läufe, die dasselbe Medium verwenden, unterschieden werden. Laut Spezifikation in [TanfArS] kann es im Regelfall nicht auftreten, dass ein Container mehrmals auf demselben Medium abgelegt ist, weil bereits gesicherte Container kein zweites mal gesichert werden. Es ist dennoch notwendig ein Verhalten für diesen Fall vorzugeben. Beim Wiederherstellen eines Containers wird daher der Container des Mediums verwendet, der unter der alphabetisch größten backupRunID abgelegt wurde.
      Parameters:
      mediumID - ID des Mediums
      backupRunID - Zur Identifizierung des Sicherungslaufs falls mehrere Sicherungsläufe auf einem Medium sind. Bei der Wiederherstellung eines Containers werden die Sicherungsläufe von der alphabetisch letzten backupRunID beginnend bis zur alphabetisch ersten backupRunID nach dem angeforderten Container durchsucht.
      Throws:
      BackupException - Die Implementierung kann bei Schreibfehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
    • backupContainer

      boolean backupContainer​(int mediumID, Container containerData) throws BackupException
      Mit dieser Methode wird festgelegt, dass ein Container auf dem angegebenen und vorher geöffneten Medium zu speichern ist. Ob dies sofort geschieht oder später ist Sache der Implementierung. Das BackupModul kann den Parameter containerData verwenden, um z.B. die Container-Dateien zu sortieren oder um Hilfsdatenstrukturen für einen schnellen Zugriff anzulegen. Diese Methode sollte true zurück geben, wenn der Container erfolgreich auf dem Container ergänzt wurde, oder false wenn er nicht mehr auf das Medium passt. In dem Fall wird der BackupTask das Medium schließen, das nächste Medium mit openMediumBeforeBackup(int, String) öffnen/anlegen und dann diese Methode mit dem gleichen Container erneut aufrufen.
      Parameters:
      mediumID - Medien-ID, auf die der Container gesichert werden soll. Sofern die Medien-Id in openMediumBeforeBackup(int, String) gemerkt wurde oder die Container alle in closeMediumAfterBackup(int, File) gesichert werden, kann dieser Parameter möglicherweise ignoriert werden.
      containerData - Klasse, mit der man Infos über den Container abrufen kann, sowie eine Methode für die eigentliche Kopier-Aktion. Das Objekt kann zwischengespeichert werden, bis das Medium in closeMediumAfterBackup(int, File) abgeschlossen wird. Danach sind die enthaltenen Informationen möglicherweise ungültig.
      Returns:
      true wenn der Container noch auf das Medium gepasst hat, sonst false
      Throws:
      BackupException - Die Implementierung kann bei Schreibfehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
    • closeMediumAfterBackup

      void closeMediumAfterBackup​(int mediumID, java.io.File indexFile) throws BackupException
      Sobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, wird der aktuelle Backup-Lauf auf diesem Medium mit dieser Methode abgeschlossen. Der Parameter übergibt eine Indexdatei, die alle ContainerIDs enthält, die im aktuellen Backup-Lauf auf diesem Medium gesichert wurden. Diese Datei wird auf dem Medium gespeichert. Die weiteren Aufgaben, die einzelne Implementierungen der Schnittstelle hier zu erfüllen haben, sind unterschiedlich. Module, die sofort auf ein Medium schreiben können (Wechselplatten) erfordern keine weiteren Schritte. Für Medien wie DVDs wird in dieser Methode aus den gesammelten Containern ein Image erstellt und auf die DVD gebrannt; bei Keydox wird ein Logout ausgeführt.
      Parameters:
      mediumID - Medien-ID
      indexFile - Indexdatei, die die ContainerIDs enthält
      Throws:
      BackupException - Die Implementierung kann bei Schreibfehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
    • restoreContainer

      java.io.InputStream restoreContainer​(int mediumID, java.lang.String contFileName) throws BackupException
      Mit dieser Methode wird ein InputStream der Containerdaten des Containers mit Namen contFile auf dem Medium mediumID erzeugt. Der BackupManager kopiert die Daten je nach Vorgang ganz oder teilweise in das Archivsystem oder in ein temporäres Verzeichnis. Diese Methode wird zum Wiederherstellen eines Containers, zum Abgleich/Wiederherstellung der Verwaltungsinformation und zur Verifikation verwendet.
      Parameters:
      mediumID - Medien-ID
      contFileName - Dateiname des wiederherzustellenden Containers
      Returns:
      InputStream
      Throws:
      BackupException - Die Implementierung kann bei Lesefehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
    • getAllContFileNames

      java.util.List<java.lang.String> getAllContFileNames​(Task task, int mediumID) throws BackupException
      Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.

      Wird für den Abgleich von Verwaltungsinformationen (HeaderRestoreTask) benoetigt.

      Parameters:
      task - Wird zum Anhalten des Backups benötigt, falls das Archivsystem in einen kritischen Bereich eintritt.
      mediumID - MedienId des Mediums.
      Returns:
      Liste mit den Filenames der Container.
      Throws:
      BackupException - Die Implementierung kann bei Lesefehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
    • estimateIndexSize

      static int estimateIndexSize​(int countSavedContainers)
      Schätzt die Indexgröße für eine angegebene Zahl Einträge. Wird gebraucht um festzustellen, ob noch genug Platz für einen Container + Index auf einem Medium ist
      Parameters:
      countSavedContainers - Anzahl der Container
      Returns:
      Byte-Anzahl die der Index maximal brauchen wird.