de.bsvrz.ars.ars.mgmt.tasks
Class BackupTask

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.ars.ars.mgmt.tasks.Task
          extended by de.bsvrz.ars.ars.mgmt.tasks.SingleTask
              extended by de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask
                  extended by de.bsvrz.ars.ars.mgmt.tasks.BackupTask
All Implemented Interfaces:
SuspendableTask, ClientSenderInterface, Runnable

public class BackupTask
extends SingleClientSenderTask

Task zur Durchführung eines Sicherungslaufs.

Author:
beck et al. projects GmbH, Alexander Schmidt

Nested Class Summary
static class BackupTask.BackupResultData
          Diese Klasse sieht aus wie ein ResultData, wird aber nur intern verwendet, um einen über den Scheduler angestoßenen Sicherungslauf von einem extern angestoßenen zu unterscheiden
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
static String INDEXFILE_NAME
          Name der Datei, in der alle Indexdaten des momentanen Mediums temporär abgelegt werden
 
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask
atgQuery, ddResponse, deserializer, queryAppObj, queryIdx, SENDCONTROL_TIMEOUT, serializerVersion, syncObj
 
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
 
Constructor Summary
BackupTask(ArchiveManager archiveMgr, RingOfDeathListener rodl, RingBuffer<ResultData> inputData, LongTermTaskStatePublisher longTermTaskStatePublisher)
          Erstellt einen neuen BackupTask
 
Method Summary
 int estimateIndexSize(int countSavedContainers)
          Schätzt die Indexgröße für eine angegebene Zahl Einträge.
static BackupModul getBackupModul()
          Gibt das verwendete Backupmodul zurück
static BackupTask.BackupResultData getBackupResultData()
          Gibt einen BackupTask.BackupResultData-Dummy zurück
static List<Long> getContainerIDsToBackupStatic(File didDir, PersistenceManager persistenceManager, Task task)
          Ermittelt, welche Container in einem Verzeichnis gesichert werden sollen.
static int getLastUsedMediumID()
          Gibt die zuletzt verwendete MedienID zurück
 void run()
           
 void runBackup()
          Startet den Sicherungslauf
static void setBackupModul(String propertiesFile)
          Setzt das zu verwendende Backup-Modul.
static void setLastUsedMediumID(int mediumID)
          Setzt die zuletzt verwendete MedienID.
protected  void work(ResultData resultData)
          Diese Methode ist zu ueberschreiben, um die konkrete Aufgabe der Task zu implementieren.
 
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask
dataRequest, getObjectsFromDAV, init, isRequestSupported, parseArchiveDataSpec, sendErrorResponse, sendErrorResponse, sendSuccessResponse, sendSuccessResponse, subscribeSender, unsubscribeSender
 
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INDEXFILE_NAME

public static final String INDEXFILE_NAME
Name der Datei, in der alle Indexdaten des momentanen Mediums temporär abgelegt werden

See Also:
Constant Field Values
Constructor Detail

BackupTask

public BackupTask(ArchiveManager archiveMgr,
                  RingOfDeathListener rodl,
                  RingBuffer<ResultData> inputData,
                  LongTermTaskStatePublisher longTermTaskStatePublisher)
Erstellt einen neuen BackupTask

Parameters:
archiveMgr - Archivmanager
rodl - RingOfDeathListener
inputData - Eingangswarteschlange
longTermTaskStatePublisher - siehe LongTermTaskStatePublisher
Method Detail

run

public void run()
Specified by:
run in interface Runnable
Overrides:
run in class SingleTask
See Also:
Runnable.run()

work

protected void work(ResultData resultData)
Description copied from class: SingleTask
Diese Methode ist zu ueberschreiben, um die konkrete Aufgabe der Task zu implementieren. In der Methode soll keine weitere Warteschlangen-Synchronisation stattfinden.

Specified by:
work in class SingleTask
Parameters:
resultData - Zu verarbeitender Datensatz aus der Eingangswarteschlange

runBackup

public void runBackup()
               throws BackupException
Startet den Sicherungslauf

Throws:
BackupException - Fehler beim Backup

getContainerIDsToBackupStatic

public static List<Long> getContainerIDsToBackupStatic(File didDir,
                                                       PersistenceManager persistenceManager,
                                                       Task task)
                                                throws PersistenceException
Ermittelt, welche Container in einem Verzeichnis gesichert werden sollen. Wird statisch bereitgestellt, da auch an anderen Stellen gebraucht

Parameters:
didDir - Verzeichnis, welches geprüft wird
persistenceManager - PersistenceManager
task - Task
Returns:
Liste mit ContainerIDs
Throws:
PersistenceException - Fehler in der Persistenz

estimateIndexSize

public 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.

setBackupModul

public static void setBackupModul(String propertiesFile)
                           throws BackupException
Setzt das zu verwendende Backup-Modul.

Parameters:
propertiesFile - Datei in dem das zu verwendende Modul gespeichert ist.
Throws:
BackupException - Fehler beim Vorgang

getBackupModul

public static BackupModul getBackupModul()
Gibt das verwendete Backupmodul zurück

Returns:
das verwendete Backupmodul

getLastUsedMediumID

public static int getLastUsedMediumID()
Gibt die zuletzt verwendete MedienID zurück

Returns:
zuletzt verwendete MedienID

setLastUsedMediumID

public static void setLastUsedMediumID(int mediumID)
Setzt die zuletzt verwendete MedienID. Für nach nächste Backup wird der um 1 inkrementierte Wert verwendet

Parameters:
mediumID - zuletzt verwendete MedienID

getBackupResultData

public static BackupTask.BackupResultData getBackupResultData()
Gibt einen BackupTask.BackupResultData-Dummy zurück

Returns:
eine leere BackupResultData-Klasse die von ResultData erbt.