de.bsvrz.dav.daf.main.archive
Interface ArchiveRequestManager

All Known Implementing Classes:
StreamedArchiveRequester

public interface ArchiveRequestManager

Schnittstelle, die von Applikationen benutzt wird, um Anfragen an ein Archivsystem zu stellen. Eine konkrete Implementierung wird von den Datenverteiler-Applikationsfunktionen nach erfolgreichem Verbindungsaufbau zum Datenverteiler über die Methode ClientDavInterface.getArchive() zur Verfügung gestellt.

Author:
Kappich Systemberatung

Method Summary
 void addArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
          Das übergebene Objekt listener wird benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.
 ArchiveQueryResult archiveFileSaverAlignment(int volumeIdTypB)
          Beauftragt das Archivsystem seine Informationen zu gespeicherten Daten mit einem Speichermedium Typ B ArchiveFileSaver abzugleichen.
 ArchiveQueryResult deleteData(List<ArchiveInformationResult> dataDisposedToDelete, boolean deleteImmediately)
          Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit increaseDeleteTime(java.util.List, long) festgelegten Wert zu löschen.
 ArchiveQueryResult deleteDataSimulationVariant(short simulationVariant)
          Beauftragt das Archivsystem Archivdaten, die zu einer Simulation gehören, aus dem Archivsystem zu löschen.
 ArchiveQueryResult increaseDeleteTime(List<ArchiveInformationResult> requiredData, long timePeriod)
          Beauftragt das Archivsystem den Löschzeitpunkt der angegebenen Zeitbereiche zu verlängern.
 boolean isArchiveAvailable()
          Stellt fest ob das Archivsystem über den Datenverteiler derzeit erreichbar ist.
 void removeArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
          Das Objekt, das mit addArchiveAvailabilityListener(de.bsvrz.dav.daf.main.archive.ArchiveAvailabilityListener) übergeben wurde, wird nicht mehr benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.
 ArchiveDataQueryResult request(ArchiveQueryPriority priority, ArchiveDataSpecification spec)
          Ruft Archivdaten von einem Archivsystem mit Hilfe eines Ergebnisdatenstroms ab.
 ArchiveDataQueryResult request(ArchiveQueryPriority priority, List<ArchiveDataSpecification> specs)
          Ruft Archivdaten von einem Archivsystem mit Hilfe mehrerer Ergebnisdatenströme ab.
 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.
 ArchiveInfoQueryResult requestInfo(ArchiveDataSpecification spec)
          Start einer Archivinformationsanfrage an das Archivsystem.
 ArchiveInfoQueryResult requestInfo(List<ArchiveDataSpecification> specs)
          Start einer Archivinformationsanfrage an das Archivsystem.
 ArchiveQueryResult restorePersistentData(List<ArchiveInformationResult> requiredData)
          Start der Wiederherstellung von Datensätzen, die der Sicherung übergeben wurden (siehe savePersistentData()).
 ArchiveQueryResult savePersistentData()
          Beauftragt das Archivsystem Archivdaten der Sicherung ArchiveFileSaver zu übergeben.
 void setReceiveBufferSize(int numberOfBytes)
          Spezifiziert die Größe des Empfangspuffers je Archivanfrage, die mit nachfolgenden request Aufrufen erzeugt werden.
 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.
 void unsubscribeReceiver(DatasetReceiverInterface receiver, SystemObject object, DataDescription dataDescription)
          Die Implementation dieser Methode meldet einen Empfänger ab, der mit der Methode 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.
 

Method Detail

setReceiveBufferSize

void setReceiveBufferSize(int numberOfBytes)
Spezifiziert die Größe des Empfangspuffers je Archivanfrage, die mit nachfolgenden request Aufrufen erzeugt werden. Der angegebene Parameter ist eine grobe Vorgabe für alle Streams einer Archivanfrage zusammen und muss von einer Implementierung nicht exakt berücksichtigt werden, sondern sollte in der sendeseitigen Blockbildung und in der Flusskontrolle so berücksichtigt werden, dass die Summe der vom Archivsystem gesendeten aber noch nicht von der anfragenden Applikation abgerufenen Bytes in der angegebenen Größenordnung liegt. Der Defaultwert ist 0 mit der Bedeutung, das die Größe durch einen entsprechenden Parameter des Archivsystems festgelegt wird.

Parameters:
numberOfBytes - Grobe Vorgabe bezüglich der Anzahl zu puffernden Bytes pro Archivanfrage oder 0, wenn keine Vorgabe seitens der Empfangsapplikation gemacht werden soll und statt dessen ein entsprechender Parameter des Archivsystems verwendet werden soll.

request

ArchiveDataQueryResult request(ArchiveQueryPriority priority,
                               ArchiveDataSpecification spec)
                               throws IllegalStateException
Ruft Archivdaten von einem Archivsystem mit Hilfe eines Ergebnisdatenstroms ab. Diese Methode wird von einer Applikation aufgerufen um Archivdaten von einem Archivsystem abzufragen. Eine Implementierung dieser Methode sollte ein Objekt zurückliefern über das asynchron auf das Ergebnis der Archivanfrage zugegriffen werden kann. Im Ergebnis wird für die im Parameter spec spezifizierten Daten ein Stream von Ergebnisdatensätzen erwartet.

Parameters:
priority - Priorität der Anfrage
spec - Spezifikation der gewünschten Archivdaten
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Ergebnisdatensätze zugegriffen werden kann.
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

request

ArchiveDataQueryResult request(ArchiveQueryPriority priority,
                               List<ArchiveDataSpecification> specs)
                               throws IllegalStateException
Ruft Archivdaten von einem Archivsystem mit Hilfe mehrerer Ergebnisdatenströme ab. Diese Methode wird von einer Applikation aufgerufen um Archivdaten von einem Archivsystem abzufragen. Eine Implementierung dieser Methode sollte ein Objekt zurückliefern über das asynchron auf die Ergebnisse der Archivanfrage zugegriffen werden kann. Im Ergebnis wird für jede Archivdatenspezifikation in der übergebenen Liste specs jeweils ein Stream von Ergebnisdatensätzen erwartet.

Parameters:
priority - Priorität der Anfrage
specs - Liste mit Spezifikationen der gewünschten Archivdaten
Returns:
Ergebnisobjekt über das asynchron auf die Ergebnisdatenströme mit den gewünschten Ergebnisdatensätzen zugegriffen werden kann.
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

requestInfo

ArchiveInfoQueryResult requestInfo(ArchiveDataSpecification spec)
                                   throws IllegalStateException
Start einer Archivinformationsanfrage an das Archivsystem. Diese Methode wird von einer Applikation aufgerufen, um eine Archivinformationsanfrage an das Archivsystem zu starten. Eine Implementierung dieser Methode sollte ohne zu blockieren ein Objekt zurückliefern über das asynchron auf das Ergebnis der Anfrage zugegriffen werden kann.

Das Ergebnisobjekt beinhaltet eine Liste von Objekten. Diese Objekte geben unter anderem ein Objekt vom Typ ArchiveDataSpecification zurück. Dieses Objekt ist eine Referenz auf den Eingabeparameter spec.

Parameters:
spec - Spezifikation der Archivdaten zu denen Informationen gewünscht werden.
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

subscribeReceiver

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

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

void unsubscribeReceiver(DatasetReceiverInterface receiver,
                         SystemObject object,
                         DataDescription dataDescription)
Die Implementation dieser Methode meldet einen Empfänger ab, der mit der Methode 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.

Parameters:
receiver -
object - System-Objekt für die die spezifizierten Daten angemeldet wurden
dataDescription - Beschreibende Informationen zu den angemeldeten Daten

requestInfo

ArchiveInfoQueryResult requestInfo(List<ArchiveDataSpecification> specs)
                                   throws IllegalStateException
Start einer Archivinformationsanfrage an das Archivsystem. Diese Methode wird von einer Applikation aufgerufen, um eine Archivinformationsanfrage an das Archivsystem zu starten. Eine Implementierung dieser Methode sollte ohne zu blockieren ein Objekt zurückliefern über das asynchron auf das Ergebnis der Anfrage zugegriffen werden kann.

Das Ergebnisobjekt beinhaltet eine Liste von Objekten. Diese Objekte geben unter anderem ein Objekt vom Typ ArchiveDataSpecification zurück. Diese Objekte sind Referenzen auf Einträge des Übergabeparameters specs.

Parameters:
specs - Liste mit Spezifikationen der Archivdaten zu denen Informationen gewünscht werden
Returns:
Ergebnisobjekt über das asynchron auf die gewünschten Informationen zugegriffen werden kann.
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

savePersistentData

ArchiveQueryResult savePersistentData()
                                      throws IllegalStateException
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.

Returns:
Ergebnisobjekt über das Informationen über den Zustand des Auftrags abgefragt werden können
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

restorePersistentData

ArchiveQueryResult restorePersistentData(List<ArchiveInformationResult> requiredData)
                                         throws IllegalStateException
Start der Wiederherstellung von Datensätzen, die der Sicherung übergeben wurden (siehe savePersistentData()). Diese Methode wird von einer Applikation aufgerufen, die Datensätze benötgt, die sich nicht im direkten Zugriff des Archivsystems befinden, sondern bereits der Sicherung übergeben wurden und später gelöscht wurden (siehe deleteDataSimulationVariant(short), deleteData(java.util.List, boolean)). Eine Implementierung dieser Methode sollte ohne zu blockieren ein Objekt zurückliefern über das asynchron auf das Ergebnis des Auftrags zugegriffen werden kann.

Parameters:
requiredData - Eine Liste von Zeitbereichen/Indexbereichen, die Wiederhergestellt werden müssen.
Returns:
Ergebnisobjekt über das Informationen über den Zustand des Auftrags abgefragt werden können
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

deleteDataSimulationVariant

ArchiveQueryResult deleteDataSimulationVariant(short simulationVariant)
                                               throws IllegalStateException
Beauftragt das Archivsystem Archivdaten, die zu einer Simulation gehören, aus dem Archivsystem zu löschen. Der Löschauftrag bezieht sich dabei nicht auf Datensätze, die bereits der Sicherung übergeben wurden und von dieser verwaltet werden (siehe savePersistentData()). Die Methode wird von einer Applikation aufgerufen, um nicht mehr benötigte Datensätze, die zu einer Simulation gehören, aus dem Archivsystem zu löschen.

Parameters:
simulationVariant - Simulationsvariante, ganzzahliger Wert zwischen 1,...,999
Returns:
Ergebnisobjekt, über das Informationen über den Zustand des Auftrags abgefragt werden können
Throws:
IllegalStateException - Das Archivsystem ist nicht erreichbar.

increaseDeleteTime

ArchiveQueryResult increaseDeleteTime(List<ArchiveInformationResult> requiredData,
                                      long timePeriod)
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.

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

deleteData

ArchiveQueryResult deleteData(List<ArchiveInformationResult> dataDisposedToDelete,
                              boolean deleteImmediately)
Beauftragt das Archivsystem die angegebenen Zeitbereiche ohne Rücksicht auf den mit 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.

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

archiveFileSaverAlignment

ArchiveQueryResult archiveFileSaverAlignment(int volumeIdTypB)
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).

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

isArchiveAvailable

boolean isArchiveAvailable()
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.

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

void addArchiveAvailabilityListener(ArchiveAvailabilityListener listener)
Das übergebene Objekt listener wird benachrichtigt sobald sich die Erreichbarkeit des Archivsystems über den Datenverteiler ändert.

Parameters:
listener - Objekt, das benutzt wird um Änderungen der Erreichbarkeit des Archivsystems über den Datenverteiler anzuzeigen

removeArchiveAvailabilityListener

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

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

requestData

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. Sind die übergebenen Listen

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

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. Es werden alle Datenidentifikationen angefragt, die auch beim automatischen Nachfordern angefragt werden.

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