public class ArchiveUser
extends java.lang.Object
RealArchiveElement
Objekte alle direkt hintereinander nach dem gleichen Wert anfragen. Es ist nicht möglich, dass
eines dieser Objekte z.B. drei Werte aus dem Archivsystem holt, solange ein anderes Objekt nur einen Wert abgeholt hat. Dieses Fehlverhalten wird von dieser
Klasse nicht abgefangen! Durch Aufruf der #setArchiveDataKind(ArchiveDataKind)
und setTimeSpec(ArchiveTimeSpecification)
werden die
bisherigen Anmeldungen verworfen. Für Relativanfragen gilt diese Regelung nicht: Hier wird immer eine neue Relativanfrage gestellt. Durch den Aufruf von
request(Object,DataDescription,SystemObject)
wird keine Archivanfrage gestellt, sondern es werden alle nötigen Archivanfragen gesammelt. Erst der
Aufruf von execute()
fasst alle bisher gesammelten Anfragen pro Objekttyp in einer Archivanfrage zusammen. (D.h. alle für alle Datenidentifikationen
mit dem gleichen Objekttyp wir eine Anfrage gestellt) Die Methoden dieser Klasse sind threadsafe.Constructor and Description |
---|
ArchiveUser(ArchiveRequestManager arm,
ArchiveTimeSpecification timeSpec,
ArchiveDataKindCombination dataKindCombination,
ArchiveOrder sortOrder,
ArchiveRequestOption requestOptions)
Konstruktor
|
Modifier and Type | Method and Description |
---|---|
void |
abort()
Beendet alle ausstehenden Archivanfrage.
|
void |
execute()
Sendet die bisher in
request(Object,DataDescription,SystemObject) gesammelten Archivanfragen in einer Anfrage an das Archivsystem. |
ArchiveTimeSpecification |
getTimeSpec() |
void |
request(java.lang.Object subscriber,
DataDescription dataDescription,
SystemObject object)
Stellt eine Anfrage ans Archivsystem.
|
ArchiveDataQueryResult |
requestRelative(DataDescription dataDescription,
SystemObject object,
long timeStamp)
Liefert genau einen Archivdatensatz mit kleineren-gleichen Datenzeitstempel als dem übergebenen Intervallende
|
void |
setArchiveDataKinds(ArchiveDataKindCombination dataKindCombination)
Setzt die Datenart, die abgefragt werden soll.
|
void |
setTimeSpec(ArchiveTimeSpecification timeSpec)
Setzt die Zeitspezifikation.
|
ArchiveData |
take(java.lang.Object subscriber)
Liefert einen Archivdatensatz.
|
public ArchiveUser(ArchiveRequestManager arm, ArchiveTimeSpecification timeSpec, ArchiveDataKindCombination dataKindCombination, ArchiveOrder sortOrder, ArchiveRequestOption requestOptions)
arm
- Anfrageschnittstelle zum ArchivtimeSpec
- Zeitbereich der abgefragt wirddataKindCombination
- Datentyp (online, nachgeliefert, etc.)sortOrder
- Sortierung der nachgelieferten DatenrequestOptions
- Anfrageoptionen: Zustand oder Deltaanfragepublic void request(java.lang.Object subscriber, DataDescription dataDescription, SystemObject object)
subscriber
- Abonnent der ArchivdatendataDescription
- Datenstrukturobject
- Objektpublic ArchiveData take(java.lang.Object subscriber) throws java.lang.InterruptedException, java.lang.IllegalStateException, java.io.IOException
subscriber
- Interessentjava.lang.InterruptedException
- Falls der aufrufende Thread unterbrochen wurde, während auf den nächsten Datensatz gewartet wurde.java.io.IOException
- Ein-/Ausgabefehlerjava.lang.IllegalStateException
- Falls der Ergebnisdatenstrom mit der Methode abort abgebrochen wurde.public ArchiveDataQueryResult requestRelative(DataDescription dataDescription, SystemObject object, long timeStamp)
dataDescription
- Datenstrukturobject
- ObjekttimeStamp
- Intervallendepublic void setTimeSpec(ArchiveTimeSpecification timeSpec)
timeSpec
- Zeitspezifikationpublic ArchiveTimeSpecification getTimeSpec()
public void setArchiveDataKinds(ArchiveDataKindCombination dataKindCombination)
dataKindCombination
- public void abort()
public void execute() throws FailureException, java.lang.InterruptedException
request(Object,DataDescription,SystemObject)
gesammelten Archivanfragen in einer Anfrage an das Archivsystem.FailureException
- Archivsystem ist nicht erreichbar.java.lang.InterruptedException
- Thread wird abgebrochen