Class QueryTask

All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface
Direct Known Subclasses:
ArchiveInfoQueryTask, ArchiveQueryTask

public abstract class QueryTask extends MultiTask implements de.bsvrz.dav.daf.main.ClientSenderInterface
Oberklasse für Tasks, die Archivanfragen oder Archiv-Informationsanfragen bearbeiten.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected static enum 
    Zustand der Sendesteuerung (Senden / Anhalten / Abbrechen).
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected de.bsvrz.dav.daf.main.config.AttributeGroup
    Attributgruppe für Archiv-Anfragen.
    protected final ByteArrayOutputStream
    Wiederverwendbarer ByteArrayOutputStream.
    protected de.bsvrz.dav.daf.main.DataDescription
    Datenidentifikation der Archiv-Antwort.
    protected de.bsvrz.sys.funclib.dataSerializer.Deserializer
    Der Deserialisierer aus DAF.
    protected de.bsvrz.dav.daf.main.Data
    Dieses Datenobjekt wird zum Senden des Ergebnisses verwendet
    protected de.bsvrz.dav.daf.main.ResultData
    Wird zum Senden verwendet (muss nur einmal angelegt werden)
    protected de.bsvrz.dav.daf.main.config.SystemObject
    Applikations-Objekt des Absenders der Archiv-Anfrage.
    protected int
    Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
    Aktueller Zustand der Sendesteuerung.
    protected de.bsvrz.sys.funclib.dataSerializer.Serializer
    Der Serialisierer aus DAF.
    protected int
    Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt wird.
    protected final Object
    Spezielles Objekt zur Synchronisiserung.

    Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask

    resultData

    Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task

    _debug, _shouldTerminate

    Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface

    START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
  • Constructor Summary

    Constructors
    Constructor
    Description
    Konstruktor für den QueryTask.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Legt alle Datenstrukturen an, die zu Beginn der Anfrage ermittelt werden können.
    void
    dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
     
    void
     
    protected void
    Initialisiert den Task für eine neue Anfrage.
    boolean
    isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
     
    protected static de.bsvrz.dav.daf.main.archive.ArchiveDataSpecification[]
    parseArchiveDataSpec(de.bsvrz.sys.funclib.dataSerializer.Deserializer ds, de.bsvrz.dav.daf.main.config.DataModel dataModel)
    Interpretiert die empfangene Archivanfrage oder Archiv-Informationsanfrage und zerlegt sie in einzelne Unterabfragen vom Typ ArchiveDataSpecification.
    protected void
    sendResultData(byte[] resultBytes, int msgType)
    Sendet das übergebene Byte-Array in einem Ergebnis-Datensatz (ResultData) an das Empfaenger-Applikations-Objekt.
    protected void
    Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.
    protected void
    Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
    Wartet darauf, dass es eine positive Sendesteuerung für das Verschicken der Antworten gibt.

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask

    setTaskIndex, work, work

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueueTask

    step, submit, terminateTask

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask

    execute, getArchMgr

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task

    getDidTree, getPersistenceManager, shouldTerminate, suspendTaskIfNecessary

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • sendingState

      protected QueryTask.SendingState sendingState
      Aktueller Zustand der Sendesteuerung.
    • syncObj

      protected final Object syncObj
      Spezielles Objekt zur Synchronisiserung. Immer dieses anstatt this verwenden!
    • queryAppObj

      protected de.bsvrz.dav.daf.main.config.SystemObject queryAppObj
      Applikations-Objekt des Absenders der Archiv-Anfrage.
    • atgQuery

      protected de.bsvrz.dav.daf.main.config.AttributeGroup atgQuery
      Attributgruppe für Archiv-Anfragen.
    • ddResponse

      protected de.bsvrz.dav.daf.main.DataDescription ddResponse
      Datenidentifikation der Archiv-Antwort.
    • queryIdx

      protected int queryIdx
      Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
    • serializerVersion

      protected int serializerVersion
      Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt wird.
    • gData

      protected de.bsvrz.dav.daf.main.Data gData
      Dieses Datenobjekt wird zum Senden des Ergebnisses verwendet
    • gResultData

      protected de.bsvrz.dav.daf.main.ResultData gResultData
      Wird zum Senden verwendet (muss nur einmal angelegt werden)
    • bosResult

      protected final ByteArrayOutputStream bosResult
      Wiederverwendbarer ByteArrayOutputStream.
    • serializer

      protected de.bsvrz.sys.funclib.dataSerializer.Serializer serializer
      Der Serialisierer aus DAF.
    • deserializer

      protected de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializer
      Der Deserialisierer aus DAF.
  • Constructor Details

    • QueryTask

      public QueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr)
      Konstruktor für den QueryTask.
      Parameters:
      archiveMgr - Der Archiv-Manager.
      tMgr - Der MultiTaskManager.
  • Method Details

    • waitForSendControl

      protected QueryTask.SendingState waitForSendControl() throws InterruptedException
      Wartet darauf, dass es eine positive Sendesteuerung für das Verschicken der Antworten gibt. Diese Methode wartet so lange, wie eine negative Sendesteuerung besteht.
      Returns:
      In der Regel QueryTask.SendingState.SEND, außer es tritt ein Fehler oder Timeout auf. Der Aufrufer muss den Rückgabewert auswerten und entsprechend reagieren.
      Throws:
      InterruptedException - Unterbrochen
    • getObjectsFromDav

      public void getObjectsFromDav()
      Overrides:
      getObjectsFromDav in class MultiTask
    • init

      protected void init()
      Initialisiert den Task für eine neue Anfrage.
    • isRequestSupported

      public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
      Specified by:
      isRequestSupported in interface de.bsvrz.dav.daf.main.ClientSenderInterface
    • dataRequest

      public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
      Specified by:
      dataRequest in interface de.bsvrz.dav.daf.main.ClientSenderInterface
    • subscribeSender

      protected void subscribeSender() throws de.bsvrz.dav.daf.main.OneSubscriptionPerSendData
      Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an. Registriert den StreamMultiplexer für den Empfang von Flusskontroll-Steuerungspaketen.
      Throws:
      de.bsvrz.dav.daf.main.OneSubscriptionPerSendData - Anmeldung besteht bereits
    • unsubscribeSender

      protected void unsubscribeSender()
      Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
    • createQueryData

      protected void createQueryData() throws de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
      Legt alle Datenstrukturen an, die zu Beginn der Anfrage ermittelt werden können.
      Throws:
      de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException - Angefragte Serialisierer-Version ist nicht vorhanden
    • sendResultData

      protected void sendResultData(byte[] resultBytes, int msgType)
      Sendet das übergebene Byte-Array in einem Ergebnis-Datensatz (ResultData) an das Empfaenger-Applikations-Objekt.
      Parameters:
      resultBytes - Zu versendendes Byte-Array
      msgType - ArchivNachrichtenTyp wie definiert in MessageType
    • parseArchiveDataSpec

      protected static de.bsvrz.dav.daf.main.archive.ArchiveDataSpecification[] parseArchiveDataSpec(de.bsvrz.sys.funclib.dataSerializer.Deserializer ds, de.bsvrz.dav.daf.main.config.DataModel dataModel) throws IOException
      Interpretiert die empfangene Archivanfrage oder Archiv-Informationsanfrage und zerlegt sie in einzelne Unterabfragen vom Typ ArchiveDataSpecification.
      Parameters:
      ds - Deserialisierer mit der Anfrage.
      dataModel - Datenmodell
      Returns:
      Feld von Unterabfragen vom Typ ArchiveDataSpecification.
      Throws:
      IOException - Allgemeiner IO-Fehler