de.bsvrz.dav.daf.main.impl.archive.request
Class StreamedArchiveRequester

java.lang.Object
  extended by de.bsvrz.dav.daf.main.impl.archive.request.StreamedArchiveRequester
All Implemented Interfaces:
ArchiveRequestManager

public class StreamedArchiveRequester
extends Object
implements ArchiveRequestManager

Die Objekte dieser Klasse verwalten alle Arten von Anfragen an das Archivsystem, gleichzeitig werden auch alle Antworten vom Archivsystem, die für die Applikation bestimmt sind, entgegen genommen und in entsprechende Objekte umgewandelt (der Datensatz wird von einem Objekt der Klasse StreamedRequestManager empfangen, aber an den richtigen StreamedArchiveRequester weitergeleitet). Für jede anfragende Applikation wird ein solches Objekt erzeugt.

Author:
Kappich Systemberatung

Nested Class Summary
(package private)  class StreamedArchiveRequester.ClientSender
          Diese innerClass implementiert das ClientSenderInterface und wird im StreamedArchiveRequester benötigt um ein ClientDavConnection Objekt zu erzeugen.
 
Field Summary
private  SystemObject _archiveSystem
          Für welches Archivsystem ist dieser Manager.
private  StreamedArchiveRequester.ClientSender _clientSender
           
private  ClientDavInterface _connection
          Stellt die Verbindung zum Archiv dar.
private  DataDescription _dataDescriptionSender
           
private static Debug _debug
          DebugLogger für Debug-Ausgaben
private  short _defaultSimulationVariant
          Falls keine Simulationsvariante gesetzt wird, dann wird dieser default-Wert benutzt.
private  int _indexOfRequest
          Jede Anfrage erhält einen eigene Index.
private  List<ArchiveAvailabilityListener> _listener
          Speichert alle Listener, die benachrichtigt werden, wenn das Archivsystem nicht mehr über den DaV zu erreichen ist
private  Byte _lockState
          Diese Objekt für synchronized() benötigt, es sperrt den Zugriff auf die Variable _state.
private  int _receiveBufferSize
          Diese Variable bestimmt die Größe des Empfangspuffers (StreamDemultiplexer).
private  Map _requests
          Hier sind alle Anfragen gespeichert, als Key wird der Index der Anfrage benutzt und das Archiv von dem die Daten angefordert werden.
private  byte _state
          Diese Variable wird benutzt um zu prüfen ob es einen Abnehmer für Archivanfragen gibt.
private  SubscriptionArchiveOnlineDataManager _subscriptionArchiveOnlineDataManager
           
private  Date _timeOutArchiveRequest
           
 
Constructor Summary
StreamedArchiveRequester(ClientDavInterface archiveConnection, int timeOutArchiveRequest, SystemObject archiveSystem, short defaultSimulationVariant)
          Dieser Konstruktor erzeugt ein StreamedArchiveRequester Objekt und meldet sich gleichzeitig auf der übergebenen Verbindung als Sender für Anfragen an.
 
Method Summary
 void addArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
          Das übergebene Objekt listener wird benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.
private  void adviseListener()
          Diese Methode benachrichtigt alle Listener, dass sich der Verbindungszustand zum Archivsystem geändert hat.
(package private)  void archiveDataResponse(Data data)
          Diese Methode leitet die Nutzdaten, die für eine bestimmte Archivanfrage gedacht sind, weiter.
 ArchiveQueryResult archiveFileSaverAlignment(int volumeIdTypB)
          Beauftragt das Archivsystem seine Informationen zu gespeicherten Daten mit einem Speichermedium Typ B ArchiveFileSaver abzugleichen.
private  void archiveFileSaverAlignmentResponse(Data data)
           
private  void connectionLost()
          Die Verbindung zum Archiv ist verloren gegangen.
(package private)  void createArchivRequestResultData(ArchiveQueryID archiveRequest, int messageType, byte[] dataArray)
          Diese Methode erzeugt einen Datensatz, der zum Archiv geschickt werden kann.
 void dataReceiver(Data data)
          Diese Methode analisiert die Daten und ruft die passenden Methoden auf, die die Daten weiter reichen oder verarbeiten um sie dann weiter zu reichen.
 ArchiveQueryResult deleteData(List<ArchiveInformationResult> dataDisposedToDelete, boolean deleteImmediately)
          Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit ArchiveRequestManager.increaseDeleteTime(java.util.List, long) festgelegten Wert zu löschen.
private  void deleteDataResponse(Data data)
           
 ArchiveQueryResult deleteDataSimulationVariant(short simulationVariant)
          Diese Methode beauftragt das Archivsystem alle Daten, die zu einer bestimmten Simulationsvariante gehören, zu löschen.
private  void deletePersistentDataResponse(Data data)
          Diese Methode wird aufgerufen, wenn eine Antwort auf einen Löschauftrag vorliegt.
private  Query getQuery(int indexOfQuery, SystemObject archiveReference)
          Diese Methode liefert zu einem gegebenen Index, der zu einer Archivanfrage gehört, die dazugehörige Archivanfrage.
 ArchiveQueryResult increaseDeleteTime(List<ArchiveInformationResult> requiredData, long timePeriod)
          Beauftragt das Archivsystem den Löschzeitpunkt der angegebenen Zeitbereiche zu verlängern.
private  void increaseDeleteTimeResponse(Data data)
           
private  void intitiateArchiveQueryResponse(Data data)
          Das Archiv Antwortet auf die gestellt Archivanfrage.
 boolean isArchiveAvailable()
          Stellt fest ob das Archivsystem über den Datenverteiler derzeit erreichbar ist.
private  boolean isConnectionOk(Date timeOut)
          Diese Methode prüft, ob gesendet werden darf.
 void removeArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
          Das Objekt, das mit ArchiveRequestManager.addArchiveAvailabilityListener(de.bsvrz.dav.daf.main.archive.ArchiveAvailabilityListener) übergeben wurde, wird nicht mehr benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.
(package private)  void removeRequest(Object key)
          Diese Methode entfernt eine Archivauftrag aus der Hashtable.
 ArchiveDataQueryResult request(ArchiveQueryPriority priority, ArchiveDataSpecification spec)
          Diese Methode stellt eine Anfrage an das Archiv.
 ArchiveDataQueryResult request(ArchiveQueryPriority priority, List<ArchiveDataSpecification> specs)
          Diese Methode stellt eine Anfrage an das Archiv.
 ArchiveQueryResult requestData(Collection<ArchiveInformationResult> requiredData, Collection<SystemObject> requestedArchives)
          Beauftragt das Archivsystem fehlende Daten von anderen Archivsystemen anzufordern und diese dann als "nachgefordert" zu speichern und bei Archivanfragen zur Verfügung zu stellen.
 ArchiveQueryResult requestData(long startTime, long endTime, Collection<SystemObject> requestedArchives)
          Beauftragt das Archivsystem fehlende Daten von anderen Archivsystemen anzufordern und diese dann als "nachgefordert" zu speichern und bei Archivanfragen zur Verfügung zu stellen.
private  void requestDataResponse(Data data)
          Diese Methode wird aufgerufen, wenn eine Antwort auf einen Auftrag zum initierten Nachfordern von Daten vorliegt.
 ArchiveInfoQueryResult requestInfo(ArchiveDataSpecification spec)
          Start einer Archivinformationsanfrage an das Archivsystem.
 ArchiveInfoQueryResult requestInfo(List<ArchiveDataSpecification> specs)
          Start einer Archivinformationsanfrage an das Archivsystem.
private  void requestInfoResponse(Data data)
          Diese Methode wird aufgerufen, wenn eine Antwort auf eine Archiveinformationsanfrage vorliegt.
private  void restoreDataResponse(Data data)
           
 ArchiveQueryResult restorePersistentData(List<ArchiveInformationResult> requiredData)
          Diese Methode beauftragt das Archivsystem bestimmten Daten, die sich nicht im direkten Zugriff befinden, von der Sicherung wieder in den direkten Zugriff des Archivsystems zu bringen.
 ArchiveQueryResult savePersistentData()
          Beauftragt das Archivsystem Archivdaten der Sicherung ArchiveFileSaver zu übergeben.
private  void savePersistentDataResponse(Data data)
          Diese Methode wird aufgerufen, wenn eine Antwort auf einen Speicherauftrag vorliegt.
(package private)  void sendTicketToArchive(ArchiveQueryID archiveRequest, byte[] ticket)
          Diese Klasse wird von der Implementation des StreamDemultixplexerDirector benötigt.
 void setReceiveBufferSize(int numberOfBytes)
          Die Puffergröße (in Byte) des Empfängers auf einen anderen Wert als den default Wert setzen.
 void subscribeReceiver(DatasetReceiverInterface receiver, SystemObject object, DataDescription dataDescription, ReceiveOptions options, HistoryTypeParameter historyType, long history)
          Die Implementation dieser Methode meldet sich als Empfänger von aktuellen Daten an.
private  void subscribeSender()
          Diese Methode meldet die Archivapplikation als Sender von Archivanfragen/Tickets/Archivaufgaben an.
 void unsubscribeReceiver(DatasetReceiverInterface receiver, SystemObject object, DataDescription dataDescription)
          Die Implementation dieser Methode meldet einen Empfänger ab, der mit der Methode ArchiveRequestManager.subscribeReceiver(de.bsvrz.dav.daf.main.archive.DatasetReceiverInterface, de.bsvrz.dav.daf.main.config.SystemObject, de.bsvrz.dav.daf.main.DataDescription, de.bsvrz.dav.daf.main.ReceiveOptions, de.bsvrz.dav.daf.main.archive.HistoryTypeParameter, long) angemeldet wurde.
private  void unsubscribeSender()
          Diese Methode meldet den StreamedArchiveRequester als Sender von Archivanfragen/Tickets ab.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_connection

private final ClientDavInterface _connection
Stellt die Verbindung zum Archiv dar. Hier werden Steuerungs/Nutzdaten angefragt und empfangen.


_state

private byte _state
Diese Variable wird benutzt um zu prüfen ob es einen Abnehmer für Archivanfragen gibt. Den Kommentar im Konstruktor beachten.


_lockState

private final Byte _lockState
Diese Objekt für synchronized() benötigt, es sperrt den Zugriff auf die Variable _state.


_indexOfRequest

private int _indexOfRequest
Jede Anfrage erhält einen eigene Index. Somit können Antworten des Archivs, die auch diesen Index enthalten, genau dem Empfänger zugeordnet werden.


_requests

private final Map _requests
Hier sind alle Anfragen gespeichert, als Key wird der Index der Anfrage benutzt und das Archiv von dem die Daten angefordert werden. Zu jeder Anfrage gehört ein eindeutiger Index.


_receiveBufferSize

private int _receiveBufferSize
Diese Variable bestimmt die Größe des Empfangspuffers (StreamDemultiplexer). Die Größe wird in Bytes angegben. Der Wert "0" ist der default Wert. Das bedeutet, dass das Archiv die Größe des Empfangspuffers festlegt. Der Defaultwert ist in der Konfiguration gespeichert und wird dort vom Archiv angefordert. Soll ein anderer Wert benutzt werden, so kann dieser mit setReceiveBufferSize(int) gesetzt werden.


_archiveSystem

private final SystemObject _archiveSystem
Für welches Archivsystem ist dieser Manager.


_timeOutArchiveRequest

private final Date _timeOutArchiveRequest

_debug

private static Debug _debug
DebugLogger für Debug-Ausgaben


_clientSender

private StreamedArchiveRequester.ClientSender _clientSender

_dataDescriptionSender

private DataDescription _dataDescriptionSender

_defaultSimulationVariant

private final short _defaultSimulationVariant
Falls keine Simulationsvariante gesetzt wird, dann wird dieser default-Wert benutzt. Der Wert wird vom StreamedRequestManager gesetzt.


_subscriptionArchiveOnlineDataManager

private final SubscriptionArchiveOnlineDataManager _subscriptionArchiveOnlineDataManager

_listener

private final List<ArchiveAvailabilityListener> _listener
Speichert alle Listener, die benachrichtigt werden, wenn das Archivsystem nicht mehr über den DaV zu erreichen ist

Constructor Detail

StreamedArchiveRequester

public StreamedArchiveRequester(ClientDavInterface archiveConnection,
                                int timeOutArchiveRequest,
                                SystemObject archiveSystem,
                                short defaultSimulationVariant)
Dieser Konstruktor erzeugt ein StreamedArchiveRequester Objekt und meldet sich gleichzeitig auf der übergebenen Verbindung als Sender für Anfragen an. Die Anfragen werden an das Archiv geschickt, das ebenfalls übergeben wird. Die Anfragen enthalten einmal die Archivanfragen und als zweites Tickets, die dem Archiv erlauben weitere Datensätze zu verschicken.

Parameters:
archiveConnection - Eine Verbindung auf der Datensätze verschickt werden sollen
archiveSystem - Das Archiv, für das die Datensätze bestimmt sind
Method Detail

request

public ArchiveDataQueryResult request(ArchiveQueryPriority priority,
                                      List<ArchiveDataSpecification> specs)
                               throws IllegalStateException
Diese Methode stellt eine Anfrage an das Archiv. Da eine Liste mit Objekten, die angefragt werden sollen, zur Verfügung gestellt wird, werden auch soviele Streams bereitgestellt, wie die Liste Einträge hat.

Specified by:
request in interface ArchiveRequestManager
Parameters:
priority - Mit welcher Priorität soll die Anfrage beantwortet werden (hohe, mittlere, niedrige Priorität)
specs - Eine Liste von Objekten, die alle Informationen enthalten, die zur Bearbeitung der Archivanfrage nötig sind. Für jedes Objekt der Liste wird ein Stream bereitgestellt, der die geforderten Informationen enthält.Wird eine leere Liste übergeben, wird das Objekt, das die Antwort auf diese Anfrage enthält, ein Array mit Streams zurückgegbene, das ebenfalls leer ist.
Returns:
Ein Objekt, das die Möglichkeit bietet zu prüfen ob die Anfrage erfolgreich war oder ob die Anfrage fehlgeschlagen ist. War die Anfrage erfolgreich, so kann das Objekt die Streams zur weiteren Bearbeitung weitergeben. War die Liste specs leer, ist das Array, das die Streams darstellt, ebenfalls leer.
Throws:
IllegalStateException - Das Archiv, an das die Anfrage gestellt wurde, kann nicht erreicht werden, die Anfrage wird verworfen.

request

public ArchiveDataQueryResult request(ArchiveQueryPriority priority,
                                      ArchiveDataSpecification spec)
                               throws IllegalStateException
Diese Methode stellt eine Anfrage an das Archiv. Da nur ein Objekt angefragt wird, steht auch nur ein Stream zur Verfügung, der Daten über das Objekt übermittelt

Specified by:
request in interface ArchiveRequestManager
Parameters:
priority - Mit welcher Priorität soll die Anfrage beantwortet werden (hohe, mittlere, niedrige Priorität)
spec - Ein Objekt, das alle Informationen enthält, die zur Bearbeitung der Archivanfrage nötig sind.
Returns:
Ein Objekt, das die Möglichekit bietet zu prüfen ob die Anfrage erfolgreich war oder ob die Anfrage fehlgeschlagen ist. War die Anfrage erfolgreich, so kann das Objekt die Streams zur weiteren Bearbeitung weitergeben.
Throws:
IllegalStateException - Das Archiv, an das die Anfrage gestellt wurde, kann nicht erreicht werden, die Anfrage wird verworfen.

setReceiveBufferSize

public void setReceiveBufferSize(int numberOfBytes)
Die Puffergröße (in Byte) des Empfängers auf einen anderen Wert als den default Wert setzen. Der default Wert wird vom Archiv aus der Konfiguration ermittelt.

Specified by:
setReceiveBufferSize in interface ArchiveRequestManager
Parameters:
numberOfBytes -

getQuery

private Query getQuery(int indexOfQuery,
                       SystemObject archiveReference)
Diese Methode liefert zu einem gegebenen Index, der zu einer Archivanfrage gehört, die dazugehörige Archivanfrage. Der Index der Archivanfrage steht in der Antwort einer Archivanfrage, somit kann die Antwort einer Archivanfrage zugeordnet werden. Die Anfrage wird über ein int identifiziert. Dieses int wird dann intern in ein Integer umgewandelt.

Parameters:
indexOfQuery - Index der Archivanfrage
archiveReference - Von welchem Archiv kommt die Antwort
Returns:
Die Archivanfrage

removeRequest

void removeRequest(Object key)
Diese Methode entfernt eine Archivauftrag aus der Hashtable.

Parameters:
key - key, der zu einem Archivauftrag (delete, restore, save, Archivinformationsanfrage, Archivanfrage) gehört, der entfernt werden soll

dataReceiver

public void dataReceiver(Data data)
Diese Methode analisiert die Daten und ruft die passenden Methoden auf, die die Daten weiter reichen oder verarbeiten um sie dann weiter zu reichen. Falls ein Paket vom falschen Typ empfangen wird, wird eine entsprechende Exception geworfen.

Parameters:
data - Datensatz eines Archivs

intitiateArchiveQueryResponse

private void intitiateArchiveQueryResponse(Data data)
Das Archiv Antwortet auf die gestellt Archivanfrage. Somit muss die Archivanfrage, die auf diese Antwort wartet, benachrichtigt werden, dass das Archiv geantwortet hat.

Parameters:
data - Datensatz

sendTicketToArchive

void sendTicketToArchive(ArchiveQueryID archiveRequest,
                         byte[] ticket)
                   throws DataNotSubscribedException,
                          SendSubscriptionNotConfirmed
Diese Klasse wird von der Implementation des StreamDemultixplexerDirector benötigt. Es verschickt das Ticket an das Archiv. Das Archiv wird das Ticket an den StreamMultiplexer weiterreichen.

Parameters:
archiveRequest - Mit diesem Objekt kann die Archivanfrage eindeutig identifiziert werden
ticket - Ein byte-Array, das kodiert das Ticket für den StreamMultiplexer der Senderapplikation enthält
Throws:
DataNotSubscribedException - Es sollen Daten ohne Anmeldung auf die Daten verschickt werden
SendSubscriptionNotConfirmed - Es liegt keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vor

archiveDataResponse

void archiveDataResponse(Data data)
Diese Methode leitet die Nutzdaten, die für eine bestimmte Archivanfrage gedacht sind, weiter.

Parameters:
data - Nutzdaten, die vom Archiv geschickt wurden

createArchivRequestResultData

void createArchivRequestResultData(ArchiveQueryID archiveRequest,
                                   int messageType,
                                   byte[] dataArray)
                             throws DataNotSubscribedException,
                                    SendSubscriptionNotConfirmed,
                                    IllegalStateException
Diese Methode erzeugt einen Datensatz, der zum Archiv geschickt werden kann. Die Attributgruppe und der Aspekt sind fest gesetzt. Die Attribute können über die Parameter festgelegt werden.

Parameters:
archiveRequest - Ein Object, das den Index der Anfrage und eine Referenz auf die anfragende Applikation enthält
messageType - Von welchem Typ ist das Paket
dataArray - Hier können zusätzliche Daten codiert werden
Throws:
DataNotSubscribedException - Senden von Datensätzen ohne entsprechende Sendeanmeldung
SendSubscriptionNotConfirmed - Es liegt keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vor
IllegalStateException - Die Verbindng zum Archive wurde abgebrochen, gleichzeitig wird versucht Datenpakete an das Archiv zu verschicken

connectionLost

private void connectionLost()
Die Verbindung zum Archiv ist verloren gegangen. Diese Methode wird derzeit benutzt um einen Fehler auszugeben, sonst hat sie keinen nutzen. Es werden Listener benutzt um das fehlen der Verbindung zum Archiv anzuzeigen. Die Methode wird an allen Stellen aufgerufen, an denen das "wegbrechen" der Verbidnung festgestellt wird.


isConnectionOk

private boolean isConnectionOk(Date timeOut)
                        throws InterruptedException
Diese Methode prüft, ob gesendet werden darf. Ist die Sendesteuerung negativ, wird eine Zeitspanne gewartet, ist die Sendesteuerung dann noch immer negativ, wird false zurückgeliefert.

Parameters:
timeOut - Zeitpunkt, bis zu dem gewartet wird, um eine Verbindung aufzubauen
Returns:
true = positive Sendesteuerung vorhanden; false = auch nach Ablauf der vorgegebenen Zeitspanne ist keine positive Sendesteuerung vorhanden
Throws:
InterruptedException

unsubscribeSender

private void unsubscribeSender()
Diese Methode meldet den StreamedArchiveRequester als Sender von Archivanfragen/Tickets ab.


subscribeSender

private void subscribeSender()
Diese Methode meldet die Archivapplikation als Sender von Archivanfragen/Tickets/Archivaufgaben an. Diese Methode wird gewöhnlich nur im Konstruktor aufgerufen, kann im Konstruktor keine Verbidnung aufgebaut werden, wird bei jedem Methodenaufruf versucht eine Verbindung aufzubauen


requestInfo

public ArchiveInfoQueryResult requestInfo(ArchiveDataSpecification spec)
Start einer Archivinformationsanfrage an das Archivsystem. Diese Methode liefert ein Objekt zurück, über das asynchron auf das Ergebnis der Archivinformationsanfrage zugegriffen werden kann..

Specified by:
requestInfo in interface ArchiveRequestManager
Parameters:
spec - Spezifikation der Archivdaten zu denen Information gewünscht werden.
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.

subscribeReceiver

public void subscribeReceiver(DatasetReceiverInterface receiver,
                              SystemObject object,
                              DataDescription dataDescription,
                              ReceiveOptions options,
                              HistoryTypeParameter historyType,
                              long history)
Description copied from interface: ArchiveRequestManager
Die Implementation dieser Methode meldet sich als Empfänger von aktuellen Daten an. Die zurückgegebenen Datensätze unterscheiden sich von einer "normalen" Anmeldung als Empfänger, da Archivdaten zeitlich vor die aktuellen Daten gemischt werden. Der Benutzer legt dabei fest wie gross der Zeitraum sein soll, der vor die aktuellen Daten gemischt werden soll. Der Zeitraum wird als "Zeitspanne" oder als "Anzahl Datensätze" angegeben.
Ist kein Archivsystem vorhanden oder bei der Archivanfrage tritt ein Fehler auf, werden nur die aktuellen Daten zurückgegeben.

Specified by:
subscribeReceiver in interface ArchiveRequestManager
Parameters:
receiver - Objekt, das Methoden zur Verfügung stellt um den Strom aus historischen und aktuellen Daten entgegen zu nehmen
object - System-Objekt für die die spezifizierten Daten anzumelden sind
dataDescription - Beschreibende Informationen zu den anzumeldenden Daten
options - Für die Anmeldung zu verwendende Optionen
historyType - HistoryTypeParameter.TIME = Der Parameter history bezieht sich auf einen Zeitraum, der vor den aktuellen Daten liegen soll (in ms); HistoryTypeParameter.INDEX = Der Parameter history bezieht sich auf die Anzahl Datensätze, die mindestens vor den aktuellen Daten liegen sollen
history - Zeitraum der Archivdaten in Millisekunden, die vor den ersten aktuellen Datensätzen liegen

unsubscribeReceiver

public void unsubscribeReceiver(DatasetReceiverInterface receiver,
                                SystemObject object,
                                DataDescription dataDescription)
Description copied from interface: ArchiveRequestManager
Die Implementation dieser Methode meldet einen Empfänger ab, der mit der Methode ArchiveRequestManager.subscribeReceiver(de.bsvrz.dav.daf.main.archive.DatasetReceiverInterface, de.bsvrz.dav.daf.main.config.SystemObject, de.bsvrz.dav.daf.main.DataDescription, de.bsvrz.dav.daf.main.ReceiveOptions, de.bsvrz.dav.daf.main.archive.HistoryTypeParameter, long) angemeldet wurde.

Specified by:
unsubscribeReceiver in interface ArchiveRequestManager
object - System-Objekt für die die spezifizierten Daten angemeldet wurden
dataDescription - Beschreibende Informationen zu den angemeldeten Daten

requestInfo

public ArchiveInfoQueryResult requestInfo(List<ArchiveDataSpecification> specs)
Start einer Archivinformationsanfrage an das Archivsystem. Diese Methode liefert ein Objekt zurück, über das asynchron auf das Ergebnis der Archivinformationsanfrage zugegriffen werden kann..

Specified by:
requestInfo in interface ArchiveRequestManager
Parameters:
specs - Liste mit Spezifikationen der Archivdaten zu denen Information gewünscht werden
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.

requestInfoResponse

private void requestInfoResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf eine Archiveinformationsanfrage vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.

Parameters:
data - Archivantwort auf einen Archivinformationsanfrage

savePersistentData

public ArchiveQueryResult savePersistentData()
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem Archivdaten der Sicherung ArchiveFileSaver zu übergeben. Eine Applikation ruft diese Methode auf, um alle Archivdaten, die gesichert werden können, zu sichern. Eine Implementierung dieser Methode sollte ohne zu blockieren ein Objekt zurückliefern über das asynchron auf das Ergebnis der Anfrage zugegriffen werden kann.

Specified by:
savePersistentData in interface ArchiveRequestManager
Returns:
Ergebnisobjekt über das Informationen über den Zustand des Auftrags abgefragt werden können

savePersistentDataResponse

private void savePersistentDataResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf einen Speicherauftrag vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.

Parameters:
data - Archivantwort auf Speicherauftrag

requestData

public ArchiveQueryResult requestData(Collection<ArchiveInformationResult> requiredData,
                                      Collection<SystemObject> requestedArchives)
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem fehlende Daten von anderen Archivsystemen anzufordern und diese dann als "nachgefordert" zu speichern und bei Archivanfragen zur Verfügung zu stellen. Sind die übergebenen Listen

Specified by:
requestData in interface ArchiveRequestManager
Parameters:
requiredData - Datenidentifikation(en), die nachgefordert werden sollen. Jede Datenidentifikation speichert zusätlich den Zeitbereich, in dem Daten zu dieser Datenidentifikation angefordert werden soll. Es muss mindestens eine Datenidentifikation vorhanden sein.
requestedArchives - Archivsystem(e), bei denen Daten angefordert werden. Ist diese Liste leer werden alle Archivsystem angefragt, die beim automatischen Nachfordern angefragt werden.
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können

requestData

public ArchiveQueryResult requestData(long startTime,
                                      long endTime,
                                      Collection<SystemObject> requestedArchives)
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem fehlende Daten von anderen Archivsystemen anzufordern und diese dann als "nachgefordert" zu speichern und bei Archivanfragen zur Verfügung zu stellen. Es werden alle Datenidentifikationen angefragt, die auch beim automatischen Nachfordern angefragt werden.

Specified by:
requestData in interface ArchiveRequestManager
Parameters:
startTime - Startzeitpunkt, ab dem Daten nachgefordert werden
endTime - Endzeitpunkt, bis zu dem Daten nachgefordert werden
requestedArchives - Archivsysteme die angefragt werden. Ist die Liste leer werden alle Archivsysteme angefragt, die beim automatischen Nachfordern angefragt werden
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können

requestDataResponse

private void requestDataResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf einen Auftrag zum initierten Nachfordern von Daten vorliegt. Dabei wird nicht unterschieden, ob es eine Antwort auf ein Nachricht vom Typ 17 oder 19 ist.

Parameters:
data - Antwort auf den Auftrag zum nachfordern von Daten

restorePersistentData

public ArchiveQueryResult restorePersistentData(List<ArchiveInformationResult> requiredData)
Diese Methode beauftragt das Archivsystem bestimmten Daten, die sich nicht im direkten Zugriff befinden, von der Sicherung wieder in den direkten Zugriff des Archivsystems zu bringen.

Specified by:
restorePersistentData in interface ArchiveRequestManager
Parameters:
requiredData - Zeitbereiche, die wieder in den direkten Zugriff des Archivsystems gebracht werden sollen
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.

restoreDataResponse

private void restoreDataResponse(Data data)

deleteDataSimulationVariant

public ArchiveQueryResult deleteDataSimulationVariant(short simulationVariant)
Diese Methode beauftragt das Archivsystem alle Daten, die zu einer bestimmten Simulationsvariante gehören, zu löschen.

Specified by:
deleteDataSimulationVariant in interface ArchiveRequestManager
Parameters:
simulationVariant - Simulationsvariante von der alle Daten aus dem Archivsystem entfernt werden sollen
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.

deletePersistentDataResponse

private void deletePersistentDataResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf einen Löschauftrag vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.

Parameters:
data - Archivantwort auf Speicherauftrag

increaseDeleteTime

public ArchiveQueryResult increaseDeleteTime(List<ArchiveInformationResult> requiredData,
                                             long timePeriod)
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem den Löschzeitpunkt der angegebenen Zeitbereiche zu verlängern. Die Methode wird von einer Applikation aufgerufen, um benötigte Zeitbereiche länger als vorgesehen im direkten Zugriff des Archivsystems zu halten.

Specified by:
increaseDeleteTime in interface ArchiveRequestManager
Parameters:
requiredData - Zeitbereiche, die länger im direkten Zugriff des Archivsystems bleiben sollen
timePeriod - Zeitspanne, die die ausgewählten Daten länger im direkten Zugriff des Archivsystem bleiben sollen (in ms)
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können

increaseDeleteTimeResponse

private void increaseDeleteTimeResponse(Data data)

deleteData

public ArchiveQueryResult deleteData(List<ArchiveInformationResult> dataDisposedToDelete,
                                     boolean deleteImmediately)
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit ArchiveRequestManager.increaseDeleteTime(java.util.List, long) festgelegten Wert zu löschen. Das Löschen der Zeitbereiche wird dabei in zwei Varianten unterteilt. In der ersten Variante werden die Zeitbereiche umgehend aus dem direkten Zugriff des Archivsystems entfernt. In der zweiten Variante werden die Zeitbereiche nur als "zu löschend" markiert, sobald das "automatische Löschen" des Archivsystems angstoßen wird (dies geschieht zyklisch), werden die Zeitbereiche entfernt.

Bei allen Löschoperationen, die durch diesen Methodenaufruf ausgelöst werden, muss darauf geachtete werden, dass der Vorhaltezeitraum der Zeitbereiche abgelaufen sein muss und das die Zeitbereiche gesichert wurden, falls diese gesichert werden sollten. Wird gegen eine diese Forderungen verstossen, wird der angegebene Zeitbereich nicht gelöscht.

Specified by:
deleteData in interface ArchiveRequestManager
Parameters:
dataDisposedToDelete - Zeitbereich(e), die gelöscht werden sollen
deleteImmediately - true = Variante 1, die Zeitbereiche werden umgehend aus dem direkten Zugriff des Archivsystems entfernt; false = Variante 2, die Zeitbereiche werden nur als "zu löschend" markiert und später aus dem direkten Zugriff des Archivsystems entfernt
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können

deleteDataResponse

private void deleteDataResponse(Data data)

archiveFileSaverAlignment

public ArchiveQueryResult archiveFileSaverAlignment(int volumeIdTypB)
Description copied from interface: ArchiveRequestManager
Beauftragt das Archivsystem seine Informationen zu gespeicherten Daten mit einem Speichermedium Typ B ArchiveFileSaver abzugleichen. Dies kann nötig werden, wenn die eindeutigen Identifizierungen der Speichermedien von Typ B durch die Sicherung geändert wurden (Beispiel: Die Daten wurden vorher auf CD gespeichert, nun werden die Daten auf DVD gespeichert und die alten Datenbestände auf DVD umkopiert, somit fallen mehrere CD´s auf eine DVD und die eindeutigen Identifizierungen der CD´s sind nutzlos. Die eindeutigen Identifizierungen der CD´s wurde aber vom Archivsystem gespeichert und müssen folglich abgeglichen werden).

Specified by:
archiveFileSaverAlignment in interface ArchiveRequestManager
Parameters:
volumeIdTypB - Eindeutige Identifikation eines Speichermediums Typ B
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können

isArchiveAvailable

public boolean isArchiveAvailable()
Description copied from interface: ArchiveRequestManager
Stellt fest ob das Archivsystem über den Datenverteiler derzeit erreichbar ist. Eine positive/negative Antwort ist keine Garantie, dass dieser Zustand auch in Zukunft gültig ist/bleibt.

Specified by:
isArchiveAvailable in interface ArchiveRequestManager
Returns:
true = Das Archivsystem ist derzeit erreichbar, es können alle im Interface spezifizierten Methoden benutzt werden; false = Das Archivsystem ist derzeit nicht erreichbar

addArchiveAvailabilityListener

public void addArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
Description copied from interface: ArchiveRequestManager
Das übergebene Objekt listener wird benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.

Specified by:
addArchiveAvailabilityListener in interface ArchiveRequestManager
Parameters:
listener - Objekt, das benutzt wird um Änderungen der Erreichbarkeit des Archivsystems über den Datenverteiler anzuzeigen

removeArchiveAvailabilityListener

public void removeArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
Description copied from interface: ArchiveRequestManager
Das Objekt, das mit ArchiveRequestManager.addArchiveAvailabilityListener(de.bsvrz.dav.daf.main.archive.ArchiveAvailabilityListener) übergeben wurde, wird nicht mehr benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.

Specified by:
removeArchiveAvailabilityListener in interface ArchiveRequestManager
Parameters:
listener - Objekt, das nicht mehr benachrichtigt werden soll, wenn sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert

adviseListener

private void adviseListener()
Diese Methode benachrichtigt alle Listener, dass sich der Verbindungszustand zum Archivsystem geändert hat.


archiveFileSaverAlignmentResponse

private void archiveFileSaverAlignmentResponse(Data data)