public abstract class DeConversionModul extends java.lang.Object implements DeConversionInterface, de.bsvrz.dav.daf.main.ClientReceiverInterface, de.bsvrz.dav.daf.main.ClientSenderInterface
DeConversionInterface
und zusätzlich ein Reihe von notwendigen Methoden
zentral implementiert. Von dieser abstrakten Klasse werden alle konkreten Umsetzungsklassen direkt oder indirekt
abgeleitet.Modifier and Type | Field and Description |
---|---|
private CollectDeBlocks |
_collectDeBlocks
ToDo: Beschreibung Feld
|
de.bsvrz.dav.daf.main.config.DataModel |
_config
Datenmodell der Konfiguration.
|
(package private) java.lang.reflect.Method |
_conversionMethod
Methode im UmsetzungsModul, welche dynamisch zur Laufzeit ermittelt wird.
|
(package private) java.lang.Class[] |
_conversionMethodArguments
Argumente der Methode im UmsetzungsModul, welche dynamisch zur Laufzeit ermittelt wird.
|
(package private) java.lang.String |
_conversionMethodName
MethodenName im UmsetzungsModul, welcher dynamisch zur Laufzeit ermittelt wird.
|
(package private) java.lang.String |
_conversionModulName
Name des UmsetzungsModul für die Konvertierung der Telegramme in Attributgruppen (und zurück)
|
(package private) de.bsvrz.dav.daf.main.ClientDavInterface |
_daf
DaV Interface.
|
private java.util.List<java.lang.Object[]> |
_davToTlsList
Liste, in der das Verhalten beim Empfang von Attributgruppen festgelegt wird.
|
protected De |
_de
Objektreferenz auf das aufrufende De-Objekt.
|
protected Eak |
_eak
Objektreferenz auf das aufrufende dem De-Objekt übergeordnete Eak-Objekt.
|
protected EakConversionInterface |
_eakConversionModul
Objektreferenz auf das Eak-Umwandlaungs-Objekt, welches für die Auswertung De-übergreifender Informationen
(Zeitstempel etc. ) zuständig ist.
|
private boolean |
_isAngemeldetBetriebsMeldungenErzeugen
Flag, um doppelte Anmeldungen zur Verwaltung der Betriebsmeldungen in Umsetzungsmethoden zu verhindern
|
private boolean |
_isAngemeldetPassivierungUmsetzungsMethoden
Flag, um doppelte Anmeldungen zur Verwaltung der Passivierung von Umsetungsmethoden zu verhindern
|
private boolean |
_isBetriebsMeldungenErzeugen
Legt fest, ob Betriebsmeldungen in Umsetzungsmethoden verschickt werden oder nicht
|
private boolean |
_isFg4AngemeldetAlsCluster
Flag, um doppelte Sendeanmeldungen von FG4-DE-Clustern zu verhindern
|
private boolean |
_isFg4AngemeldetAlsSammelKanal
Flag, um doppelte Sendeanmeldungen von FG4-DE-Sammelkanälen zu verhindern
|
private boolean |
_isPassivierungUmsetzungsMethoden
Legt fest, ob Umsetungsmethoden ausgeführt werden sollen oder nicht
|
(package private) java.util.Map<java.lang.String,DeBlock> |
_lastSendDeBlock
Hashtable mit dem jeweils letzten Stand eines versandten De-Blocks für jede Knotennummer-DeNummer-Fg-Typ-Id
Kombination.
|
(package private) MessageSender |
_messageSender
Zugriff auf das Objekt zum Versenden von Betriebsmeldungen
|
private static java.text.DecimalFormat |
_numberFormat
Formatstring für die Formatierung der Zahlenausgaben für die Fg, Typ und Id Nummernkonvertierung beim ermitteln
des Methodennamen
|
private java.util.List<java.lang.Object[]> |
_tlsToDavList
Liste, in der das Verhalten beim Empfang von TLS-Daten festgelegt wird.
|
static int |
ASP
Index für den Zugriff auf den Aspekt in den Objekten davToTls und tlsToDav
|
static int |
ATG
Index für den Zugriff auf die Attributgruppe in den Objekten davToTls und tlsToDav
|
private static de.bsvrz.sys.funclib.debug.Debug |
debug
DebugLogger für Debug-Ausgaben
|
static int |
FG
Index für den Zugriff auf die Funktionsgruppe in den Objekten davToTls und tlsToDav
|
static int |
ID
Index für den Zugriff auf die ID in den Objekten davToTls und tlsToDav
|
static int |
OT
Index für den Zugriff auf den ObjektTyp in den Objekten davToTls und tlsToDav
|
static int |
TYP
Index für den Zugriff auf den Typ in den Objekten davToTls und tlsToDav
|
Constructor and Description |
---|
DeConversionModul(de.bsvrz.dav.daf.main.ClientDavInterface daf,
Eak eak,
De de)
Erzeugt ein Objekt vom Typ DeConversionModul
|
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
buildMethodName(java.lang.Object[] tlsSendReceiveDescription)
Bildet den Methodennamen aus den Einzelangaben von davToTls und tlsToDav.
|
void |
dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object,
de.bsvrz.dav.daf.main.DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation.
|
de.bsvrz.dav.daf.main.ClientDavInterface |
getClientDavInterface()
Ermöglicht den Zugriff auf die aktuelle Datenverteilerverbindung.
|
de.bsvrz.dav.daf.main.config.DataModel |
getConfig()
Liefert das aktuelle Datenmodell
|
java.util.List<java.lang.Object[]> |
getDavToTlsList()
Liste, in der das Verhalten beim Senden von TLS-Daten festgelegt wird.
|
java.util.List<java.lang.Object[]> |
getTlsToDavList()
Liste, in der das Verhalten beim Empfang von TLS-Daten festgelegt wird.
|
private boolean |
isAllowedToSend(De de,
DeBlock deBlock)
Ermittelt, ob ein DE-Block (für die DE255 bzw. die DE0 und die Clusterkanäle) überhaupt an die DE
gesendet werden darf.
|
boolean |
isBetriebsMeldungenErzeugen()
ToDo: Beschreibung der Methode
|
boolean |
isPassivierungUmsetzungsMethoden()
ToDo: Beschreibung der Methode
|
boolean |
isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object,
de.bsvrz.dav.daf.main.DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht
sind und mit der Methode
dataRequest verarbeitet werden. |
void |
processDeBlock(DeBlock deBlock)
Verarbeitet einen DeBlock.
|
void |
sendData(de.bsvrz.dav.daf.main.ResultData result)
Sendet einen Ergebnisdatensatz zum Datenverteiler.
|
void |
sendData(de.bsvrz.dav.daf.main.ResultData[] results)
Sendet mehrere Ergebnisdatensätze zum Datenverteiler.
|
void |
sendInitialDeBlock(java.lang.String deBlockKey,
int type,
int id)
Methode zum versenden des jeweils letzten Standes eines bereits versandten De-Blocks für jede
Knotennummer-DeNummer-Fg-Typ-Id Kombination.
|
void |
sendMessage(java.lang.String id,
de.bsvrz.sys.funclib.operatingMessage.MessageType type,
java.lang.String messageTypeAddOn,
de.bsvrz.sys.funclib.operatingMessage.MessageGrade grade,
de.bsvrz.dav.daf.main.config.SystemObject referenceObject,
de.bsvrz.sys.funclib.operatingMessage.MessageState state,
java.lang.String message)
Methode zum Versand von Betriebsmeldungen aus einer Umsetzungsmethode heraus.
|
protected void |
subscribeAllData(java.lang.Object[][] tlsToDav,
java.lang.Object[][] davToTls)
ToDo: Beschreibung der Methode
|
void |
update(de.bsvrz.dav.daf.main.ResultData[] results)
Aktualisierungsmethode, die nach Empfang eines angemeldeten Datensatzes von den
Datenverteiler-Applikationsfunktionen aufgerufen wird.
|
public static final int ASP
public static final int ATG
public static final int FG
public static final int ID
public static final int OT
public static final int TYP
private static final de.bsvrz.sys.funclib.debug.Debug debug
private static final java.text.DecimalFormat _numberFormat
java.util.Map<java.lang.String,DeBlock> _lastSendDeBlock
sendInitialDeBlock(java.lang.String, int, int)
kann dann z.B. die aktuelle Einstellung für die
Kanalsteuerung nach einer De-Gutmeldung verschickt werden. Die Methode greift dabei über den beim speichern
verwendeten Hashkey des DeBlocks DeBlock.getLongKey()
auf den hier gespeicherten DeBlock zu. Alle
versandten De-Blöcke werden nach dem Versand (tatsächlich wenn sie in der Queue zum versenden stehen, ob sie
wirklich versandt wurden ist nicht relevant) mit dem DeBlock.getLongKey()
in dieser Tabelle gespeichert.private java.util.List<java.lang.Object[]> _davToTlsList
subscribeAllData(java.lang.Object[][], java.lang.Object[][])
initialisiert, die wiederum von konkreten Instanzen dieser Klasse
aufgerufen werden. Die Listeneinträge sind Object[] mit jeweils folgendem Aufbau:
"Attributgruppe (Pid)", "Aspekt (Pid)", "Fg", "Typ", "Id", "ObjektTyp" z.B. "atg.tlsGloKanalSteuerung", "asp.parameterSoll", "1", "29", "2", "typ.deLve"Die Auswertung erfolgt dabei wie folgt:
update(de.bsvrz.dav.daf.main.ResultData[])
wird für jede zur
Attributgruppen/Aspket-Kombination passende Kombination eine Methode aufgerufen, deren Namen aus dem
Tabelleneintrag wie folgt gebildet wird (hier für den Beispieleintrag):Fg001Typ029Id002AtgTlsGloKanalSteuerungAspParameterSoll(ResultData)
ResultData
die Daten der zu verarbeitenden ATG/ASP-Kombination.private java.util.List<java.lang.Object[]> _tlsToDavList
subscribeAllData(java.lang.Object[][], java.lang.Object[][])
initialisiert, die wiederum von konkreten Instanzen dieser Klasse
aufgerufen werden. Die Listeneinträge sind Object[] mit jeweils folgendem Aufbau:
"Attributgruppe (Pid)", "Aspekt (Pid)", "Fg", "Typ", "Id", "ObjektTyp" z.B. "atg.tlsGloKanalSteuerung", "asp.tlsAntwort", "1", "29", "2", "typ.deLve"Die Auswertung erfolgt dabei wie folgt:
processDeBlock(de.bsvrz.kex.tls.osi7.DeBlock)
wird für jede zum De-Block passende
Fg/Id/Typ-Kombination eine Methode aufgerufen, deren Namen aus dem Tabelleneintrag wie folgt gebildet wird (hier
für den Beispieleintrag):Fg001Typ029Id002AtgTlsGloKanalSteuerungAspTlsAntwort(DeBlock, Data,
DataDescription)
deBlock
die Daten des zu verarbeitenden De-Blocks und
data
ein Datenobjekt der passenden Attributgruppen/Aspekt-Kombination, welchem direkt die Inhalte
des De-Blocks zugewiesen werden können.DataDescription
enthält die passende DataDescription
für die zu sendenden Daten.MessageSender _messageSender
private boolean _isPassivierungUmsetzungsMethoden
private boolean _isFg4AngemeldetAlsSammelKanal
private boolean _isFg4AngemeldetAlsCluster
private boolean _isBetriebsMeldungenErzeugen
private boolean _isAngemeldetPassivierungUmsetzungsMethoden
private boolean _isAngemeldetBetriebsMeldungenErzeugen
private CollectDeBlocks _collectDeBlocks
public de.bsvrz.dav.daf.main.config.DataModel _config
java.lang.reflect.Method _conversionMethod
java.lang.Class[] _conversionMethodArguments
java.lang.String _conversionMethodName
java.lang.String _conversionModulName
de.bsvrz.dav.daf.main.ClientDavInterface _daf
protected De _de
protected Eak _eak
protected EakConversionInterface _eakConversionModul
private java.lang.String buildMethodName(java.lang.Object[] tlsSendReceiveDescription)
tlsSendReceiveDescription
- Object[] entsprechend _tlsToDavList
und _davToTlsList
._tlsToDavList
und _davToTlsList
.public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
dataRequest
in interface de.bsvrz.dav.daf.main.ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene Objekt, auf das sich die Sendesteuerung
bezieht.dataDescription
- Beschreibende Informationen zu den angemeldeten Daten auf die sich die Sendesteuerung
bezieht.state
- Status der Sendesteuerung. Kann einen der Werte START_SENDING
,
STOP_SENDING
, STOP_SENDING_NO_RIGHTS
,
STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
enthalten.ClientSenderInterface.START_SENDING
,
ClientSenderInterface.STOP_SENDING
,
ClientSenderInterface.STOP_SENDING_NO_RIGHTS
,
ClientSenderInterface.STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
public de.bsvrz.dav.daf.main.ClientDavInterface getClientDavInterface()
getClientDavInterface
in interface DeConversionInterface
public de.bsvrz.dav.daf.main.config.DataModel getConfig()
public java.util.List<java.lang.Object[]> getDavToTlsList()
subscribeAllData(java.lang.Object[][], java.lang.Object[][])
initialisiert, die wiederum von konkreten Instanzen dieser Klasse
aufgerufen werden. Die Listeneinträge sind Object[] mit jeweils folgendem Aufbau:
"Attributgruppe (Pid)", "Aspekt (Pid)", "Fg", "Typ", "Id", "ObjektTyp" z.B. "atg.tlsGloKanalSteuerung", "asp.tlsAntwort", "1", "29", "2", "typ.deLve"
public java.util.List<java.lang.Object[]> getTlsToDavList()
subscribeAllData(java.lang.Object[][], java.lang.Object[][])
initialisiert, die wiederum von konkreten Instanzen dieser Klasse
aufgerufen werden. Die Listeneinträge sind Object[] mit jeweils folgendem Aufbau:
"Attributgruppe (Pid)", "Aspekt (Pid)", "Fg", "Typ", "Id", "ObjektTyp" z.B. "atg.tlsGloKanalSteuerung", "asp.tlsAntwort", "1", "29", "2", "typ.deLve"
private boolean isAllowedToSend(De de, DeBlock deBlock)
de
- Die De, für der der DE-Block geprüft wirddeBlock
- Der zu prüfende DE-Blocktrue
, wenn der DE-Block versendet werden muas (darf), sonst false
.public boolean isBetriebsMeldungenErzeugen()
public boolean isPassivierungUmsetzungsMethoden()
public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
dataRequest
verarbeitet werden.isRequestSupported
in interface de.bsvrz.dav.daf.main.ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription
- Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der
angemeldeten Daten.true
, falls Sendesteuerungen gewünscht sind, sonst false
.public void processDeBlock(DeBlock deBlock)
processDeBlock
in interface DeConversionInterface
deBlock
- Der in eine Attributgruppe umzusetzende DeBlock
.public void sendData(de.bsvrz.dav.daf.main.ResultData result)
result
- Der zu sendende Ergebnisdatensatz.public void sendData(de.bsvrz.dav.daf.main.ResultData[] results)
results
- Die zu sendenden Ergebnisdatensätze.public void sendInitialDeBlock(java.lang.String deBlockKey, int type, int id)
DeBlock.getLongKey()
auf den hier gespeicherten DeBlock zu. Alle
versandten De-Blöcke werden dazu nach dem Versand (tatsächlich wenn sie in der Queue zum versenden stehen, ob sie
wirklich versandt wurden ist nicht relevant) mit dem DeBlock.getLongKey()
gespeichert.deBlockKey
- Der beim Versand verwendete Schlüssel DeBlock.getKey()
des De-Blocks
(Knotennummer-DeNummer-Fg Kombination).type
- Typ des zu sendenden Telegrammsid
- ID des zu sendenden Telegrammspublic void sendMessage(java.lang.String id, de.bsvrz.sys.funclib.operatingMessage.MessageType type, java.lang.String messageTypeAddOn, de.bsvrz.sys.funclib.operatingMessage.MessageGrade grade, de.bsvrz.dav.daf.main.config.SystemObject referenceObject, de.bsvrz.sys.funclib.operatingMessage.MessageState state, java.lang.String message)
id
- ID der Meldung. Dieses Attribut kann von der Applikation gesetzt werden, um einen Bezug
zu einer vorherigen Meldung herzustellen.type
- der MeldungsTypmessageTypeAddOn
- der MeldungsTypZusatzgrade
- die MeldungsKlassereferenceObject
- Referenz auf ein beliebiges Konfigurationsobjekt, auf das sich die Meldung bezieht.state
- Gibt den Zustand einer Meldung an.message
- Text der Meldungprotected void subscribeAllData(java.lang.Object[][] tlsToDav, java.lang.Object[][] davToTls)
tlsToDav
- davToTls
- public void update(de.bsvrz.dav.daf.main.ResultData[] results)
update
in interface de.bsvrz.dav.daf.main.ClientReceiverInterface
results
- Feld mit den empfangenen Ergebnisdatensätzen.