public class StreamedArchiveRequester extends java.lang.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.
Modifier and Type | Class and Description |
---|---|
(package private) class |
StreamedArchiveRequester.ClientSender
Diese innerClass implementiert das ClientSenderInterface und wird im StreamedArchiveRequester benötigt um ein ClientDavConnection Objekt zu erzeugen.
|
Modifier and Type | Field and Description |
---|---|
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 boolean |
_gotDataRequest |
private int |
_indexOfRequest
Jede Anfrage erhält einen eigene Index.
|
private java.util.List<ArchiveAvailabilityListener> |
_listener
Speichert alle Listener, die benachrichtigt werden, wenn das Archivsystem nicht mehr über den DaV zu erreichen ist
|
private java.lang.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 java.util.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 java.util.Date |
_timeOutArchiveRequest |
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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(java.util.List<ArchiveInformationResult> dataDisposedToDelete,
boolean deleteImmediately)
Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit
ArchiveRequestManager.increaseDeleteTime(java.util.List<de.bsvrz.dav.daf.main.archive.ArchiveInformationResult>, 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 SystemObject[] |
getAffectedObjects(ArchiveDataSpecification spec) |
private static ArchiveDataQueryResult |
getEmptyResult() |
ArchiveNumQueriesResult |
getNumArchiveQueries()
Gibt Informationen über die Anzahl Anfragen zurück, die eine Applikation gleichzeitig stellen darf.
|
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(java.util.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(java.util.Date timeOut)
Diese Methode prüft, ob gesendet werden darf.
|
private ArchiveDataQueryResult |
query(ArchiveQueryPriority priority,
java.util.List<ArchiveDataSpecification> specs,
ArchiveQueryID archiveQueryID) |
private ArchiveDataQueryResult |
rawQuery(ArchiveQueryPriority priority,
java.util.List<ArchiveDataSpecification> specs,
ArchiveQueryID archiveQueryID) |
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(java.lang.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,
java.util.List<ArchiveDataSpecification> specs)
Diese Methode stellt eine Anfrage an das Archiv.
|
ArchiveQueryResult |
requestData(java.util.Collection<ArchiveInformationResult> requiredData,
java.util.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,
java.util.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(java.util.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 |
requestNumQueriesResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf eine Archiveinformationsanfrage vorliegt.
|
private void |
restoreDataResponse(Data data) |
ArchiveQueryResult |
restorePersistentData(java.util.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.
|
private java.util.Collection<ArchiveDataSpecification> |
splitQueryBetweenObjects(ArchiveDataSpecification spec) |
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.
|
private final ClientDavInterface _connection
Stellt die Verbindung zum Archiv dar. Hier werden Steuerungs/Nutzdaten angefragt und empfangen.
private byte _state
Diese Variable wird benutzt um zu prüfen ob es einen Abnehmer für Archivanfragen gibt. Den Kommentar im Konstruktor beachten.
private final java.lang.Byte _lockState
Diese Objekt für synchronized()
benötigt, es sperrt den Zugriff auf die Variable _state.
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.
private final java.util.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.
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.
private final SystemObject _archiveSystem
Für welches Archivsystem ist dieser Manager.
private final java.util.Date _timeOutArchiveRequest
private static Debug _debug
DebugLogger für Debug-Ausgaben
private StreamedArchiveRequester.ClientSender _clientSender
private DataDescription _dataDescriptionSender
private final short _defaultSimulationVariant
Falls keine Simulationsvariante gesetzt wird, dann wird dieser default-Wert benutzt. Der Wert wird vom StreamedRequestManager gesetzt.
private final SubscriptionArchiveOnlineDataManager _subscriptionArchiveOnlineDataManager
private final java.util.List<ArchiveAvailabilityListener> _listener
Speichert alle Listener, die benachrichtigt werden, wenn das Archivsystem nicht mehr über den DaV zu erreichen ist
private boolean _gotDataRequest
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.
archiveConnection
- Eine Verbindung auf der Datensätze verschickt werden sollenarchiveSystem
- Das Archiv, für das die Datensätze bestimmt sindpublic ArchiveDataQueryResult request(ArchiveQueryPriority priority, java.util.List<ArchiveDataSpecification> specs) throws java.lang.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.
request
in interface ArchiveRequestManager
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.specs
leer, ist das Array, das die Streams darstellt, ebenfalls leer.java.lang.IllegalStateException
- Das Archiv, an das die Anfrage gestellt wurde, kann nicht erreicht werden, die Anfrage wird verworfen.private ArchiveDataQueryResult query(ArchiveQueryPriority priority, java.util.List<ArchiveDataSpecification> specs, ArchiveQueryID archiveQueryID)
private java.util.Collection<ArchiveDataSpecification> splitQueryBetweenObjects(ArchiveDataSpecification spec)
private SystemObject[] getAffectedObjects(ArchiveDataSpecification spec)
private ArchiveDataQueryResult rawQuery(ArchiveQueryPriority priority, java.util.List<ArchiveDataSpecification> specs, ArchiveQueryID archiveQueryID)
private static ArchiveDataQueryResult getEmptyResult()
public ArchiveDataQueryResult request(ArchiveQueryPriority priority, ArchiveDataSpecification spec) throws java.lang.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
request
in interface ArchiveRequestManager
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.java.lang.IllegalStateException
- Das Archiv, an das die Anfrage gestellt wurde, kann nicht erreicht werden, die Anfrage wird verworfen.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.
setReceiveBufferSize
in interface ArchiveRequestManager
numberOfBytes
- 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.
indexOfQuery
- Index der ArchivanfragearchiveReference
- Von welchem Archiv kommt die Antwortvoid removeRequest(java.lang.Object key)
Diese Methode entfernt eine Archivauftrag aus der Hashtable.
key
- key, der zu einem Archivauftrag (delete, restore, save, Archivinformationsanfrage, Archivanfrage) gehört, der entfernt werden sollpublic 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.
data
- Datensatz eines Archivsprivate 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.
data
- Datensatzvoid sendTicketToArchive(ArchiveQueryID archiveRequest, byte[] ticket) throws DataNotSubscribedException, SendSubscriptionNotConfirmed, DataModelException
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.
archiveRequest
- Mit diesem Objekt kann die Archivanfrage eindeutig identifiziert werdenticket
- Ein byte-Array, das kodiert das Ticket für den StreamMultiplexer der Senderapplikation enthältDataNotSubscribedException
- Es sollen Daten ohne Anmeldung auf die Daten verschickt werdenSendSubscriptionNotConfirmed
- Es liegt keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vorDataModelException
void archiveDataResponse(Data data)
Diese Methode leitet die Nutzdaten, die für eine bestimmte Archivanfrage gedacht sind, weiter.
data
- Nutzdaten, die vom Archiv geschickt wurdenvoid createArchivRequestResultData(ArchiveQueryID archiveRequest, int messageType, byte[] dataArray) throws DataNotSubscribedException, SendSubscriptionNotConfirmed, java.lang.IllegalStateException, DataModelException
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.
archiveRequest
- Ein Object, das den Index der Anfrage und eine Referenz auf die anfragende Applikation enthältmessageType
- Von welchem Typ ist das PaketdataArray
- Hier können zusätzliche Daten codiert werdenDataNotSubscribedException
- Senden von Datensätzen ohne entsprechende SendeanmeldungSendSubscriptionNotConfirmed
- Es liegt keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vorjava.lang.IllegalStateException
- Die Verbindng zum Archive wurde abgebrochen, gleichzeitig wird versucht Datenpakete an das Archiv zu verschickenDataModelException
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.
private boolean isConnectionOk(java.util.Date timeOut) throws java.lang.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.
timeOut
- Zeitpunkt, bis zu dem gewartet wird, um eine Verbindung aufzubauenjava.lang.InterruptedException
private void unsubscribeSender()
Diese Methode meldet den StreamedArchiveRequester als Sender von Archivanfragen/Tickets ab.
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
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..
requestInfo
in interface ArchiveRequestManager
spec
- Spezifikation der Archivdaten zu denen Information gewünscht werden.public void subscribeReceiver(DatasetReceiverInterface receiver, SystemObject object, DataDescription dataDescription, ReceiveOptions options, HistoryTypeParameter historyType, long history)
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.
subscribeReceiver
in interface ArchiveRequestManager
receiver
- Objekt, das Methoden zur Verfügung stellt um den Strom aus historischen und aktuellen Daten entgegen zu nehmenobject
- System-Objekt für die die spezifizierten Daten anzumelden sinddataDescription
- Beschreibende Informationen zu den anzumeldenden Datenoptions
- Für die Anmeldung zu verwendende OptionenhistoryType
- 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 sollenhistory
- Zeitraum der Archivdaten in Millisekunden, die vor den ersten aktuellen Datensätzen liegenpublic void unsubscribeReceiver(DatasetReceiverInterface receiver, SystemObject object, DataDescription dataDescription)
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.
unsubscribeReceiver
in interface ArchiveRequestManager
object
- System-Objekt für die die spezifizierten Daten angemeldet wurdendataDescription
- Beschreibende Informationen zu den angemeldeten Datenpublic ArchiveInfoQueryResult requestInfo(java.util.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..
requestInfo
in interface ArchiveRequestManager
specs
- Liste mit Spezifikationen der Archivdaten zu denen Information gewünscht werdenprivate void requestInfoResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf eine Archiveinformationsanfrage vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.
data
- Archivantwort auf einen Archivinformationsanfragepublic ArchiveNumQueriesResult getNumArchiveQueries()
ArchiveRequestManager
Gibt Informationen über die Anzahl Anfragen zurück, die eine Applikation gleichzeitig stellen darf. Wenn die Anfrage fehlschlägt (ArchiveQueryResult.isRequestSuccessful()
liefert false zurück und es gibt eine entsprechende Fehlermeldung) kann davon ausgegangen werden, dass eine ältere Archivsystem-Version eingesetzt wird und maximal 5 gleichzeitige Anfragen pro Applikation zulässig sind.
getNumArchiveQueries
in interface ArchiveRequestManager
private void requestNumQueriesResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf eine Archiveinformationsanfrage vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.
data
- Archivantwort auf einen Archivinformationsanfragepublic ArchiveQueryResult savePersistentData()
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.
savePersistentData
in interface ArchiveRequestManager
private void savePersistentDataResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf einen Speicherauftrag vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.
data
- Archivantwort auf Speicherauftragpublic ArchiveQueryResult requestData(java.util.Collection<ArchiveInformationResult> requiredData, java.util.Collection<SystemObject> requestedArchives)
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.
requestData
in interface ArchiveRequestManager
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.public ArchiveQueryResult requestData(long startTime, long endTime, java.util.Collection<SystemObject> requestedArchives)
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.
requestData
in interface ArchiveRequestManager
startTime
- Startzeitpunkt, ab dem Daten nachgefordert werdenendTime
- Endzeitpunkt, bis zu dem Daten nachgefordert werdenrequestedArchives
- Archivsysteme die angefragt werden. Ist die Liste leer werden alle Archivsysteme angefragt, die beim automatischen Nachfordern angefragt werdenprivate 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.
data
- Antwort auf den Auftrag zum nachfordern von Datenpublic ArchiveQueryResult restorePersistentData(java.util.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.
restorePersistentData
in interface ArchiveRequestManager
requiredData
- Zeitbereiche, die wieder in den direkten Zugriff des Archivsystems gebracht werden sollenprivate void restoreDataResponse(Data data)
public ArchiveQueryResult deleteDataSimulationVariant(short simulationVariant)
Diese Methode beauftragt das Archivsystem alle Daten, die zu einer bestimmten Simulationsvariante gehören, zu löschen.
deleteDataSimulationVariant
in interface ArchiveRequestManager
simulationVariant
- Simulationsvariante von der alle Daten aus dem Archivsystem entfernt werden sollenprivate void deletePersistentDataResponse(Data data)
Diese Methode wird aufgerufen, wenn eine Antwort auf einen Löschauftrag vorliegt. Die Antwort wird an den Auftraggeber weitergeleitet.
data
- Archivantwort auf Speicherauftragpublic ArchiveQueryResult increaseDeleteTime(java.util.List<ArchiveInformationResult> requiredData, long timePeriod)
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.
increaseDeleteTime
in interface ArchiveRequestManager
requiredData
- Zeitbereiche, die länger im direkten Zugriff des Archivsystems bleiben sollentimePeriod
- Zeitspanne, die die ausgewählten Daten länger im direkten Zugriff des Archivsystem bleiben sollen (in ms)private void increaseDeleteTimeResponse(Data data)
public ArchiveQueryResult deleteData(java.util.List<ArchiveInformationResult> dataDisposedToDelete, boolean deleteImmediately)
ArchiveRequestManager
Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit ArchiveRequestManager.increaseDeleteTime(java.util.List<de.bsvrz.dav.daf.main.archive.ArchiveInformationResult>, 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.
deleteData
in interface ArchiveRequestManager
dataDisposedToDelete
- Zeitbereich(e), die gelöscht werden sollendeleteImmediately
- 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 entferntprivate void deleteDataResponse(Data data)
public ArchiveQueryResult archiveFileSaverAlignment(int volumeIdTypB)
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).
archiveFileSaverAlignment
in interface ArchiveRequestManager
volumeIdTypB
- Eindeutige Identifikation eines Speichermediums Typ Bpublic boolean isArchiveAvailable()
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.
isArchiveAvailable
in interface ArchiveRequestManager
public void addArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
ArchiveRequestManager
Das übergebene Objekt listener
wird benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.
addArchiveAvailabilityListener
in interface ArchiveRequestManager
listener
- Objekt, das benutzt wird um Änderungen der Erreichbarkeit des Archivsystems über den Datenverteiler anzuzeigenpublic void removeArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
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.
removeArchiveAvailabilityListener
in interface ArchiveRequestManager
listener
- Objekt, das nicht mehr benachrichtigt werden soll, wenn sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändertprivate void adviseListener()
Diese Methode benachrichtigt alle Listener, dass sich der Verbindungszustand zum Archivsystem geändert hat.
private void archiveFileSaverAlignmentResponse(Data data)