de.bsvrz.vew.engvew.engstelle
Class Engstelle

java.lang.Object
  extended by de.bsvrz.vew.engvew.engstelle.Situation
      extended by de.bsvrz.vew.engvew.engstelle.Engstelle
All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientReceiverInterface, de.bsvrz.sys.funclib.dambach.dav.daf.EmpfaengerMitAnAbmeldung, de.bsvrz.sys.funclib.dambach.dav.daf.EmpfaengerMitAnmeldung, VerwaltungStaus.BereinigungsListener
Direct Known Subclasses:
Baustelle, Unfall

public abstract class Engstelle
extends Situation
implements VerwaltungStaus.BereinigungsListener

Modelliert eine Engstelle als spezielle Situation

Version:
$Revision: 1.2 $ / $Date: 2008/11/24 16:05:40 $ / ($Author: Sans $)
Author:
Dambach Werke GmbH, Stefan Sans

Nested Class Summary
 class Engstelle.MeldungsBehandlung
          Klasse zur Meldungsbehandlung.
 
Nested classes/interfaces inherited from class de.bsvrz.vew.engvew.engstelle.Situation
Situation.Gueltigkeit, Situation.Lage
 
Field Summary
private static de.bsvrz.sys.funclib.debug.Debug _debug
          Debug-Logger für Logging-Ausgaben
private  java.util.Map<de.bsvrz.dav.daf.main.config.SystemObject,de.bsvrz.sys.funclib.dambach.konfiguration.netz.Verkehrsstaerke> _verkehrsStaerkeStromAbwaerts
          Enthält für jeden MQ stromabwärts unmittelbar hinter der Engstelle eine Instanz vom Typ Verkehrsstaerke, Schlüssel ist das MQ-Systemobjekt.
protected  VerwaltungEngstellen _verwaltung
          Die Engstellenverwaltung, die für diese Instanz zuständig ist
 Engstelle.MeldungsBehandlung kapazitaetsMeldungen
          Instanz von MeldungsBehandlung zur Behandlung von Betriebsmeldungen zur Engpaßprüfung dieser Engstelle
 Engstelle.MeldungsBehandlung stauMeldungen
          Instanz von MeldungsBehandlung zur Behandlung von Betriebsmeldungen zur Stauprüfung dieser Engstelle
 
Constructor Summary
protected Engstelle(VerwaltungEngstellen verwaltung, de.bsvrz.dav.daf.main.config.SystemObject davObjekt)
          Konstruktor für den abstrakten Typ Engstelle
 
Method Summary
 void abmelden()
           
 void bereinige(de.bsvrz.dav.daf.main.config.SystemObject stau)
          Gibt mit dem dynamischen Objekt vom Typ Stau verbundene Ressourcen frei.
protected  void bereinigeVerkehrsStaerke()
          Leert die Map _verkehrsStaerkeStromAbwaerts und gibt mit ihren Einträgen evtl. verbundene Ressourcen frei.
abstract  long getEngpassKapazitaet()
          Bestimmt die (Engpass-) Kapazität dieser Engstelle
 float getFaktorVerkehrsStaerkeStromAbwaerts()
          Bestimmt den Parameter FaktorMaxVerkehrsStärkeStromAbwärts der Engstellenverwaltung
 java.lang.String getIdKapazitaetsMeldung(de.bsvrz.dav.daf.main.config.SystemObject mq)
          Bildet eine Id zur Verwaltung von Betriebsmeldungen bezgl. der Engpaßprüfung für diese Engsstelle
 java.lang.String getIdStauMeldung(de.bsvrz.dav.daf.main.config.SystemObject stau)
          Bildet eine Id zur Verwaltung von Betriebsmeldungen bezgl. der Stauprüfung für diese Engsstelle
private  float getLaengeStrassenSegment(de.bsvrz.dav.daf.main.config.SystemObject ss)
          Berechnet die Länge eines Strassensegments
 de.bsvrz.dav.daf.main.config.SystemObject getLetztesStrassenSegment()
          Bestimmt das letzte Strassensegment dieser Engstelle
 long getMaxLaengeStauUeberBaustellenEnde()
          Bestimmt den Parameter MaxLängeStauÜberBaustellenEnde der Engstellenverwaltung
protected  java.util.Collection<de.bsvrz.dav.daf.main.config.SystemObject> getMqStromAbwaerts(java.lang.String ssPid, long offset)
          Bestimmt die MQ stromabwärts unmittelbar hinter dem übergebenen Straßensegment, unter berücksichtigung des Offsets
 java.util.Collection<ErgebnisEngpassPruefung> pruefeEngpass()
          Führt die Engpaßprüfung für diese Engstelle durch.
 java.util.Collection<ErgebnisStauPruefung> pruefeStaus()
          Führt die Stauprüfung für diese Engstelle durch.
 java.util.Collection<de.bsvrz.dav.daf.main.config.SystemObject> pruefeStausAlt()
           
 boolean setStauMeldungAktiv(de.bsvrz.dav.daf.main.config.SystemObject stau)
          Setzt eine Betriebsmeldung bezgl.
 boolean setStauMeldungInaktiv(de.bsvrz.dav.daf.main.config.SystemObject stau)
          Setzt eine Betriebsmeldung bezgl.
 void update(de.bsvrz.dav.daf.main.ResultData[] resultData)
           
 
Methods inherited from class de.bsvrz.vew.engvew.engstelle.Situation
anmelden, getConnection, getGueltigkeit, getLage, getObjekt, pruefeGueltigkeit, pruefeLage, setGueltigkeit, setLage, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_debug

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


_verwaltung

protected final VerwaltungEngstellen _verwaltung
Die Engstellenverwaltung, die für diese Instanz zuständig ist


_verkehrsStaerkeStromAbwaerts

private java.util.Map<de.bsvrz.dav.daf.main.config.SystemObject,de.bsvrz.sys.funclib.dambach.konfiguration.netz.Verkehrsstaerke> _verkehrsStaerkeStromAbwaerts
Enthält für jeden MQ stromabwärts unmittelbar hinter der Engstelle eine Instanz vom Typ Verkehrsstaerke, Schlüssel ist das MQ-Systemobjekt.


stauMeldungen

public final Engstelle.MeldungsBehandlung stauMeldungen
Instanz von MeldungsBehandlung zur Behandlung von Betriebsmeldungen zur Stauprüfung dieser Engstelle


kapazitaetsMeldungen

public final Engstelle.MeldungsBehandlung kapazitaetsMeldungen
Instanz von MeldungsBehandlung zur Behandlung von Betriebsmeldungen zur Engpaßprüfung dieser Engstelle

Constructor Detail

Engstelle

protected Engstelle(VerwaltungEngstellen verwaltung,
                    de.bsvrz.dav.daf.main.config.SystemObject davObjekt)
Konstruktor für den abstrakten Typ Engstelle

Parameters:
verwaltung - die Engstellenverwaltung, die für diese Instanz zuständig ist
davObjekt - das Engstellen-Systemobjekt
Method Detail

getEngpassKapazitaet

public abstract long getEngpassKapazitaet()
Bestimmt die (Engpass-) Kapazität dieser Engstelle

Returns:
Die Kapazität in Fzg/h oder einen Wert <0, falls die Kapazizät nicht bestimmt werden konnte.

getFaktorVerkehrsStaerkeStromAbwaerts

public float getFaktorVerkehrsStaerkeStromAbwaerts()
Bestimmt den Parameter FaktorMaxVerkehrsStärkeStromAbwärts der Engstellenverwaltung

Returns:
den Wert des Parameters

getMaxLaengeStauUeberBaustellenEnde

public long getMaxLaengeStauUeberBaustellenEnde()
Bestimmt den Parameter MaxLängeStauÜberBaustellenEnde der Engstellenverwaltung

Returns:
den Wert des Parameters

pruefeStaus

public java.util.Collection<ErgebnisStauPruefung> pruefeStaus()
                                                       throws java.lang.IllegalStateException
Führt die Stauprüfung für diese Engstelle durch. Wenn ein Stau auf dem letzten Strassensegment der Engstelle stattfindet, wird dessen Länge über das Ender der Engstelle hinaus mit dem Parameter MaxLaengeStauUeberBaustellenEnde verglichen. Alle Staus, die mehr als der Wert des Parameters angibt über das Engstellenende hinausragen, werden zurückgemeldet.

Returns:
Eine Sammlung von ErgebnisStauPruefung der Staus, die länger als der Wert des Parameters MaxLaengeStauUeberBaustellenEnde angibt über das Engstellenende hinausragen. Eine leere Sammlung bedeutet dabei ein positives, eine nichtleere Sammlung ein negatives Ergebnis der Plausibilitätsprüfung.
Throws:
java.lang.IllegalStateException - wenn die Prüfung nicht durchgeführt werden kann, aufgrund etwa nichtversorgter Parameter, Baustelle nicht gültig etc.

pruefeStausAlt

public java.util.Collection<de.bsvrz.dav.daf.main.config.SystemObject> pruefeStausAlt()
                                                                               throws java.lang.IllegalStateException
Throws:
java.lang.IllegalStateException

getLaengeStrassenSegment

private float getLaengeStrassenSegment(de.bsvrz.dav.daf.main.config.SystemObject ss)
Berechnet die Länge eines Strassensegments

Parameters:
ss - das Strassensegment, dessen Länge berechnet werden soll
Returns:
die Länge des Strassensegments
Throws:
java.lang.IllegalArgumentException - falls ss nicht vom Typ "typ.straßenSegment" ist

pruefeEngpass

public java.util.Collection<ErgebnisEngpassPruefung> pruefeEngpass()
                                                            throws java.lang.IllegalStateException
Führt die Engpaßprüfung für diese Engstelle durch. Die Verkehrsstärke am nächsten MQ stromabwärts hinter der Engstelle (max bis zum/zur nächsten Kreuz/Dreieck/Anschlusstelle) wird mit dem Produkt aus Restkapazität und Parameter FaktorVerkehrsStaerkeStromAbwaerts verglichen. Die MQ unmittelbar stromabwärts hinter der Baustelle, bei denen das Produkt aus Parameterwert und Restkapazität von der Verkehrsstärke überschritten wird, werden zurückgemeldet.

Returns:
Eine Sammlung von ErgebnisEngpassPruefung der MQ unmittelbar stromabwärts hinter der Baustelle, bei denen das Produkt aus Parameterwert und Restkapazität von der Verkehrsstärke überschritten wird. Eine leere Sammlung bedeutet dabei ein positives, eine nichtleere Sammlung ein negatives Ergebnis der Plausibilitätsprüfung.
Throws:
java.lang.IllegalStateException - wenn die Prüfung nicht durchgeführt werden kann, aufgrund etwa nichtversorgter Parameter, Baustelle nicht gültig etc.

abmelden

public void abmelden()
Specified by:
abmelden in interface de.bsvrz.sys.funclib.dambach.dav.daf.EmpfaengerMitAnAbmeldung
Overrides:
abmelden in class Situation

update

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

getMqStromAbwaerts

protected java.util.Collection<de.bsvrz.dav.daf.main.config.SystemObject> getMqStromAbwaerts(java.lang.String ssPid,
                                                                                             long offset)
Bestimmt die MQ stromabwärts unmittelbar hinter dem übergebenen Straßensegment, unter berücksichtigung des Offsets

Parameters:
ssPid - die Pid des Strassensegments, hinter dem die MQ bestimmt werden sollen
offset - Offset am Ende des übergebenen Straßensegments
Returns:
Sammlung von MQ stromabwärts unmittelbar hinter dem übergebenen Straßensegment

getLetztesStrassenSegment

public de.bsvrz.dav.daf.main.config.SystemObject getLetztesStrassenSegment()
Bestimmt das letzte Strassensegment dieser Engstelle

Returns:
das Systemobjekt des letzten Straßensegments dieser Baustelle, oder null, wenn z. B. keine Strassensegmente parametriert

getIdStauMeldung

public java.lang.String getIdStauMeldung(de.bsvrz.dav.daf.main.config.SystemObject stau)
Bildet eine Id zur Verwaltung von Betriebsmeldungen bezgl. der Stauprüfung für diese Engsstelle

Parameters:
stau - der referenzierte Stau
Returns:
die gebildete Id

getIdKapazitaetsMeldung

public java.lang.String getIdKapazitaetsMeldung(de.bsvrz.dav.daf.main.config.SystemObject mq)
Bildet eine Id zur Verwaltung von Betriebsmeldungen bezgl. der Engpaßprüfung für diese Engsstelle

Parameters:
mq - der referenzierte MQ
Returns:
die gebildete Id

setStauMeldungInaktiv

public boolean setStauMeldungInaktiv(de.bsvrz.dav.daf.main.config.SystemObject stau)
Setzt eine Betriebsmeldung bezgl. Stauprüfung auf "inaktiv" Trägt der Eigenschaft "Dynamisches Objekt" von Staus Rechnung

Parameters:
stau - der referenzierte Stau
Returns:
true, wenn die Meldung vorher aktiv war, false sonst

setStauMeldungAktiv

public boolean setStauMeldungAktiv(de.bsvrz.dav.daf.main.config.SystemObject stau)
Setzt eine Betriebsmeldung bezgl. Stauprüfung auf "aktiv" Trägt der Eigenschaft "Dynamisches Objekt" von Staus Rechnung

Parameters:
stau - der referenzierte Stau
Returns:
true, wenn die Meldung vorher inaktiv war, false sonst

bereinige

public void bereinige(de.bsvrz.dav.daf.main.config.SystemObject stau)
Gibt mit dem dynamischen Objekt vom Typ Stau verbundene Ressourcen frei.

Specified by:
bereinige in interface VerwaltungStaus.BereinigungsListener
Parameters:
stau - der referenzierte Stau

bereinigeVerkehrsStaerke

protected void bereinigeVerkehrsStaerke()
Leert die Map _verkehrsStaerkeStromAbwaerts und gibt mit ihren Einträgen evtl. verbundene Ressourcen frei.