de.bsvrz.ars.ars.mgmt.tasks
Class LZVTask

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.LZVTask
All Implemented Interfaces:
SuspendableTask, ClientSenderInterface, Runnable

public class LZVTask
extends SingleClientSenderTask

Task zur Bearbeitung von Loeschzeit-Verlaengerungsauftraegen.

Author:
beck et al. projects GmbH, Christian Wied

Nested Class Summary
static class LZVTask.CapacityCheckResultData
           
private static class LZVTask.DELETE_LEVEL
          Für spontantes Löschen: 1.
static class LZVTask.DeleteRegularResultData
           
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
private  LongTermTaskStatePublisher.Task _longTermTaskStatePublisherTask
           
private static int CAPA_CHECK_RUNS
           
private static LZVTask.CapacityCheckResultData capacityCheckResultData
           
static long CHANGETIME_REGULAR
           
static long CHANGETIME_SPONTAN
           
private static LZVTask.DeleteRegularResultData deleteRegularResultData
           
private  byte[] indexMem
           
private static int MAX_TIMESHIFTING
          Um wieviele Monate maximal der Vorhaltezeitraum angepasst wird.
private static long MIN_REM_DSK_CAPA
           
private  int numOfDeletedCont
           
private  int numOfVisitedCont
           
 
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
LZVTask(ArchiveManager archiveMgr, RingOfDeathListener rodl, RingBuffer<ResultData> inputData, LongTermTaskStatePublisher longTermTaskStatePublisher)
          Erzeugt eine neue Loeschzeit-Verlaengerungs-Task.
 
Method Summary
(package private)  void changeDeletionTime(ResultData resultData)
          Prüft, welche Operation (Löschen, spontanes Löschen oder die Löschzeitverlängerung) ausgeführt werden soll, und führt diese dann durch.
(package private)  void checkAndDeleteContainerRegular(Task task, PersistenceManager persMgr)
          Prueft, ob der Container existiert.
Wenn ja, wird geprueft, ob der Container zu loeschen ist.
(package private)  void checkAndDeleteContainerSpontan(Task task, PersistenceManager persMgr, Calendar compareDate, LZVTask.DELETE_LEVEL level)
          Prueft, ob der Container existiert.
Wenn ja, wird geprueft, ob der Container zu loeschen ist.
(package private)  void containerWalk(ArchiveDataSpecification[] ads, long changeTime, Calendar compareDate, LZVTask.DELETE_LEVEL level)
          Die generelle Container-Walk-Methode.
private  void containerWalkAllFromDir(long changeTime, Calendar compareDate, LZVTask.DELETE_LEVEL level)
           
private  void containerWalkByArchiveDataSpec(ArchiveDataSpecification[] ads, long changeTime, Calendar compareDate, LZVTask.DELETE_LEVEL level)
           
protected  void deleteSpontan(ArchiveDataSpecification[] ads, long changeTime)
          Der DeleteSpontanTask löscht bei knapp werdendem Speicherplatz unwichtige Container.
static LZVTask.CapacityCheckResultData getCapacityCheckResultData(ArchiveManager archMgr)
           
static LZVTask.DeleteRegularResultData getDeleteRegularResultData(ArchiveManager archMgr)
           
static long getMinRemainingDiskCapa()
          Liefert die Mindest-Restkapazitaet der Festplatte.
private  void handleContainer(long changeTime, Calendar compareDate, LZVTask.DELETE_LEVEL level)
          Bearbeitet den individuellen Container.
(package private)  boolean hasToBeDeletedRegular(Task task, PersistenceManager persMgr)
          Prueft, ob das ContainerFile geloescht werden muss.
(package private)  boolean hasToBeDeletedSpontan(Task task, PersistenceManager persMgr, Calendar compareDate, LZVTask.DELETE_LEVEL level)
          Prueft, ob das ContainerFile geloescht werden muss.
 void run()
           
static void setMinRemainingDiskCapa(long minRemainingDiskCapa)
          Setzt die Mindest-Restkapazitaet der Festplatte.
protected  void work(ResultData resultData)
          Führt das Löschen, spontanes Löschen oder die Löschzeitverlängerung aus.
 
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

CAPA_CHECK_RUNS

private static int CAPA_CHECK_RUNS

CHANGETIME_SPONTAN

public static final long CHANGETIME_SPONTAN
See Also:
Constant Field Values

CHANGETIME_REGULAR

public static final long CHANGETIME_REGULAR
See Also:
Constant Field Values

MIN_REM_DSK_CAPA

private static long MIN_REM_DSK_CAPA

capacityCheckResultData

private static LZVTask.CapacityCheckResultData capacityCheckResultData

deleteRegularResultData

private static LZVTask.DeleteRegularResultData deleteRegularResultData

indexMem

private byte[] indexMem

numOfVisitedCont

private int numOfVisitedCont

numOfDeletedCont

private int numOfDeletedCont

_longTermTaskStatePublisherTask

private LongTermTaskStatePublisher.Task _longTermTaskStatePublisherTask

MAX_TIMESHIFTING

private static int MAX_TIMESHIFTING
Um wieviele Monate maximal der Vorhaltezeitraum angepasst wird.

Constructor Detail

LZVTask

public LZVTask(ArchiveManager archiveMgr,
               RingOfDeathListener rodl,
               RingBuffer<ResultData> inputData,
               LongTermTaskStatePublisher longTermTaskStatePublisher)
        throws ConfigurationException
Erzeugt eine neue Loeschzeit-Verlaengerungs-Task.

Parameters:
archiveMgr - Der Archiv-Manager.
rodl - Der Listener wird benachrichtigt beim Beenden der Task.
inputData - Eingangswarteschlange.
Throws:
ConfigurationException
Method Detail

run

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

getMinRemainingDiskCapa

public static long getMinRemainingDiskCapa()
Liefert die Mindest-Restkapazitaet der Festplatte.

Returns:
Mindestrestkapazitaet in Byte

setMinRemainingDiskCapa

public static void setMinRemainingDiskCapa(long minRemainingDiskCapa)
Setzt die Mindest-Restkapazitaet der Festplatte.

Parameters:
minRemainingDiskCapa - Neue Mindestrestkapazitaet in Byte.

work

protected void work(ResultData resultData)
Führt das Löschen, spontanes Löschen oder die Löschzeitverlängerung aus.

Specified by:
work in class SingleTask
Parameters:
resultData - Zu verarbeitender Datensatz aus der Eingangswarteschlange
See Also:
SingleTask.work(ResultData)

changeDeletionTime

void changeDeletionTime(ResultData resultData)
                  throws Exception
Prüft, welche Operation (Löschen, spontanes Löschen oder die Löschzeitverlängerung) ausgeführt werden soll, und führt diese dann durch.

Parameters:
resultData - Datensatz mit Informationen über den Auftrag
Throws:
Exception - Fehler

deleteSpontan

protected void deleteSpontan(ArchiveDataSpecification[] ads,
                             long changeTime)
                      throws Exception
Der DeleteSpontanTask löscht bei knapp werdendem Speicherplatz unwichtige Container.

Dazu ueberprueft er in einem parametrierbaren Zyklus, wieviel Speicherplatz dem Archivsystem noch zur Verfuegung steht. Erreicht die vorhandene Kapazität einen Schwellwert, werden folgende Daten geloescht:

Throws:
Exception

containerWalk

void containerWalk(ArchiveDataSpecification[] ads,
                   long changeTime,
                   Calendar compareDate,
                   LZVTask.DELETE_LEVEL level)
             throws Exception
Die generelle Container-Walk-Methode.

Je nachdem, ob die ArchiveDataSpec gefuellt ist oder nicht, wird ein ContainerWalk über das komplette Persistenz-Verzeichnis (containerWalkAllFromDir) oder alle spezifizierten Container (containerWalkAllByDataSpec) ausgeführt.

Achtung!
Die Methode löscht je nach übergebenen Parametern Archivdaten!

Parameters:
ads -
changeTime -
compareDate -
Throws:
PersistenceException
IndexException
Exception

containerWalkAllFromDir

private void containerWalkAllFromDir(long changeTime,
                                     Calendar compareDate,
                                     LZVTask.DELETE_LEVEL level)
                              throws Exception
Throws:
Exception

containerWalkByArchiveDataSpec

private void containerWalkByArchiveDataSpec(ArchiveDataSpecification[] ads,
                                            long changeTime,
                                            Calendar compareDate,
                                            LZVTask.DELETE_LEVEL level)
                                     throws Exception
Throws:
Exception

handleContainer

private void handleContainer(long changeTime,
                             Calendar compareDate,
                             LZVTask.DELETE_LEVEL level)
                      throws PersistenceException
Bearbeitet den individuellen Container.

Führt Fallunterscheidung auf der changeTime aus und ruft die 3 Loesch-Methoden auf.

Parameters:
changeTime -
compareDate -
Throws:
PersistenceException

checkAndDeleteContainerSpontan

void checkAndDeleteContainerSpontan(Task task,
                                    PersistenceManager persMgr,
                                    Calendar compareDate,
                                    LZVTask.DELETE_LEVEL level)
                              throws PersistenceException
Prueft, ob der Container existiert.
Wenn ja, wird geprueft, ob der Container zu loeschen ist.
Wenn ja, wird der Container geloescht.

Parameters:
compareDate -
Throws:
PersistenceException

hasToBeDeletedSpontan

boolean hasToBeDeletedSpontan(Task task,
                              PersistenceManager persMgr,
                              Calendar compareDate,
                              LZVTask.DELETE_LEVEL level)
                        throws PersistenceException
Prueft, ob das ContainerFile geloescht werden muss. Folgende Faktoren werden betrachtet:

Parameters:
compareDate -
Returns:
boolean
Throws:
PersistenceException

checkAndDeleteContainerRegular

void checkAndDeleteContainerRegular(Task task,
                                    PersistenceManager persMgr)
                              throws PersistenceException
Prueft, ob der Container existiert.
Wenn ja, wird geprueft, ob der Container zu loeschen ist.
Wenn ja, wird der Container geloescht.

Throws:
PersistenceException

hasToBeDeletedRegular

boolean hasToBeDeletedRegular(Task task,
                              PersistenceManager persMgr)
                        throws PersistenceException
Prueft, ob das ContainerFile geloescht werden muss.

Returns:
boolean
Throws:
PersistenceException

getCapacityCheckResultData

public static LZVTask.CapacityCheckResultData getCapacityCheckResultData(ArchiveManager archMgr)

getDeleteRegularResultData

public static LZVTask.DeleteRegularResultData getDeleteRegularResultData(ArchiveManager archMgr)