de.bsvrz.puk.config.main.simulation
Class ConfigSimulationObject

java.lang.Object
  extended by de.bsvrz.puk.config.main.simulation.ConfigSimulationObject

public class ConfigSimulationObject
extends Object

Dieses Objekt stellt eine Simulation aus Sicht der Konfiguration dar. Das Objekt meldet sich auf alle nötigen Attributgruppen an und verschickt die benötigten Datensätze.

Author:
Achim Wullenkord (AW), Kappich Systemberatung

Nested Class Summary
private  class ConfigSimulationObject.StateChangeReceiver
           
 
Field Summary
private  ClientDavInterface _connection
           
private static Debug _debug
           
private  SimulationStates _deleted
           
private  SimulationStates _newSimulation
           
private  SimulationStates _notReady
           
private  boolean _offlineSimulation
          true = Es handlet sich um eine Offline-Simulation.
private  SimulationStates _ready
           
private  SourceSimulationStatus _senderSimulationStatus
          Dieses Objekt kann den Zustand der Simulation propagieren.
private  SystemObject _simulationObject
           
private  DataDescription _simulationsStreckenBeschreibung
          Alle Eigenschaften der Simulation, die Mengen und Objekte betreffen, die speziell behandelt werden sollen.
private  SystemObject _simulationsStreckenObjekt
          Das Objekt spiegelt die Simulationsstrecke wieder.
private  SimulationStates _simulationState
           
private  short _simulationVariant
          Simulationsvariante der Simulation
private  Set<DynamicObjectType> _specialDynamicTypes
          Enthält alle dynamischen Typen, deren Objekte gesondert behandelt werden müssen.
private  Set<ObjectSetType> _specialObjectSetTypes
          Speichert alle Mengentypen, die bei Simulationen speziell behandelt werden müssen.
private  ConfigSimulationObject.StateChangeReceiver _stateChangeReceiver
           
private  DataDescription _stateDataDescription
          Datenidentifikation für Statusänderungen
private  Object _stateLock
          Auf dieses Objekt wird synchronisiert, sobald mit der Variablen _simulationState gearbeitet wird.
 
Constructor Summary
ConfigSimulationObject(ClientDavInterface connection, SystemObject simulationObject, ConfigurationQueryManager configurationQueryManager)
          Dieses Objekt stellt aus Sicht der Konfiguration eine Simulation dar.
 
Method Summary
(package private)  void cleanUpSets()
          Der Aufruf dieser Methode bewirkt, dass alle Mengen der im Konstruktor übergebenen Mengentypen, bearbeitet werden.
(package private)  SimulationStates getDeletedState()
           
(package private)  SimulationStates getNotReadyState()
           
(package private)  SimulationStates getReadyState()
           
 SystemObject getSimulationObject()
          Gibt das Systemobject zurück, das aus Sicht des Datenverteilers eine Simulation darstellt.
 short getSimulationVariant()
           
(package private)  void getSpecialTypes()
          Fordert einen Datensatz an und ließt alle Typen von Mengen aus, die speziell behandelt werden sollen.
 boolean isOfflineSimulation()
           
 boolean isSpecialTreatedDynamicObjectType(DynamicObjectType dynamicObjectType)
          Diese Methode prüft ob der übergeben Typ speziell behandelt werden soll.
 boolean isSpecialTreatedSetType(ObjectSetType setType)
          Prüft, ob der Typ einer Menge zu den Typen gehört, die an Simulationsstrecke festgelegt wurden.
(package private)  void setState(SimulationStates state)
           
 void simulationRemovedFromSet()
          Diese Methode wird aufgerufen sobald die Simulation, die zu diesem Objekt gehört, aus der Menge der Simulationen entfernt wird.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_debug

private static final Debug _debug

_connection

private final ClientDavInterface _connection

_simulationState

private SimulationStates _simulationState

_stateDataDescription

private final DataDescription _stateDataDescription
Datenidentifikation für Statusänderungen


_stateChangeReceiver

private final ConfigSimulationObject.StateChangeReceiver _stateChangeReceiver

_newSimulation

private final SimulationStates _newSimulation

_ready

private final SimulationStates _ready

_notReady

private final SimulationStates _notReady

_deleted

private final SimulationStates _deleted

_offlineSimulation

private final boolean _offlineSimulation
true = Es handlet sich um eine Offline-Simulation. Es stehen Zeitstempel zur Verfügung. false = Es handelt sich um eine Online-Simulation, es stehen keine Zeitstempel zur Verfügung.


_senderSimulationStatus

private final SourceSimulationStatus _senderSimulationStatus
Dieses Objekt kann den Zustand der Simulation propagieren. Es findet eine Quellenanmeldung/Abmeldung statt.


_stateLock

private final Object _stateLock
Auf dieses Objekt wird synchronisiert, sobald mit der Variablen _simulationState gearbeitet wird. Es kann nicht auf die Variable selbst gelockt werden, da sich diese mit jeder Zustandänderung ändert.


_specialObjectSetTypes

private Set<ObjectSetType> _specialObjectSetTypes
Speichert alle Mengentypen, die bei Simulationen speziell behandelt werden müssen.

Bei speziellen Mengentypen muss beim hinzufügen von Elementen zu dieser Art von Mengen das Element in der Simulationsvariante der Simulation gespeichert werden.

Beim lesenden Zugriff werden nur Elemente der Simulationsvariante angefordert.

Alle Mengen, zu denen Elemente hinzugefügt wurden, werden um diese Elemte bereinigt wenn die dynamischen Objekte gelöscht werden (Vorstart, löschen der Simulation).


_specialDynamicTypes

private Set<DynamicObjectType> _specialDynamicTypes
Enthält alle dynamischen Typen, deren Objekte gesondert behandelt werden müssen. Soll ein dynamisches Objekt mit einem dieser Typen erzeugt werden, so muss die Simulationsvariante berücksichtigt werden.


_simulationVariant

private short _simulationVariant
Simulationsvariante der Simulation


_simulationObject

private final SystemObject _simulationObject

_simulationsStreckenObjekt

private final SystemObject _simulationsStreckenObjekt
Das Objekt spiegelt die Simulationsstrecke wieder. Von diesem Objekte können die spezielle zu behandelnden Mengen/Objekte angefordert werden. Siehe auch _simulationsStreckenBeschreibung.


_simulationsStreckenBeschreibung

private DataDescription _simulationsStreckenBeschreibung
Alle Eigenschaften der Simulation, die Mengen und Objekte betreffen, die speziell behandelt werden sollen. Das Simulationsobjekt wird beim Neustart und Vorstart den aktuellen Datensatz anfordern und die Datenstrukturen entsprechend anpassen.

Constructor Detail

ConfigSimulationObject

public ConfigSimulationObject(ClientDavInterface connection,
                              SystemObject simulationObject,
                              ConfigurationQueryManager configurationQueryManager)
                       throws OneSubscriptionPerSendData
Dieses Objekt stellt aus Sicht der Konfiguration eine Simulation dar. Das Objekt meldet sich als Empfänger für die Zustände der Simulation an und als Sender

Parameters:
connection -
simulationObject - SystemObject vom Typ typ.simulation.
configurationQueryManager - Objekt, mit denen das Objekt die Konfiguration beauftragen kann, einen Empfänger für Konfigurationsanfragen für diese Simulationsvariante anzumelden/abzumelden
Throws:
OneSubscriptionPerSendData
Method Detail

setState

void setState(SimulationStates state)

getNotReadyState

SimulationStates getNotReadyState()

getReadyState

SimulationStates getReadyState()

getDeletedState

SimulationStates getDeletedState()

getSpecialTypes

void getSpecialTypes()
Fordert einen Datensatz an und ließt alle Typen von Mengen aus, die speziell behandelt werden sollen. Das gleiche gilt für Typen von dynamischen Objekten.

Die Datenstrukturen, die diese Informationen speichern, werden dadurch auf den neusten Stand gebracht.

Diese Methode sollte beim Neustart einer Simulation (Konstruktor) und beim Vorstart aufgerufen werden.


getSimulationObject

public SystemObject getSimulationObject()
Gibt das Systemobject zurück, das aus Sicht des Datenverteilers eine Simulation darstellt.

Returns:
s.o.

simulationRemovedFromSet

public void simulationRemovedFromSet()
Diese Methode wird aufgerufen sobald die Simulation, die zu diesem Objekt gehört, aus der Menge der Simulationen entfernt wird. Dieser Aufruf kann jederzeit von außen geschehen.

Alle Mengen, die speziell behandelt werden sollen, werden aufgeräumt.


cleanUpSets

void cleanUpSets()
Der Aufruf dieser Methode bewirkt, dass alle Mengen der im Konstruktor übergebenen Mengentypen, bearbeitet werden. Dabei werden alle Elemente, die durch die Simulation angelegt werden, aus den jeweiligen Mengen entfernt.


getSimulationVariant

public short getSimulationVariant()

isOfflineSimulation

public boolean isOfflineSimulation()
Returns:
true = Es handelt sich um eine Offline-Simulation. Es stehen der Anfangs und der Endzeitpunkt der Simulation zur Verfügung. false = Es handelt sich um eine Online-Simulation, Beginn und Endzeitpunkt stehen nicht zur Verfügung.

isSpecialTreatedSetType

public boolean isSpecialTreatedSetType(ObjectSetType setType)
Prüft, ob der Typ einer Menge zu den Typen gehört, die an Simulationsstrecke festgelegt wurden. Ist dies der Fall, müssen die Mengen dieses Typs speziell behandlet werden (lesender und schreibender Zugriff auf die Menge über die Simulationsvariante).

Parameters:
setType - Mengentyp, der geprüft werden soll. Vererbung wird nicht berücksichtigt.
Returns:
true = Der übergebene Typ befindet sich in der Menge der speziell zu behandelnden Mengetypen; false = sonst

isSpecialTreatedDynamicObjectType

public boolean isSpecialTreatedDynamicObjectType(DynamicObjectType dynamicObjectType)
Diese Methode prüft ob der übergeben Typ speziell behandelt werden soll. Die ist der Fall, wenn der Typ an einer Simulationsstrecke eingetragen ist.

Die Auswirkungen sind, dass neue Objekte, die vom übergebnen Typ sein sollen, mit der Simulationsvariante der Simulation angelegt werden müssen, usw..

Parameters:
dynamicObjectType - dynamischer Typ, der geprüft werden soll
Returns:
true = Der übergebene Typ befindet sich in der Liste der speziell zu behandelnden Typen (kb.tmVewSimulationGlobal: DynamischeSimulationsObjekte)