public class MessageSender
extends java.lang.Object
Diese Klasse dient zur Erzeugung von Betriebsmeldungen. Diese Klasse ist als Singleton erstellt. Somit wird nur ein Objekt dieser Klasse angelegt. Durch die init-Methode
wird die Verbindung zum Datenverteiler und die Kennung der Applikation an das Sender-Objekt übergeben. Mit Hilfe der verschiedenen sendMessage-Methoden
können Betriebsmeldungen an die Betriebsmeldungsverwaltung abgesetzt werden.
Existiert noch keine Verbindung zum Datenverteiler beim Senden einer Betriebsmeldung, so wird eine Warnung zurückgegeben.
Modifier and Type | Class and Description |
---|---|
private class |
MessageSender.OperatingMessageSender
Diese Klasse fragt den aktuellen Zustand der Sendesteuerung ab.
|
Modifier and Type | Field and Description |
---|---|
private long |
_applicationID
ID der Applikation, die die Informationsmeldung erzeugt hat.
|
private java.lang.String |
_applicationLabel
Für jede Applikation eindeutige Kennung, die nach einem Neustart gleich bleibt.
|
private SystemObjectType |
_applicationType
Typ der Applikation, die die Informationsmeldung erzeugt hat.
|
private MessageCauser |
_causer
Die Urlasserinformation, falls keine übergeben wird.
|
private ClientDavInterface |
_connection
Die Verbindung zum Datenverteiler.
|
private long |
_consecutiveNumber
LaufendeNummer: Laufende Nummerierung der durch die Applikation seit dem Applikationsstart erzeugten Informationsmeldungen.
|
private DataDescription |
_dataDescriptionSender
Die DataDescription zum Senden von Betriebsmeldungen.
|
private static Debug |
_debug
DebugLogger für Debug-Ausgaben
|
private int |
_maxQueueSize
Maximale Anzahl an zwischengespeicherten Nachrichten falls es keine positive Sendesteuerugn gibt
|
private SystemObject |
_messageObject
Dieses Systemobjekt muss vom typ.betriebsMeldungsVerwaltung sein und wird zum Versenden der Betriebsmeldungen eingesetzt.
|
private MessageSender.OperatingMessageSender |
_operatingMessageSender
Das Sende-Objekt für den Versand von Betriebsmeldungen.
|
private java.lang.String |
_rootName
Speichert den Klassennamen der Applikation
|
private static MessageSender |
INSTANCE
Das Singleton wird in jedem Fall erzeugt.
|
Modifier | Constructor and Description |
---|---|
private |
MessageSender()
Privater Konstruktor erzeugt ein leeres Objekt dieser Klasse.
|
Modifier and Type | Method and Description |
---|---|
(package private) java.lang.String |
getCallPosition(java.lang.Throwable t)
Bestimmt zur Betriebsmeldung die Position im Code, an der die Betriebsmeldung rausgeschickt wurde.
|
static MessageSender |
getInstance()
Gibt die Instanz dieser Klasse zurück.
|
void |
init(ClientDavInterface connection,
java.lang.String applicationName,
java.lang.String applicationLabel)
Initialisiert das Objekt indem die Verbindung zum Datenverteiler und die Kennung der Applikation übergeben wird.
|
private long |
nextConsecutiveNumber()
Gibt die laufende Nummer zurück und erhöht sie um eins.
|
void |
sendMessage(MessageType type,
MessageGrade grade,
java.lang.String message)
Die einfachste Version eine Betriebsmeldung zu verschicken.
|
void |
sendMessage(MessageType type,
java.lang.String messageTypeAddOn,
MessageGrade grade,
SystemObject referenceObject,
MessageCauser causer,
java.lang.String message)
Hierbei handelt es sich um eine Betriebsmeldung, wo nur die ID und die GutMeldung fehlt.
|
void |
sendMessage(java.lang.String id,
MessageType type,
java.lang.String messageTypeAddOn,
MessageGrade grade,
MessageState state,
java.lang.String message)
Bei dieser Betriebsmeldung wird neben dem MeldungsTyp, der MeldungsKlasse und des Meldungstextes noch eine ID und ob es sich hierbei um eine GutMeldung handelt, übergeben.
|
void |
sendMessage(java.lang.String id,
MessageType type,
java.lang.String messageTypeAddOn,
MessageGrade grade,
SystemObject referenceObject,
MessageState state,
MessageCauser causer,
java.lang.String message)
Die vollständige Betriebsmeldung.
|
void |
setApplicationLabel(java.lang.String applicationLabel)
Die ApplikationsKennung kann mit dieser Methode nachträglich gesetzt werden.
|
void |
setMaxQueueSize(int maxQueueSize)
Setzt die Größe der Warteschlange, in der Betriebsmeldungen gehalten werden solange es noch keine Sendesteuerung gibt.
|
private static final MessageSender INSTANCE
Das Singleton wird in jedem Fall erzeugt. Sollte jedoch die Verbindung zum Datenverteiler noch nicht vorhanden sein, wird bei sendMessage(de.bsvrz.sys.funclib.operatingMessage.MessageType, de.bsvrz.sys.funclib.operatingMessage.MessageGrade, java.lang.String)
eine Warnung ausgegeben!
private static Debug _debug
DebugLogger für Debug-Ausgaben
private ClientDavInterface _connection
Die Verbindung zum Datenverteiler.
private MessageSender.OperatingMessageSender _operatingMessageSender
Das Sende-Objekt für den Versand von Betriebsmeldungen.
private SystemObject _messageObject
Dieses Systemobjekt muss vom typ.betriebsMeldungsVerwaltung sein und wird zum Versenden der Betriebsmeldungen eingesetzt.
private DataDescription _dataDescriptionSender
Die DataDescription zum Senden von Betriebsmeldungen.
private long _applicationID
ID der Applikation, die die Informationsmeldung erzeugt hat.
private long _consecutiveNumber
LaufendeNummer: Laufende Nummerierung der durch die Applikation seit dem Applikationsstart erzeugten Informationsmeldungen. Aus der Kombination von ApplikationsID und LaufendeNummer lässt sich prüfen, ob Meldungen verloren wurden.
private SystemObjectType _applicationType
Typ der Applikation, die die Informationsmeldung erzeugt hat.
private java.lang.String _applicationLabel
Für jede Applikation eindeutige Kennung, die nach einem Neustart gleich bleibt.
private MessageCauser _causer
Die Urlasserinformation, falls keine übergeben wird. Sie besteht aus dem lokalen Benutzer, der sich beim Datenverteiler angemeldet hat und ohne die Angabe einer Ursache und eines Veranlassers.
private java.lang.String _rootName
Speichert den Klassennamen der Applikation
private int _maxQueueSize
Maximale Anzahl an zwischengespeicherten Nachrichten falls es keine positive Sendesteuerugn gibt
private MessageSender()
Privater Konstruktor erzeugt ein leeres Objekt dieser Klasse.
public static MessageSender getInstance()
Gibt die Instanz dieser Klasse zurück. Ein neues Objekt wird erstellt, falls noch keines vorhanden ist.
public void init(ClientDavInterface connection, java.lang.String applicationName, java.lang.String applicationLabel)
Initialisiert das Objekt indem die Verbindung zum Datenverteiler und die Kennung der Applikation übergeben wird.
connection
- Verbindung zum DatenverteilerapplicationName
- Name der ApplikationapplicationLabel
- eindeutige Kennung der Applikationpublic void sendMessage(MessageType type, MessageGrade grade, java.lang.String message)
Die einfachste Version eine Betriebsmeldung zu verschicken. Die ID bleibt leer, es wird kein KonfigurationsObjekt angegeben, es handelt sich um eine neue Meldung und als Urlasser wird der angemeldete Benutzer mit leerer Ursache und Veranlasser verschickt.
type
- der Meldungstypgrade
- die Meldungsklassemessage
- Text der Meldungpublic void sendMessage(java.lang.String id, MessageType type, java.lang.String messageTypeAddOn, MessageGrade grade, MessageState state, java.lang.String message)
Bei dieser Betriebsmeldung wird neben dem MeldungsTyp, der MeldungsKlasse und des Meldungstextes noch eine ID und ob es sich hierbei um eine GutMeldung handelt, übergeben.
id
- ID der Meldung. Dieses Attribut kann von der Applikation gesetzt werden, um einen Bezug zu einer vorherigen Meldung herzustellen. Falls die ID null oder ein Leerstring ist, wird eine zufällige ID generiert. Die ID wird zur Bildugn der PID des Meldungsobjekts von der Betriebsmeldungsverwaltung benutzt.type
- der MeldungsTypmessageTypeAddOn
- der MeldungsTypZusatzgrade
- die MeldungsKlassestate
- Gibt den Zustand einer Meldung an.message
- Text der Meldungpublic void sendMessage(MessageType type, java.lang.String messageTypeAddOn, MessageGrade grade, SystemObject referenceObject, MessageCauser causer, java.lang.String message)
Hierbei handelt es sich um eine Betriebsmeldung, wo nur die ID und die GutMeldung fehlt.
type
- der MeldungsTypmessageTypeAddOn
- der MeldungsTypZusatzgrade
- die MeldungsKlassereferenceObject
- Referenz auf ein beliebiges Konfigurationsobjekt, auf das sich die Meldung bezieht.causer
- Urlasserinformation (Referenz auf den Benutzer, der die Meldung erzeugt hat, Angabe einer Ursache für die Meldung und der Veranlasser für die Meldung). Wenn causer==null
, dann wird als Urlasser der angemeldete Benutzer mit leerer Ursache und Veranlasser verschickt.message
- Text der Meldungpublic void sendMessage(java.lang.String id, MessageType type, java.lang.String messageTypeAddOn, MessageGrade grade, SystemObject referenceObject, MessageState state, MessageCauser causer, java.lang.String message)
Die vollständige Betriebsmeldung. Sie enthält alle Parameter, die für eine Betriebsmeldung in Frage kommen können.
id
- ID der Meldung. Dieses Attribut kann von der Applikation gesetzt werden, um einen Bezug zu einer vorherigen Meldung herzustellen. Falls die ID null oder ein Leerstring ist, wird eine zufällige ID generiert. Die ID wird zur Bildugn der PID des Meldungsobjekts von der Betriebsmeldungsverwaltung benutzt.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.causer
- Urlasserinformation (Referenz auf den Benutzer, der die Meldung erzeugt hat, Angabe einer Ursache für die Meldung und der Veranlasser für die Meldung). Wenn causer==null
, dann wird als Urlasser der angemeldete Benutzer mit leerer Ursache und Veranlasser verschickt.message
- Text der Meldungjava.lang.String getCallPosition(java.lang.Throwable t)
Bestimmt zur Betriebsmeldung die Position im Code, an der die Betriebsmeldung rausgeschickt wurde. Angegeben wird der Klassenname, der Methodenname und die Zeilennummer.
private long nextConsecutiveNumber()
Gibt die laufende Nummer zurück und erhöht sie um eins.
public void setApplicationLabel(java.lang.String applicationLabel)
Die ApplikationsKennung kann mit dieser Methode nachträglich gesetzt werden.
applicationLabel
- ApplikationsKennung - eindeutige Kennung dieser Applikationpublic void setMaxQueueSize(int maxQueueSize)
Setzt die Größe der Warteschlange, in der Betriebsmeldungen gehalten werden solange es noch keine Sendesteuerung gibt. (Standardwert:100)
maxQueueSize
- neue Größe (>=0)