de.bsvrz.pua.prot.processing.archivebuffer
Class ArchiveUser

java.lang.Object
  extended by 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 die 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 Andragen pro Objekttyp in einer Archivanfrage zusammen. (D.h. alle für alle Datenidentifikationen mit dem gleichen Objekttyp wir eine Anfrage gestellt) Wichtig: Die Methoden dieser Klasse sind nicht Thread safe!

Version:
$Revision: 1.2 $ / $Date: 2008/01/22 16:55:49 $ / ($Author: yvonnes $)
Author:
beck et al. projects GmbH, Martin Hilgers

Constructor Summary
ArchiveUser(ArchiveRequestManager arm, ArchiveTimeSpecification timeSpec, ArchiveDataKind dataKind, ArchiveOrder sortOrder, ArchiveRequestOption requestOptions)
          Konstruktor
 
Method Summary
 void abort()
          Beendet alle ausstehenden Archivanfrage.
 void execute()
          Sendet die bisher in request(Object, DataDescription, SystemObject) gesammelten Archivanfragen in einer Anfrage an das Archivsystem.
 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 setArchiveDataKind(ArchiveDataKind adk)
          Setzt die Datenart, die abgefragt werden soll.
 void setTimeSpec(ArchiveTimeSpecification timeSpec)
          Setzt die Zeitspezifikation.
 ArchiveData take(java.lang.Object subscriber)
          Liefert einen Archivdatensatz.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArchiveUser

public ArchiveUser(ArchiveRequestManager arm,
                   ArchiveTimeSpecification timeSpec,
                   ArchiveDataKind dataKind,
                   ArchiveOrder sortOrder,
                   ArchiveRequestOption requestOptions)
Konstruktor

Parameters:
arm - Anfrageschnittstelle zum Archiv
timeSpec - Zeitbereich der abgefragt wird
dataKind - Datentyp (online, nachgeliefert, etc.)
sortOrder - Sortierung der nachgelieferten Daten
requestOptions - Anfrageoptionen: Zustand oder Deltaanfrage
Method Detail

request

public void request(java.lang.Object subscriber,
                    DataDescription dataDescription,
                    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 Archivdaten
dataDescription - Datenstruktur
object - Objekt

take

public 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 & 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-/Ausgabefehler
java.lang.IllegalStateException - Falls der Ergebnisdatenstrom mit der Methode abort abgebrochen wurde.

requestRelative

public ArchiveDataQueryResult requestRelative(DataDescription dataDescription,
                                              SystemObject object,
                                              long timeStamp)
Liefert genau einen Archivdatensatz mit kleineren-gleichen Datenzeitstempel als dem übergebenen Intervallende

Parameters:
dataDescription - Datenstruktur
object - Objekt
timeStamp - Intervallende
Returns:
Informationen über die Anfrage

setTimeSpec

public void setTimeSpec(ArchiveTimeSpecification timeSpec)
Setzt die Zeitspezifikation. Beendet alle bisherigen Verbindungen zum Archivsystem.

Parameters:
timeSpec - Zeitspezifikation

setArchiveDataKind

public void setArchiveDataKind(ArchiveDataKind adk)
Setzt die Datenart, die abgefragt werden soll. Beendet alle bisherigen Verbindungen zum Archivsystem.

Parameters:
adk - Archivdatenart. (Online Daten, nachgeliefertde Daten, etc.)

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 FailureException,
                    java.lang.InterruptedException
Sendet die bisher in request(Object, DataDescription, SystemObject) gesammelten Archivanfragen in einer Anfrage an das Archivsystem.

Throws:
FailureException - Archivsystem ist nicht erreichbar.
java.lang.InterruptedException - Thread wird abgebrochen


Copyright © 2005-2008 beck et al. projects GmbH All Rights Reserved.