de.bsvrz.sys.usv.wrapper
Class SenderThread

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.sys.usv.wrapper.SenderThread
All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface, Runnable

public class SenderThread
extends Thread
implements de.bsvrz.dav.daf.main.ClientSenderInterface

Klasse die die Kommunikation mit der Klasse durchführt, die eine reale USV-Anlage anbindet. Die Klasse benutzt dabei die Methoden, die im Interface USVAllgemein beschrieben sind. Die Methode welche Klasse die reale USV anbindet wird dabei als Aufrufparameter übergeben.

Version:
$Id$
Author:
ObertM Geprüft 30.9.2008 Hilpp, Christian Hösel, BitCtrl Systems GmbH

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
private  de.bsvrz.dav.daf.main.config.Aspect asp_zustand
          Aspekt: "asp.zustand";
private  de.bsvrz.dav.daf.main.config.AttributeGroup atg_usvZustand
          Attributgruppe zur Darstellung der Zustandsattribute
private  de.bsvrz.dav.daf.main.config.AttributeGroup atg_usvZustandKritisch
          Attributgruppe, die angibt, ob ein kritischer Zustand erreicht wurde oder nicht.
private  int batterieBetriebsdauer
           
private  int batterieRestlaufzeit
           
private  int batterieSpannung
           
private  float batterieTemperatur
           
private  de.bsvrz.dav.daf.main.ClientDavInterface conSenden
          Unsere Datenverteilerverbindung.
private  de.bsvrz.sys.funclib.debug.Debug log
          Der Dav-Logger.
private  int m_batterieStatus
           
private  EingangsfrequenzZustand m_eingangsFrequenzZustand
           
private  KommunikationsZustand m_kommunikationsZustand
           
private  int m_oldBatterieStatus
           
private  EingangsfrequenzZustand m_oldEingangsFrequenzZustand
           
private  KommunikationsZustand m_oldKommunikationsZustand
           
private  KritischerZustand m_oldKritischerZustand
           
private  USVZustand m_oldUsvStatus
           
private  WechselSpannung m_oldWechselSpannung
           
private  ZustandNotstrom m_oldZustandNotstrom
           
private  ZustandPhase m_oldZustandPhase1
           
private  ZustandPhase m_oldZustandPhase2
           
private  ZustandPhase m_oldZustandPhase3
           
private  String m_pid
           
private  USVAllgemein m_usv
           
private  USVZustand m_usvZustand
           
private  WechselSpannung m_wechselSpannung
           
private  ZustandNotstrom m_zustandNotstrom
           
private  ZustandPhase m_zustandPhase1
           
private  ZustandPhase m_zustandPhase2
           
private  ZustandPhase m_zustandPhase3
           
private  int m_zyklusZeit
           
private  int oldBatterieBetriebsdauer
           
private  int oldBatterieRestlaufzeit
           
private  int oldBatterieSpannung
           
private  float oldBatterieTemperatur
           
private  String schwellWertBedingung
           
private  boolean usvKritischerZustandNochmalversenden
           
private  de.bsvrz.dav.daf.main.config.SystemObject usvSend
          Das USV-Dav-Objekt.
private  boolean usvZustandNochmalversenden
          Flags, die anzeigen, ob beim nächsten USV-Datenabruf anschließend das Ergebnis an den DAV versendet werden soll, da beim letzten Mal kein erfolgreiches Versenden möglich war - sprich beim letzten Mal senden kam ein Exception, also versuchen wir es nochmal.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Fields 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
SenderThread(USVAllgemein usv, String pid, String schwellenWert, int zyklusZeit)
          Konstruktor der Klasse
 
Method Summary
 void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject arg0, de.bsvrz.dav.daf.main.DataDescription arg1, byte arg2)
           
private  de.bsvrz.dav.daf.main.Data erzeugeDefaultUSVZustandsDaten()
          Erzeugt einen default-Datensatz für die Attributgruppe "atg.usvZustand" wobei alle Attribute auf "nicht ermittelbar" (-1) gesetzt werden.
 boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject arg0, de.bsvrz.dav.daf.main.DataDescription arg1)
           
private  void protokolliereZustandUsv(String objekt, String zustandNeu, String zustandAlt)
          Methode zum Absetzen einer Betriebsmeldung an den Datenverteiler
private  boolean pruefeAenderungZustandUsv()
          Methode prüft ob sich die Werte der USV-Anlage geändert haben, wenn ja, dann werden die Änderungen protokolliert
 void run()
          Thread der die Kommunikation mit der Klasse, die die reale USV-Anlage einbindet, durchführt.
 void sendMessage(de.bsvrz.sys.funclib.operatingMessage.MessageType type, String messageTypeAddOn, de.bsvrz.sys.funclib.operatingMessage.MessageGrade grade, String message)
          Methode erzeugt eine Betriebsmeldung und sendet diese an den Datenverteiler.
 void setTrigger()
          Methode zum Unterbrechen der wait-Zyklen im Sender Thread.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_usv

private final USVAllgemein m_usv

m_pid

private final String m_pid

m_zyklusZeit

private final int m_zyklusZeit

m_batterieStatus

private int m_batterieStatus

m_usvZustand

private USVZustand m_usvZustand

m_kommunikationsZustand

private KommunikationsZustand m_kommunikationsZustand

m_eingangsFrequenzZustand

private EingangsfrequenzZustand m_eingangsFrequenzZustand

m_wechselSpannung

private WechselSpannung m_wechselSpannung

m_zustandPhase1

private ZustandPhase m_zustandPhase1

m_zustandPhase2

private ZustandPhase m_zustandPhase2

m_zustandPhase3

private ZustandPhase m_zustandPhase3

m_zustandNotstrom

private ZustandNotstrom m_zustandNotstrom

batterieTemperatur

private float batterieTemperatur

batterieRestlaufzeit

private int batterieRestlaufzeit

batterieBetriebsdauer

private int batterieBetriebsdauer

batterieSpannung

private int batterieSpannung

m_oldBatterieStatus

private int m_oldBatterieStatus

m_oldUsvStatus

private USVZustand m_oldUsvStatus

m_oldKommunikationsZustand

private KommunikationsZustand m_oldKommunikationsZustand

m_oldEingangsFrequenzZustand

private EingangsfrequenzZustand m_oldEingangsFrequenzZustand

m_oldWechselSpannung

private WechselSpannung m_oldWechselSpannung

m_oldZustandPhase1

private ZustandPhase m_oldZustandPhase1

m_oldZustandPhase2

private ZustandPhase m_oldZustandPhase2

m_oldZustandPhase3

private ZustandPhase m_oldZustandPhase3

m_oldZustandNotstrom

private ZustandNotstrom m_oldZustandNotstrom

oldBatterieTemperatur

private float oldBatterieTemperatur

oldBatterieRestlaufzeit

private int oldBatterieRestlaufzeit

oldBatterieBetriebsdauer

private int oldBatterieBetriebsdauer

oldBatterieSpannung

private int oldBatterieSpannung

m_oldKritischerZustand

private KritischerZustand m_oldKritischerZustand

usvZustandNochmalversenden

private boolean usvZustandNochmalversenden
Flags, die anzeigen, ob beim nächsten USV-Datenabruf anschließend das Ergebnis an den DAV versendet werden soll, da beim letzten Mal kein erfolgreiches Versenden möglich war - sprich beim letzten Mal senden kam ein Exception, also versuchen wir es nochmal.


usvKritischerZustandNochmalversenden

private boolean usvKritischerZustandNochmalversenden

conSenden

private final de.bsvrz.dav.daf.main.ClientDavInterface conSenden
Unsere Datenverteilerverbindung.


atg_usvZustand

private final de.bsvrz.dav.daf.main.config.AttributeGroup atg_usvZustand
Attributgruppe zur Darstellung der Zustandsattribute


asp_zustand

private final de.bsvrz.dav.daf.main.config.Aspect asp_zustand
Aspekt: "asp.zustand";


usvSend

private final de.bsvrz.dav.daf.main.config.SystemObject usvSend
Das USV-Dav-Objekt.


atg_usvZustandKritisch

private final de.bsvrz.dav.daf.main.config.AttributeGroup atg_usvZustandKritisch
Attributgruppe, die angibt, ob ein kritischer Zustand erreicht wurde oder nicht.


log

private final de.bsvrz.sys.funclib.debug.Debug log
Der Dav-Logger.


schwellWertBedingung

private final String schwellWertBedingung
Constructor Detail

SenderThread

public SenderThread(USVAllgemein usv,
                    String pid,
                    String schwellenWert,
                    int zyklusZeit)
Konstruktor der Klasse

Parameters:
usv - Klasse die das Interface USVAllgemein implementiert
pid - Pid der realen USV
schwellenWert - die Schwellenwertbedingung, bei der, wenn sie erfüllt ist, der DAV heruntegefahren wird.
zyklusZeit - das Zeitintervall, in dem eine Aktualisierung der USV-Daten vorgenommen wird.
Method Detail

erzeugeDefaultUSVZustandsDaten

private de.bsvrz.dav.daf.main.Data erzeugeDefaultUSVZustandsDaten()
Erzeugt einen default-Datensatz für die Attributgruppe "atg.usvZustand" wobei alle Attribute auf "nicht ermittelbar" (-1) gesetzt werden.

Returns:
den Standard-Datensatz für die Attributgruppe "atg.usvZustand".

run

public void run()
Thread der die Kommunikation mit der Klasse, die die reale USV-Anlage einbindet, durchführt. Dabei werden zyklisch die Daten der USV-Anlage eingelesen und bei Änderung an den Datenverteiler gesendet. Die Zykluszeit kann durch die Methoden die im Interface USVTrigger definiert sind unterbrochen werden.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

dataRequest

public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject arg0,
                        de.bsvrz.dav.daf.main.DataDescription arg1,
                        byte arg2)
Specified by:
dataRequest in interface de.bsvrz.dav.daf.main.ClientSenderInterface

isRequestSupported

public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject arg0,
                                  de.bsvrz.dav.daf.main.DataDescription arg1)
Specified by:
isRequestSupported in interface de.bsvrz.dav.daf.main.ClientSenderInterface

setTrigger

public void setTrigger()
Methode zum Unterbrechen der wait-Zyklen im Sender Thread.


pruefeAenderungZustandUsv

private boolean pruefeAenderungZustandUsv()
Methode prüft ob sich die Werte der USV-Anlage geändert haben, wenn ja, dann werden die Änderungen protokolliert

Returns:
0: keine Änderung, >0 Anzahl der geänderten Werte

protokolliereZustandUsv

private void protokolliereZustandUsv(String objekt,
                                     String zustandNeu,
                                     String zustandAlt)
Methode zum Absetzen einer Betriebsmeldung an den Datenverteiler

Parameters:
objekt - Name des sich änderenden Objekts
zustandNeu - Neuer Zustand des Objekts
zustandAlt - Alter Zustand des Objekts

sendMessage

public void sendMessage(de.bsvrz.sys.funclib.operatingMessage.MessageType type,
                        String messageTypeAddOn,
                        de.bsvrz.sys.funclib.operatingMessage.MessageGrade grade,
                        String message)
Methode erzeugt eine Betriebsmeldung und sendet diese an den Datenverteiler. Eingestellt werden können MeldungsTyp, MeldungsTypZusatz und die Meldungsklasse.

Parameters:
type - der MeldungsTyp
messageTypeAddOn - der MeldungsTypZusatz
grade - die MeldungsKlasse
message - Text der Meldung