Class 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 setArchiveDataKinds(ArchiveDataKindCombination) 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 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 in request(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 Intervallende
      void 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 Archiv
        timeSpec - Zeitbereich der abgefragt wird
        dataKindCombination - Datentyp (online, nachgeliefert, etc.)
        sortOrder - Sortierung der nachgelieferten Daten
        requestOptions - Anfrageoptionen: Zustand oder Deltaanfrage
        userInfo - 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 Archivdaten
        dataDescription - Datenstruktur
        object - 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-/Ausgabefehler
        java.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 - Datenstruktur
        object - Objekt
        timeStamp - 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 in request(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