Class ArchiveUser
- java.lang.Object
-
- de.bsvrz.pua.prot.processing.archivebuffer.ArchiveUser
-
public class ArchiveUser extends java.lang.Object
Kapselt alle Informationen die zum Stellen von Archivanfragen nötig sind. Die Klasse ermöglicht es, Standardparameter für Archivanfragen festzulegen. Es wird nur einmal eine Archivanfrage pro Datenidentifikation gestellt. Dabei wird jedoch vorausgesetzt, dass dieRealArchiveElement
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 dersetArchiveDataKinds(ArchiveDataKindCombination)
undsetTimeSpec(ArchiveTimeSpecification)
werden die bisherigen Anmeldungen verworfen. Für Relativanfragen gilt diese Regelung nicht: Hier wird immer eine neue Relativanfrage gestellt. Durch den Aufruf vonrequest(Object,DataDescription,SystemObject)
wird keine Archivanfrage gestellt, sondern es werden alle nötigen Archivanfragen gesammelt. Erst der Aufruf vonexecute()
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 Summary
Constructors Constructor Description ArchiveUser(de.bsvrz.dav.daf.main.archive.ArchiveRequestManager arm, de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification timeSpec, de.bsvrz.dav.daf.main.archive.ArchiveDataKindCombination dataKindCombination, de.bsvrz.dav.daf.main.archive.ArchiveOrder sortOrder, de.bsvrz.dav.daf.main.archive.ArchiveRequestOption requestOptions, de.bsvrz.dav.daf.accessControl.UserInfo userInfo)
Konstruktor
-
Method Summary
Modifier and Type Method Description void
abort()
Beendet alle ausstehenden Archivanfrage.void
execute()
Sendet die bisher inrequest(Object,DataDescription,SystemObject)
gesammelten Archivanfragen in einer Anfrage an das Archivsystem.de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification
getTimeSpec()
void
request(java.lang.Object subscriber, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.config.SystemObject object)
Stellt eine Anfrage ans Archivsystem.de.bsvrz.dav.daf.main.archive.ArchiveDataQueryResult
requestRelative(de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.config.SystemObject object, long timeStamp)
Liefert genau einen Archivdatensatz mit kleineren-gleichen Datenzeitstempel als dem übergebenen Intervallendevoid
setArchiveDataKinds(de.bsvrz.dav.daf.main.archive.ArchiveDataKindCombination dataKindCombination)
Setzt die Datenart, die abgefragt werden soll.void
setTimeSpec(de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification timeSpec)
Setzt die Zeitspezifikation.de.bsvrz.dav.daf.main.archive.ArchiveData
take(java.lang.Object subscriber)
Liefert einen Archivdatensatz.
-
-
-
Constructor Detail
-
ArchiveUser
public ArchiveUser(de.bsvrz.dav.daf.main.archive.ArchiveRequestManager arm, de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification timeSpec, de.bsvrz.dav.daf.main.archive.ArchiveDataKindCombination dataKindCombination, de.bsvrz.dav.daf.main.archive.ArchiveOrder sortOrder, de.bsvrz.dav.daf.main.archive.ArchiveRequestOption requestOptions, de.bsvrz.dav.daf.accessControl.UserInfo userInfo)
Konstruktor- Parameters:
arm
- Anfrageschnittstelle zum ArchivtimeSpec
- Zeitbereich der abgefragt wirddataKindCombination
- Datentyp (online, nachgeliefert, etc.)sortOrder
- Sortierung der nachgelieferten DatenrequestOptions
- Anfrageoptionen: Zustand oder DeltaanfrageuserInfo
- Anfragender Benutzer für Rechteprüfung
-
-
Method Detail
-
request
public void request(java.lang.Object subscriber, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.config.SystemObject object)
Stellt eine Anfrage ans Archivsystem. Falls für die übergebene Datenidentifikation bereits eine Archivanfrage gestellt wurde, wird keine weitere Anfragen gestellt.- Parameters:
subscriber
- Abonnent der ArchivdatendataDescription
- Datenstrukturobject
- Objekt
-
take
public de.bsvrz.dav.daf.main.archive.ArchiveData take(java.lang.Object subscriber) throws java.lang.InterruptedException, java.lang.IllegalStateException, java.io.IOException
Liefert einen Archivdatensatz. Wichtig: Alle Interessenten einer Datenidentifikation müssen diese Methode hintereinander aufrufen. Beispiel: Interessenten a und b für Datenidentifikation x. Die Anfragenreihenfolge take(a) take(b) take(a) ist gültig, take(a) take(a) take(b) nicht!- Parameters:
subscriber
- Interessent- Returns:
- Archivdatensatz.
- Throws:
java.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.
-
requestRelative
public de.bsvrz.dav.daf.main.archive.ArchiveDataQueryResult requestRelative(de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.config.SystemObject object, long timeStamp) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Liefert genau einen Archivdatensatz mit kleineren-gleichen Datenzeitstempel als dem übergebenen Intervallende- Parameters:
dataDescription
- Datenstrukturobject
- ObjekttimeStamp
- Intervallende- Returns:
- Informationen über die Anfrage
- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
-
setTimeSpec
public void setTimeSpec(de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification timeSpec)
Setzt die Zeitspezifikation. Beendet alle bisherigen Verbindungen zum Archivsystem.- Parameters:
timeSpec
- Zeitspezifikation
-
getTimeSpec
public de.bsvrz.dav.daf.main.archive.ArchiveTimeSpecification getTimeSpec()
-
setArchiveDataKinds
public void setArchiveDataKinds(de.bsvrz.dav.daf.main.archive.ArchiveDataKindCombination dataKindCombination)
Setzt die Datenart, die abgefragt werden soll. Beendet alle bisherigen Verbindungen zum Archivsystem.- Parameters:
dataKindCombination
- DataKindCombination
-
abort
public void abort()
Beendet alle ausstehenden Archivanfrage. Es werden sofort alle Archivanfragen beendet, auch diejenigen, die von anderen Objekten gestellt wurden.
-
execute
public void execute() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
Sendet die bisher inrequest(Object,DataDescription,SystemObject)
gesammelten Archivanfragen in einer Anfrage an das Archivsystem.- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Archivsystem ist nicht erreichbar.java.lang.InterruptedException
- Thread wird abgebrochen
-
-