public abstract class DataLoader extends Object
Modifier and Type | Field and Description |
---|---|
private String |
_aspectPid
Aspekt-Pid
|
private String |
_attributeGroupPid
Attributgruppen-Pid
|
private ClientDavInterface |
_connection
Dav-Verbindung
|
private DataDescription |
_dataDescription
Datenbeschreibung
|
private DataState |
_dataState |
protected Debug |
_debug
Debug
|
private boolean |
_hasData
Ob auch wirklich Daten da sind (nicht true wenn "keine Daten" oder "keine Quelle")
|
private boolean |
_isInitialized
Ob der Receiver bereits etwas empfangen hat (auch true wenn "keine Daten" oder "keine Quelle")
|
private long |
_noDataTime |
protected Lock |
_readLock
Lock, das zum Lesen von Daten benutzt wird.
|
private ReadWriteLock |
_readWriteLock |
private ClientReceiverInterface |
_receiver
Empfänger
|
private SystemObject |
_systemObject
Gekapseltes Systemobjekt
|
private Object |
_updateNotifier
Objekt, das für notifyAll() benutzt wird um das Eintreffen von Daten zu signalisieren
|
private boolean |
_waitForData
Ob auf das Eintreffen von Daten gewartet werden soll, oder ob auch das Eintreffen von "keine Daten" oder "keine Quelle" ausreichen soll, mit dem Initialisieren aufzuhören
|
protected Lock |
_writeLock |
private static int |
TIMEOUT
Wie lange auf Daten gewartet wird (in ms)
|
Constructor and Description |
---|
DataLoader(ClientDavInterface connection,
String attributeGroupPid,
String aspectPid,
Object lock)
Erstellt ein neues Objekt, für das Daten aktualisiert werden sollen.
|
Modifier and Type | Method and Description |
---|---|
protected abstract void |
deactivateInvalidChild(DataLoader node)
Wenn es ein Problem mit der Rekursion gibt, wird dieses Objekt hiermit angewiesen den Verweis auf das angegebene (Unter-)Objekt zu deaktivieren.
|
protected abstract Collection<DataLoader> |
getChildObjects()
Gibt die untergeordneten Objekte zurück.
|
(package private) ClientDavInterface |
getConnection()
Gibt die Verbindung zum Datenverteiler zurück
|
DataState |
getDataState()
Gibt den aktuellen Zustand zurück
|
long |
getNoDataTime()
Gibt zurück, wie lange keine Daten eingetroffen sind
|
SystemObject |
getSystemObject()
Gibt das Systemobjekt zurück
|
(package private) void |
invalidate()
Wird für Tests usw.
|
boolean |
isInitialized()
Prüft, ob dieses DataLoader-Objekt mit dem Laden der Daten fertig ist
|
protected void |
startDataListener(SystemObject systemObject)
Startet das Aktualisieren der Daten über das ClientReceiverInterface.
|
void |
stopDataListener()
Beendet das Aktualisieren der Daten über das ClientReceiverInterface
|
String |
toString() |
String |
toString(boolean verbose)
Bietet auf Wunsch eine ausführlichere String-Darstellung des Objekts (Allerdings auf Kosten der Verarbeitungszeit)
|
(package private) String |
toString(boolean verbose,
int depth)
Bietet auf Wunsch eine ausführlichere String-Darstellung des Objekts (Allerdings auf Kosten der Verarbeitungszeit)
|
protected abstract void |
update(Data data)
Wird aufgerufen, wenn neue Daten eingetroffen sind.
|
void |
waitForInitialization()
Wartet bis dieses Objekt mit dem Laden fertig ist, aber maximal die in
TIMEOUT angegebene Zeit. |
void |
waitForInitializationTree()
Wartet bis dieses Objekt und alle Kindobjekte mit dem Laden fertig sind, aber pro Objekt maximal die in
TIMEOUT angegebene Zeit. |
private final ClientReceiverInterface _receiver
private DataDescription _dataDescription
private SystemObject _systemObject
private final ClientDavInterface _connection
private final String _attributeGroupPid
private final String _aspectPid
protected final Debug _debug
private volatile boolean _waitForData
private volatile boolean _isInitialized
private volatile boolean _hasData
private final Object _updateNotifier
private static final int TIMEOUT
private final ReadWriteLock _readWriteLock
protected final Lock _readLock
protected final Lock _writeLock
private volatile long _noDataTime
private volatile DataState _dataState
public DataLoader(ClientDavInterface connection, String attributeGroupPid, String aspectPid, Object lock)
connection
- Verbindung zum DatenverteilerattributeGroupPid
- AttributgruppeaspectPid
- Aspektlock
- protected abstract void update(Data data)
data
- Data-Objekt entsprechend Attributgruppe und Aspektprotected abstract Collection<DataLoader> getChildObjects()
HighLevelSubscriptionsManager
über geänderte Benutzerrechte zu informieren. Achtung: Es
werden nur die direkten Kinder zurückzugeben, nicht die "Enkel" usw. - Will man alle "Enkel" usw. haben muss man diese Funktion rekursiv aufrufen.deactivateInvalidChild(DataLoader)
deaktivierte Kindelemente werden nicht aufgeführt.protected final void startDataListener(SystemObject systemObject)
update(de.bsvrz.dav.daf.main.Data)
-Methode aufgerufen (auch nach dem
ersten Aufruf der Methode). Um das Laden der Daten anzuhalten ist stopDataListener()
aufzurufen.systemObject
- Objekt für das die Daten geholt werden sollenpublic void stopDataListener()
protected abstract void deactivateInvalidChild(DataLoader node)
node
- Das zu entfernende Kindobjektpublic String toString(boolean verbose)
verbose
- ausführlichere Darstellung wenn trueString toString(boolean verbose, int depth)
verbose
- ausführlichere Darstellung wenn truedepth
- Tiefe für Einrückung zur DarstellungClientDavInterface getConnection()
public boolean isInitialized()
public long getNoDataTime()
public DataState getDataState()
public SystemObject getSystemObject()
public void waitForInitialization()
TIMEOUT
angegebene Zeit. Bei Anfragen an dieses Objekt, sollte zu erst diese
Funktion aufgerufen werden um sicherzustellen, das das Objekt bereits Daten erhalten hat.public void waitForInitializationTree()
TIMEOUT
angegebene Zeit.void invalidate()