de.bsvrz.dav.daf.main.impl.archive.request
Class SubscriptionArchiveOnlineDataManager.Receiver

java.lang.Object
  extended by de.bsvrz.dav.daf.main.impl.archive.request.SubscriptionArchiveOnlineDataManager.Receiver
All Implemented Interfaces:
ClientReceiverInterface
Enclosing class:
SubscriptionArchiveOnlineDataManager

private final class SubscriptionArchiveOnlineDataManager.Receiver
extends Object
implements ClientReceiverInterface

Objekt, das Onlinedaten puffert oder durchreicht, es stellt ebenfalls den ersten Online verfügbaren Datensatz zur Verfügung. Es enthält alle Informationen, die nötig sind, um ein anderes Objekt Archivanfragen stellen zu lassen. Es stellt ein Synchronisationsobjekt zur Verfügung, auf dem sich ein anderes Objekt synchronisieren kann.


Field Summary
private  ArchiveRequestManager _archive
          Objekt, über das Archivanfragen gestellt werden können.
private  SubscriptionArchiveOnlineDataManager.ArchiveDataRequester _archiveThread
          Thread, der die Archivdaten anfordert und vor die Onlinedaten mischt
private  ClientDavInterface _connection
          TBD wird benötigt, wenn es nur begrentzt viele Thread geben soll Wird zum an/abmelden der Datenidentifikationen benötigt
private  DataDescription _dataDescription
          Wird für die Archivanfrage gebraucht
private  Object _dataReceived
          Objekt, auf das synchronisiert wird sobald Daten empfangen werden.
private  ResultData _firstOnlineDataSet
          Speichert den ersten online Datensatz, dieser wird gebraucht, um den Endzeitpunkt der Archivanfrage zu bestimmen
private  boolean _handOverOnline
          Können die online empfangenen Daten direkt durchgereicht werden? Das ist möglich, wenn die Archivdaten alle übertragen wurden und der Puffer, der die online Daten speichert, leer ist.
private  long _history
          Zeitbereich oder Index, der aus dem aus Archivsystem angefordert werden soll.
private  HistoryTypeParameter _historyType
          bezieht sich der Wert in der Variablen _history auf einen Zeitbereich oder einen Datenindex
private  List<ResultData[]> _onlineBuffer
          Puffert online Daten während Archivdaten angefordert werden.
private  boolean _receivedFirstOnlineDataSet
          Wurde der erste online Datensatz empfangen
private  ReceiveOptions _receiveOptions
          Wird benötigt um zu entscheiden ob die Archidaten delta oder normal sein sollen
private  DatasetReceiverInterface _receiverArchiveOnlineStream
          Empfänger, der die gemischten Archin/Onlinedaten haben möchte.
private  SystemObject _systemObject
          Wird für die Archivanfrage gebraucht
private  boolean _unsubcribeReceiver
          Diese Variable wird true, wenn der Sender abgemeldet wurde.
 
Constructor Summary
SubscriptionArchiveOnlineDataManager.Receiver(ArchiveRequestManager archive, ClientDavInterface connection, DatasetReceiverInterface receiverArchiveOnlineStream, SystemObject systemObject, DataDescription dataDescription, ReceiveOptions receiveOptions, HistoryTypeParameter historyType, long history)
           
 
Method Summary
private  Object getDataReceived()
           
private  ResultData getFirstOnlineDataSet()
           
private  boolean isReceivedFirstOnlineDataSet()
           
 void sendData(Dataset[] datasetResult)
          Verschickt Datensätze an den Vorgegebenen Empfänger, falls dieser die Verbindung noch nicht abgemeldet hat.
private  void sendOnlineBuffer()
          Diese Methode wird aufgerufen, sobald alle Archivdaten vor den Onlinestrom gemischt wurden.
 void unsubscribeReceiver()
          Diese Methode wird aufgerufen, wenn der Empfänger abgemeldet wird.
 void update(ResultData[] results)
          Aktualisierungsmethode, die nach Empfang eines angemeldeten Datensatzes von den Datenverteiler-Applikationsfunktionen aufgerufen wird.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_archive

private final ArchiveRequestManager _archive
Objekt, über das Archivanfragen gestellt werden können. Wird benötigt um Archivdaten vor den Onlinestrom zu mischen


_connection

private final ClientDavInterface _connection
TBD wird benötigt, wenn es nur begrentzt viele Thread geben soll Wird zum an/abmelden der Datenidentifikationen benötigt


_onlineBuffer

private final List<ResultData[]> _onlineBuffer
Puffert online Daten während Archivdaten angefordert werden. Der Puffer enthält auch den ersten Datensatz, der zum rausfinden des Endzeitpunkts der Archivanfrage benötigt wird.


_receiverArchiveOnlineStream

private final DatasetReceiverInterface _receiverArchiveOnlineStream
Empfänger, der die gemischten Archin/Onlinedaten haben möchte.


_receiveOptions

private final ReceiveOptions _receiveOptions
Wird benötigt um zu entscheiden ob die Archidaten delta oder normal sein sollen


_historyType

private final HistoryTypeParameter _historyType
bezieht sich der Wert in der Variablen _history auf einen Zeitbereich oder einen Datenindex


_history

private long _history
Zeitbereich oder Index, der aus dem aus Archivsystem angefordert werden soll. Diese Variable wird im laufe der Archivanfrage angepaßt. Wenn 10 Archivdaten benötigt werden, aber es werden nur 5 empfangen, müssen in der nächsten Archivanfrage nur noch 5 Archivdaten angefordert werden. Das selbe passiert mit einer Anfrage, die sich auf Zeit bezieht, wenn 4 Stunden benötigt werden, es werden aber nur 3 geliefert, wird die nächste Archivanfrage auf 1 Stunde relativ gestellt. Kommentar Konstruktor beachten.


_dataReceived

private final Object _dataReceived
Objekt, auf das synchronisiert wird sobald Daten empfangen werden. Synchronisiert sich jemand anderes auf das Objekt, können solange keine Daten mehr empfangen werden (Zeit um den Puffer zu leeren).


_receivedFirstOnlineDataSet

private boolean _receivedFirstOnlineDataSet
Wurde der erste online Datensatz empfangen


_handOverOnline

private boolean _handOverOnline
Können die online empfangenen Daten direkt durchgereicht werden? Das ist möglich, wenn die Archivdaten alle übertragen wurden und der Puffer, der die online Daten speichert, leer ist.


_firstOnlineDataSet

private ResultData _firstOnlineDataSet
Speichert den ersten online Datensatz, dieser wird gebraucht, um den Endzeitpunkt der Archivanfrage zu bestimmen


_systemObject

private final SystemObject _systemObject
Wird für die Archivanfrage gebraucht


_dataDescription

private final DataDescription _dataDescription
Wird für die Archivanfrage gebraucht


_unsubcribeReceiver

private boolean _unsubcribeReceiver
Diese Variable wird true, wenn der Sender abgemeldet wurde. Die Variable verhindert dann, das weitere Daten an den Empfänger verschickt werden.


_archiveThread

private final SubscriptionArchiveOnlineDataManager.ArchiveDataRequester _archiveThread
Thread, der die Archivdaten anfordert und vor die Onlinedaten mischt

Constructor Detail

SubscriptionArchiveOnlineDataManager.Receiver

public SubscriptionArchiveOnlineDataManager.Receiver(ArchiveRequestManager archive,
                                                     ClientDavInterface connection,
                                                     DatasetReceiverInterface receiverArchiveOnlineStream,
                                                     SystemObject systemObject,
                                                     DataDescription dataDescription,
                                                     ReceiveOptions receiveOptions,
                                                     HistoryTypeParameter historyType,
                                                     long history)
Method Detail

update

public void update(ResultData[] results)
Description copied from interface: ClientReceiverInterface
Aktualisierungsmethode, die nach Empfang eines angemeldeten Datensatzes von den Datenverteiler-Applikationsfunktionen aufgerufen wird. Diese Methode muss von der Applikation zur Verarbeitung der empfangenen Datensätze implementiert werden.

Specified by:
update in interface ClientReceiverInterface
Parameters:
results - Feld mit den empfangenen Ergebnisdatensätzen.

unsubscribeReceiver

public void unsubscribeReceiver()
Diese Methode wird aufgerufen, wenn der Empfänger abgemeldet wird. Weitere Datensätze, die zu dem Empfänger geschickt werden sollen, werden nicht weitergereicht. Falls der Thread, der Archivdaten anfordert, noch Archivdaten verschicken will, werden diese ebenfalls nicht durchgereicht.


getDataReceived

private Object getDataReceived()

isReceivedFirstOnlineDataSet

private boolean isReceivedFirstOnlineDataSet()

getFirstOnlineDataSet

private ResultData getFirstOnlineDataSet()

sendData

public void sendData(Dataset[] datasetResult)
Verschickt Datensätze an den Vorgegebenen Empfänger, falls dieser die Verbindung noch nicht abgemeldet hat. Wurde die Verbindung abgemeldet, dann werden die Daten verworfen.

Parameters:
datasetResult - Archivdaten oder ResultData, die verschickt werden sollen

sendOnlineBuffer

private void sendOnlineBuffer()
Diese Methode wird aufgerufen, sobald alle Archivdaten vor den Onlinestrom gemischt wurden. Der Puffer, der die Onlinedaten zwischengespeichert hat, wird dann übertragen. Die Methode sperrt die update-Methode und setzt danach eine Variable, so dass alle folgenden Onlinedaten direkt durchgereicht werden, ohne gepuffert zu werden.