de.bsvrz.vew.sim.sim.verwaltung
Class VerwaltungSimulation

java.lang.Object
  extended by de.bsvrz.vew.sim.sim.verwaltung.VerwaltungSimulation
All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientReceiverInterface, EmpfaengerMitAnmeldung

public class VerwaltungSimulation
extends java.lang.Object
implements EmpfaengerMitAnmeldung

Verwaltung von Simulationen. Mit einer Instanz dieser Klasse werden die dynamischen Simulations-Objekte (und die dazugehörigen Simulationsstrecken) eines Konfigurationsbereiches verwaltet.
Eine Instanz dieser Klasse empfängt und versendet Datensätze der logischen Schnittstelle zum Verwalten (erzeugen und löschen) von Simulationen

Version:
$Revision: 1.5 $ / $Date: 2009/11/17 15:37:48 $ / ($Author: Sans $)
Author:
Dambach-Werke GmbH, Stefan Sans

Nested Class Summary
(package private)  class VerwaltungSimulation.AnfrageBearbeiten
          Thread, der die Queue der zu bearbeitenden Verwaltungsanfragen abarbeitet.
(package private)  class VerwaltungSimulation.AnfragePostProzess
          Post-Prozessing für Verwaltungsanfragen- es wird eine Quittung für die Verwaltungsanfrage generiert.
private static class VerwaltungSimulation.ErzeugeErgebnis
          Modelliert das Ergebnis einer (einzelnen) Anfrage zum erzeugen einer Simulation
private static class VerwaltungSimulation.LoescheErgebnis
          Modelliert das Ergebnis einer (einzelnen) Anfrage zum löschen einer Simulation
(package private)  class VerwaltungSimulation.QuittungSenden
          Thread, der die Queue der zu versendenden Quittungen auf Verwaltungsanfragen abarbeitet.
protected static class VerwaltungSimulation.SimulationKonfigDaten
          Hilfsklasse, modelliert die relevanten konfigurierenden Daten einer Simulation
 
Field Summary
private  de.bsvrz.sys.funclib.concurrent.UnboundedQueue<de.bsvrz.dav.daf.main.Data> _anfrageQueue
          Queue der zu bearbeitenden Verwaltungsanfragen
private  java.lang.Boolean _anmeldungVewAnfrGueltig
          Ist die Empfangsanmledung vollzogen und gültig oder ungültig weil bereits andere Senke angemeldet ist?
private  de.bsvrz.dav.daf.main.ClientDavInterface _connection
          Verbindung zum Datenverteiler
private static de.bsvrz.sys.funclib.debug.Debug _debug
          Debug-Logger für Logging-Ausgaben
private  de.bsvrz.dav.daf.main.config.ConfigurationArea _konfigBereich
          Konfigurationsbereich, dessen dynamische Simulations-Objekte mit sieser Instanz verwaltet werden
private  de.bsvrz.dav.daf.main.config.ConfigurationObject _konfigObjekt
          Konfigurationsobjekt zur Simulationsverwaltung
private  de.bsvrz.sys.funclib.concurrent.UnboundedQueue<de.bsvrz.dav.daf.main.ResultData> _quittungQueue
          Queue der zu versendenden Quittungen auf Verwaltungsanfragen
private  java.util.Map<java.lang.String,Simulation> _simulationen
          Die verwalteten Simulationen
private  java.util.Map<java.lang.String,SimulationsStrecke> _simulationsStrecken
          Alle Simulationsstrecken, aud die di verwalteten Simulationen verweisen
 
Constructor Summary
VerwaltungSimulation(de.bsvrz.dav.daf.main.ClientDavInterface connection, de.bsvrz.dav.daf.main.config.ConfigurationArea konfigBereich, de.bsvrz.dav.daf.main.config.ConfigurationObject konfigObjekt)
          Erzeugt eine neue Instanz von VerwaltungSimulation.
 
Method Summary
 void anmelden()
          Anmelden aller Datenidentifikationen für diese Instanz und das zugeordnete Systemobjekt
private  void behandleAnfrage(de.bsvrz.dav.daf.main.Data data)
          Behandeln eine Simulations-Verwaltunjgs-Anfrage zum Erzeugen und/oder Löschen von Simulationen
protected  void bereinigeSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation)
          Bereinig für die Verwaltung von dyn.
protected  de.bsvrz.dav.daf.main.config.SystemObject erzeugeSimulation(java.lang.String name, short simulationsVariante, de.bsvrz.dav.daf.main.Data.ReferenceValue simulationsStrecke, java.lang.String typ)
          Erzeugt ein neues dynmaisches Simulations-Objekt
 de.bsvrz.dav.daf.main.ClientDavInterface getConnection()
          Bestimmt die Datenverteiletverbindung, über die die Empfängeranmeldung erfolgt
 de.bsvrz.dav.daf.main.config.DataModel getDatenModell()
          Bestimmt das Datenmodell für diese Simulationsverwaltung.
 de.bsvrz.dav.daf.main.config.ConfigurationArea getKonfigBereich()
          Bestimmt den Konfigurationsbereich für diese Simulationsverwaltung.
protected  VerwaltungSimulation.SimulationKonfigDaten getKonfigDaten(de.bsvrz.dav.daf.main.config.SystemObject simulation)
          Bestimmt die (relevaten) konfigurierenden Daten eines dyn.
 de.bsvrz.dav.daf.main.config.SystemObject getObjekt()
          Bestimmt das Systemobjekt, für das die Empfängeranmeldugen für diese Instanz erfolgen
 java.util.Map<java.lang.String,Simulation> getSimulationen()
          Zugriff auf die verwalteten Simulationen.
protected  void initialisiereSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation, Simulation.ZustandsBezeichner anfangsZustand, boolean sendeBeenden, boolean zustandPublizieren)
          Initialisiert diese Instanz zur Verwaltung eines dyn.
 void initialisiereVorhandeneSimulationen()
          Initialisiert die vorhandenen Simulationen (aus dem Konfigurationsbereich).
protected  void loescheSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation)
          Löscht ein dynamisches Simulations-Objekt
private  void sendeAntwort(de.bsvrz.dav.daf.main.config.SystemObject absender, java.lang.String absenderZeichen, VerwaltungSimulation.ErzeugeErgebnis[] erzeugeErgebnis, VerwaltungSimulation.LoescheErgebnis[] loescheErgebnis)
          Senden einer Antwort auf eine Simulations-Verwaltungs-Anfrage
 void update(de.bsvrz.dav.daf.main.ResultData[] resultData)
           
 boolean warteAnmeldungVewAnfrGueltig(long timeout)
          Wartet maximal timeout ms auf eine Empfangsanmeldung.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_debug

private static final de.bsvrz.sys.funclib.debug.Debug _debug
Debug-Logger für Logging-Ausgaben


_connection

private de.bsvrz.dav.daf.main.ClientDavInterface _connection
Verbindung zum Datenverteiler


_konfigBereich

private de.bsvrz.dav.daf.main.config.ConfigurationArea _konfigBereich
Konfigurationsbereich, dessen dynamische Simulations-Objekte mit sieser Instanz verwaltet werden


_konfigObjekt

private de.bsvrz.dav.daf.main.config.ConfigurationObject _konfigObjekt
Konfigurationsobjekt zur Simulationsverwaltung


_simulationen

private java.util.Map<java.lang.String,Simulation> _simulationen
Die verwalteten Simulationen


_simulationsStrecken

private java.util.Map<java.lang.String,SimulationsStrecke> _simulationsStrecken
Alle Simulationsstrecken, aud die di verwalteten Simulationen verweisen


_anfrageQueue

private de.bsvrz.sys.funclib.concurrent.UnboundedQueue<de.bsvrz.dav.daf.main.Data> _anfrageQueue
Queue der zu bearbeitenden Verwaltungsanfragen


_quittungQueue

private de.bsvrz.sys.funclib.concurrent.UnboundedQueue<de.bsvrz.dav.daf.main.ResultData> _quittungQueue
Queue der zu versendenden Quittungen auf Verwaltungsanfragen


_anmeldungVewAnfrGueltig

private java.lang.Boolean _anmeldungVewAnfrGueltig
Ist die Empfangsanmledung vollzogen und gültig oder ungültig weil bereits andere Senke angemeldet ist?

Constructor Detail

VerwaltungSimulation

public VerwaltungSimulation(de.bsvrz.dav.daf.main.ClientDavInterface connection,
                            de.bsvrz.dav.daf.main.config.ConfigurationArea konfigBereich,
                            de.bsvrz.dav.daf.main.config.ConfigurationObject konfigObjekt)
Erzeugt eine neue Instanz von VerwaltungSimulation.

Parameters:
connection - die Datenverteiler-Verbindung
konfigBereich - der Konfigurationsbereich, aus dem die verwalteteten dynamischen Simulations-Objekte gelesen werden bzw. in den neue Simulations- Objekte geschrieben werden
konfigObjekt - das Konfigurationsobjekt zum Verwalten von Simulationen vom Typ typ.simulationsVerwaltung
Method Detail

getSimulationen

public java.util.Map<java.lang.String,Simulation> getSimulationen()
Zugriff auf die verwalteten Simulationen.

Returns:
nichtmodifizierbare Map, welche mit der PID als Schlüssel den Zugriff auf die verwalteten Simulationen erlaubt

getKonfigBereich

public de.bsvrz.dav.daf.main.config.ConfigurationArea getKonfigBereich()
Bestimmt den Konfigurationsbereich für diese Simulationsverwaltung.

Returns:
den Konfigurationsbereich für diese Simulationsverwaltung

getDatenModell

public de.bsvrz.dav.daf.main.config.DataModel getDatenModell()
Bestimmt das Datenmodell für diese Simulationsverwaltung.

Returns:
das Datenmodell für diese Simulationsverwaltung

initialisiereVorhandeneSimulationen

public void initialisiereVorhandeneSimulationen()
Initialisiert die vorhandenen Simulationen (aus dem Konfigurationsbereich). Die vorhandenen Simulationen werden in den Zustand "Stop" gebracht.


getObjekt

public de.bsvrz.dav.daf.main.config.SystemObject getObjekt()
Description copied from interface: EmpfaengerMitAnmeldung
Bestimmt das Systemobjekt, für das die Empfängeranmeldugen für diese Instanz erfolgen

Specified by:
getObjekt in interface EmpfaengerMitAnmeldung
Returns:
das singuläre Systemobjekt

getConnection

public de.bsvrz.dav.daf.main.ClientDavInterface getConnection()
Description copied from interface: EmpfaengerMitAnmeldung
Bestimmt die Datenverteiletverbindung, über die die Empfängeranmeldung erfolgt

Specified by:
getConnection in interface EmpfaengerMitAnmeldung
Returns:
die Datenverteiletverbindung für die Empfängeranmeldung

anmelden

public void anmelden()
Description copied from interface: EmpfaengerMitAnmeldung
Anmelden aller Datenidentifikationen für diese Instanz und das zugeordnete Systemobjekt

Specified by:
anmelden in interface EmpfaengerMitAnmeldung

update

public void update(de.bsvrz.dav.daf.main.ResultData[] resultData)
Specified by:
update in interface de.bsvrz.dav.daf.main.ClientReceiverInterface

warteAnmeldungVewAnfrGueltig

public boolean warteAnmeldungVewAnfrGueltig(long timeout)
Wartet maximal timeout ms auf eine Empfangsanmeldung.

Parameters:
timeout - die Zeit im ms, die max. gewartet werde soll
Returns:
true, wenn innerhalb des Timeouts eine gültige oder keine Empfangsanmledung erfolgte, false bei ungültiger Empfangsanmeldung innerhalb timeout

bereinigeSimulation

protected void bereinigeSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation)
Bereinig für die Verwaltung von dyn. Simulations-Objekten bereitgestellten Ressourcen

Parameters:
simulation - das dyn. Simulations-Objekt, für das bereinigt werden soll

initialisiereSimulation

protected void initialisiereSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation,
                                       Simulation.ZustandsBezeichner anfangsZustand,
                                       boolean sendeBeenden,
                                       boolean zustandPublizieren)
Initialisiert diese Instanz zur Verwaltung eines dyn. Simulations-Objekts

Parameters:
simulation - simulation das dyn. Simulations-Objekt, für das initialisiert werden soll
anfangsZustand - Bezeichner für den Anfangszustand, in den die fertig initialisierte Simulation gebracht wird
sendeBeenden - soll "sendeBeenden" an die SWE StartStopp gesendet werden?
zustandPublizieren - soll der finale Zustand publiziert werden?

erzeugeSimulation

protected de.bsvrz.dav.daf.main.config.SystemObject erzeugeSimulation(java.lang.String name,
                                                                      short simulationsVariante,
                                                                      de.bsvrz.dav.daf.main.Data.ReferenceValue simulationsStrecke,
                                                                      java.lang.String typ)
                                                               throws java.lang.Exception
Erzeugt ein neues dynmaisches Simulations-Objekt

Parameters:
name - Name
simulationsVariante - Simulationsvariante
simulationsStrecke - Referenz auf Simulationsstrecke
typ - PID des Typs der zu erzeugenden Simulation
Returns:
das erzeugte dynamische Simulations-Objekt
Throws:
java.lang.Exception

loescheSimulation

protected void loescheSimulation(de.bsvrz.dav.daf.main.config.SystemObject simulation)
                          throws de.bsvrz.dav.daf.main.config.ConfigurationChangeException
Löscht ein dynamisches Simulations-Objekt

Parameters:
simulation - das zu löschende dynamische Simulations-Objekt
Throws:
de.bsvrz.dav.daf.main.config.ConfigurationChangeException

getKonfigDaten

protected VerwaltungSimulation.SimulationKonfigDaten getKonfigDaten(de.bsvrz.dav.daf.main.config.SystemObject simulation)
Bestimmt die (relevaten) konfigurierenden Daten eines dyn. Simulations-Objekts

Parameters:
simulation - das dyn. Simulations-Objekt, dessen konfigurierende Daten bestimmt werden sollen
Returns:
Instanz von SimulationKonfigDaten mit den gewünschten Daten

sendeAntwort

private void sendeAntwort(de.bsvrz.dav.daf.main.config.SystemObject absender,
                          java.lang.String absenderZeichen,
                          VerwaltungSimulation.ErzeugeErgebnis[] erzeugeErgebnis,
                          VerwaltungSimulation.LoescheErgebnis[] loescheErgebnis)
Senden einer Antwort auf eine Simulations-Verwaltungs-Anfrage

Parameters:
absender - das Stellverteterobjekt des Absenders dieser Antwort - typischerweise das lokale Applikationsobjekt
absenderZeichen - frei wählbare (User-) Absender-Id des Absenders
erzeugeErgebnis - Ergebnis der Anfrage zum Erzeugen von Simulationen
loescheErgebnis - Ergebnis der Anfrage zum Löschen von Simulationen

behandleAnfrage

private void behandleAnfrage(de.bsvrz.dav.daf.main.Data data)
Behandeln eine Simulations-Verwaltunjgs-Anfrage zum Erzeugen und/oder Löschen von Simulationen

Parameters:
data - Der Datensatz, der für diese Anfrage vom Datenverteiler empfangen wurde