public class RequestGapTask extends SingleClientSenderTask
Task zur Nachforderung fehlender Archivdaten aus anderen Archivsystemen gemaess Parametrierung.
Modifier and Type | Class and Description |
---|---|
class |
RequestGapTask.GapFile
Diese Klasse speichert nicht schliessbare Datenluecken in einer Datei im Verzeichnis der Datenidentifikation in der Form 10-20
|
static class |
RequestGapTask.GapMarker
Speichert pro Archivsystem die Luecken, die von diesem nicht geschlossen werden konnten.
|
static class |
RequestGapTask.RequestGapResultData
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 unterscheieden
|
private class |
RequestGapTask.RequestGapWorker |
Modifier and Type | Field and Description |
---|---|
private ArchiveDataSpecification[] |
archDataSpecs |
private java.util.List<SystemObject> |
archiveList |
private ArchiveTimeSpecification |
archTimeSpec
Zeitspezifikation, die beim Nachfordern verwendet werden soll oder
null , falls keine Einschränkung berücksichtigt werden soll. |
private java.util.concurrent.Semaphore |
finishedSema |
private static java.lang.String |
GAP_ARCH_SEPARATOR |
static java.lang.String |
GAP_FILE_NAME
Dateiname der Datenluecken-Datei.
|
private static java.lang.String |
GAP_IDX_SEPARATOR |
private static java.lang.String |
GAP_KEYWORD |
private static java.util.regex.Pattern |
GAP_PAT |
static int |
REQUEST_GAP_THREADS
Anzahl der Threads zum Nachfordern fehlender Archivdaten.
|
static ArchiveQueryPriority |
REQUEST_PRIO
Prioritaet der Nachforserungsanfragen.
|
private static ArchiveDataKindCombination |
requestAdk |
private RequestGapTask.RequestGapWorker[] |
requester |
private static RequestGapTask.RequestGapResultData |
requestGapResultData |
private java.util.concurrent.atomic.AtomicInteger |
totalGapsFound |
atgQuery, ddResponse, deserializer, queryAppObj, queryIdx, SENDCONTROL_TIMEOUT, serializerVersion, syncObj
TERMINATE_TASK
_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgr
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
Constructor and Description |
---|
RequestGapTask(ArchiveManager archiveMgr,
java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
Erzeugt einen neuen Task zur Nachforderung fehlender Archivdaten.
|
Modifier and Type | Method and Description |
---|---|
static RequestGapTask.RequestGapResultData |
getRequestGapResultData()
Liefert den Nachforderungsanfrage-Datensatz.
|
private java.util.List<SystemObject> |
parseArchiveList(Deserializer ds)
Extrahiert die Liste der Archivsysteme, bei denen nachgefordert werden soll.
|
private void |
performRequest()
Erzeugt eine Anzahl (
REQUEST_GAP_THREADS ) von #RequestGapTask(ArchiveManager, RingOfDeathListener, RingBuffer) - Objekten, die die Nachforderung durchführen. |
void |
terminateTask()
Beendet den Nachforderungs-Task.
|
protected void |
work(ResultData resultData)
Startet das automatische oder manuelle Nachfordern entsprechend dem uebergebenen Nachforderungs-Datensatz.
|
dataRequest, getObjectsFromDav, init, insertData, isRequestSupported, parseArchiveDataSpec, sendErrorResponse, sendErrorResponse, sendSuccessResponse, sendSuccessResponse, subscribeSender, unsubscribeSender
execute
addTaskStepListener, cleanUp, getArchMgr, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, shouldTerminate, start, suspendTaskIfNecessary, taskStepDone
public static java.lang.String GAP_FILE_NAME
Dateiname der Datenluecken-Datei.
public static int REQUEST_GAP_THREADS
Anzahl der Threads zum Nachfordern fehlender Archivdaten.
public static ArchiveQueryPriority REQUEST_PRIO
Prioritaet der Nachforserungsanfragen.
private static java.lang.String GAP_KEYWORD
private static java.lang.String GAP_IDX_SEPARATOR
private static java.lang.String GAP_ARCH_SEPARATOR
private static java.util.regex.Pattern GAP_PAT
private static ArchiveDataKindCombination requestAdk
private static RequestGapTask.RequestGapResultData requestGapResultData
private RequestGapTask.RequestGapWorker[] requester
private java.util.concurrent.Semaphore finishedSema
private ArchiveDataSpecification[] archDataSpecs
private java.util.List<SystemObject> archiveList
private java.util.concurrent.atomic.AtomicInteger totalGapsFound
private ArchiveTimeSpecification archTimeSpec
Zeitspezifikation, die beim Nachfordern verwendet werden soll oder null
, falls keine Einschränkung berücksichtigt werden soll.
public RequestGapTask(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
Erzeugt einen neuen Task zur Nachforderung fehlender Archivdaten.
rodl
- Der Listener wird benachrichtigt beim Beenden der Task.archiveMgr
- Der Archiv-Manager.inputData
- Eingangswarteschlangepublic static RequestGapTask.RequestGapResultData getRequestGapResultData()
Liefert den Nachforderungsanfrage-Datensatz.
protected void work(ResultData resultData)
Startet das automatische oder manuelle Nachfordern entsprechend dem uebergebenen Nachforderungs-Datensatz.
work
in class QueueTask<ResultData>
resultData
- Nachforderungs-Datensatz.private java.util.List<SystemObject> parseArchiveList(Deserializer ds) throws java.lang.Exception
Extrahiert die Liste der Archivsysteme, bei denen nachgefordert werden soll. Der Deserialisierer muss genau vor dem Laengenbyte der Liste stehen. Doppelte EIntraege werden gefiltert, Nachfordern bei sich selbst ebenso.
ds
- java.io.IOException
java.lang.Exception
private void performRequest() throws java.lang.Exception
Erzeugt eine Anzahl (REQUEST_GAP_THREADS
) von #RequestGapTask(ArchiveManager, RingOfDeathListener, RingBuffer)
- Objekten, die die Nachforderung durchführen. Diese Methode wartet, bis alle Threads fertig sind.
java.lang.Exception
public void terminateTask()
Beendet den Nachforderungs-Task.
terminateTask
in class QueueTask<ResultData>