Package de.bsvrz.ars.ars.mgmt.tasks
Class QueryTask
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
de.bsvrz.ars.ars.mgmt.tasks.QueueTask<de.bsvrz.dav.daf.main.ResultData>
de.bsvrz.ars.ars.mgmt.tasks.MultiTask
de.bsvrz.ars.ars.mgmt.tasks.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 ClassesModifier and TypeClassDescriptionprotected static enumZustand der Sendesteuerung (Senden / Anhalten / Abbrechen). -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected de.bsvrz.dav.daf.main.config.AttributeGroupAttributgruppe für Archiv-Anfragen.protected final ByteArrayOutputStreamWiederverwendbarer ByteArrayOutputStream.protected de.bsvrz.dav.daf.main.DataDescriptionDatenidentifikation der Archiv-Antwort.protected de.bsvrz.sys.funclib.dataSerializer.DeserializerDer Deserialisierer aus DAF.protected de.bsvrz.dav.daf.main.DataDieses Datenobjekt wird zum Senden des Ergebnisses verwendetprotected de.bsvrz.dav.daf.main.ResultDataWird zum Senden verwendet (muss nur einmal angelegt werden)protected de.bsvrz.dav.daf.main.config.SystemObjectApplikations-Objekt des Absenders der Archiv-Anfrage.protected intAnfrage-Index der anfragenden Applikation zur Archiv-Anfrage.protected QueryTask.SendingStateAktueller Zustand der Sendesteuerung.protected de.bsvrz.sys.funclib.dataSerializer.SerializerDer Serialisierer aus DAF.protected intSerialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt wird.protected final ObjectSpezielles Objekt zur Synchronisiserung.Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask
resultDataFields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
_debug, _shouldTerminateFields 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
ConstructorsConstructorDescriptionQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr) Konstruktor für den QueryTask. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidLegt alle Datenstrukturen an, die zu Beginn der Anfrage ermittelt werden können.voiddataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state) voidprotected voidinit()Initialisiert den Task für eine neue Anfrage.booleanisRequestSupported(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 voidsendResultData(byte[] resultBytes, int msgType) Sendet das übergebene Byte-Array in einem Ergebnis-Datensatz (ResultData) an das Empfaenger-Applikations-Objekt.protected voidMeldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.protected voidMeldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.protected QueryTask.SendingStateWartet 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, workMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueueTask
step, submit, terminateTaskMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
execute, getArchMgrMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
addTaskStepListener, cleanUp, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, start, taskStepDoneMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
getDidTree, getPersistenceManager, shouldTerminate, suspendTaskIfNecessary
-
Field Details
-
sendingState
Aktueller Zustand der Sendesteuerung. -
syncObj
Spezielles Objekt zur Synchronisiserung. Immer dieses anstatt this verwenden! -
queryAppObj
protected de.bsvrz.dav.daf.main.config.SystemObject queryAppObjApplikations-Objekt des Absenders der Archiv-Anfrage. -
atgQuery
protected de.bsvrz.dav.daf.main.config.AttributeGroup atgQueryAttributgruppe für Archiv-Anfragen. -
ddResponse
protected de.bsvrz.dav.daf.main.DataDescription ddResponseDatenidentifikation der Archiv-Antwort. -
queryIdx
protected int queryIdxAnfrage-Index der anfragenden Applikation zur Archiv-Anfrage. -
serializerVersion
protected int serializerVersionSerialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt wird. -
gData
protected de.bsvrz.dav.daf.main.Data gDataDieses Datenobjekt wird zum Senden des Ergebnisses verwendet -
gResultData
protected de.bsvrz.dav.daf.main.ResultData gResultDataWird zum Senden verwendet (muss nur einmal angelegt werden) -
bosResult
Wiederverwendbarer ByteArrayOutputStream. -
serializer
protected de.bsvrz.sys.funclib.dataSerializer.Serializer serializerDer Serialisierer aus DAF. -
deserializer
protected de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializerDer Deserialisierer aus DAF.
-
-
Constructor Details
-
QueryTask
Konstruktor für den QueryTask.- Parameters:
archiveMgr- Der Archiv-Manager.tMgr- Der MultiTaskManager.
-
-
Method Details
-
waitForSendControl
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:
getObjectsFromDavin classMultiTask
-
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:
isRequestSupportedin interfacede.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:
dataRequestin interfacede.bsvrz.dav.daf.main.ClientSenderInterface
-
subscribeSender
protected void subscribeSender() throws de.bsvrz.dav.daf.main.OneSubscriptionPerSendDataMeldet 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.NoSuchVersionExceptionLegt 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-ArraymsgType- ArchivNachrichtenTyp wie definiert inMessageType
-
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
-