de.bsvrz.kex.bwsin.konfig
Class SegmentFactory

java.lang.Object
  extended by de.bsvrz.kex.bwsin.konfig.SegmentFactory

public class SegmentFactory
extends Object

Factory zur Generierung von PID's und Namen für die Straßenelemente. Es wird die Eindeutigkeit der PID sichergestellt.

Version:
$Id: SegmentFactory.java 10247 2008-07-04 08:18:31Z gieseler $
Author:
BitCtrl Systems GmbH, Gieseler

Field Summary
private  SINAktuelleKonfiguration aktuelleKonfiguration
          aktuelle Konfiguration.
private  String bundesland
          Bundesland.
private  de.bsvrz.sys.funclib.debug.Debug debug
          DebugLogger für Debug-Ausgaben.
private  int laufendeNummerTeilSegment
          laufende Nummer Pid Straßenteilsegment.
private  HashSet<String> neuePids
          neu erzeugte PID.
private  List<SINAktuellesObjekt> zutestendeSegmente
          Liste der (noch) zu vergleichenden Straßensegmente.
private  List<SINAktuellesObjekt> zutestendeTeilsegmente
          Liste der (noch) zu vergleichenden Straßenteilsegmente.
 
Constructor Summary
SegmentFactory(SINAktuelleKonfiguration aktuelleKonfiguration)
          Konstruktor.
 
Method Summary
static String bildePIDASS(Location locationvon, Location locationnach)
          Erzeugt eine PID (ohne zusätzliche Fahrbeziehung) für ein äußeres Straßensegment.
static String bildePIDISS(Location locationvon, Location locationnach)
          Erzeugt eine PID (ohne zusätzliche Fahrbeziehung) für ein inneres Straßenteilsegment.
private static String bildePIDLocation(Location locationvon, Location locationnach)
          Erzeugt den Location-Teil der PID für innere und äußere Straßenelemente.
 String bildePIDStrassenSegment(String pidanfang, de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
          Bildet die PID für ein Straßensegment.
 String bildePIDStrassenTeilSegment(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
          Bildet die PID für ein Straßenteilsegment.
 String bildePIDSTS(int lfdnr)
          Erzeugt eine PID für ein Straßenteilsegment.
static String bildeSegmentNamen(String pid, String zusatz)
          Bildet den Namen eines Straßensegmentes aus PID und optionalem Zusatztext.
private  SINAktuellesObjekt findeAktuellesObjekt(String davtyp, String neuepid, de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
          Diese Methode sucht ein Objekt der aktuellen Konfiguration, das mit einem vom Import erzeugten Objekt identisch ist.
private  SINAktuellesObjekt findeAktuellesSegment(String neuepid, de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
          Sucht in der Liste der Straßensegmente der aktuellen Konfiguration nach einem identischen Segment.
private  SINAktuellesObjekt findeAktuellesTeilsegment(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
          Findet in der aktuellen Konfiguration ein Teilsegment mit identischem Polygonzug.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

debug

private final de.bsvrz.sys.funclib.debug.Debug debug
DebugLogger für Debug-Ausgaben.


bundesland

private String bundesland
Bundesland.


zutestendeTeilsegmente

private List<SINAktuellesObjekt> zutestendeTeilsegmente
Liste der (noch) zu vergleichenden Straßenteilsegmente.


zutestendeSegmente

private List<SINAktuellesObjekt> zutestendeSegmente
Liste der (noch) zu vergleichenden Straßensegmente.


neuePids

private final HashSet<String> neuePids
neu erzeugte PID.


aktuelleKonfiguration

private SINAktuelleKonfiguration aktuelleKonfiguration
aktuelle Konfiguration.


laufendeNummerTeilSegment

private int laufendeNummerTeilSegment
laufende Nummer Pid Straßenteilsegment.

Constructor Detail

SegmentFactory

public SegmentFactory(SINAktuelleKonfiguration aktuelleKonfiguration)
Konstruktor.

Parameters:
aktuelleKonfiguration - aktuelle Konfiguration
Method Detail

bildePIDASS

public static String bildePIDASS(Location locationvon,
                                 Location locationnach)
Erzeugt eine PID (ohne zusätzliche Fahrbeziehung) für ein äußeres Straßensegment. Die PID wird entsprechend Afo gebildet.

Parameters:
locationvon - Location, von der sich das Straßenelement wegbewegt
locationnach - Location, auf die sich das Straßenelement zubewegt
Returns:
PID

bildePIDISS

public static String bildePIDISS(Location locationvon,
                                 Location locationnach)
Erzeugt eine PID (ohne zusätzliche Fahrbeziehung) für ein inneres Straßenteilsegment. Die PID wird entsprechend Afo gebildet.

Parameters:
locationvon - Location, von der sich das Straßenelement wegbewegt
locationnach - Location, auf die sich das Straßenelement zubewegt
Returns:
PID

bildePIDLocation

private static String bildePIDLocation(Location locationvon,
                                       Location locationnach)
Erzeugt den Location-Teil der PID für innere und äußere Straßenelemente.

Parameters:
locationvon - Location, von der sich das Stra&azlig;ensegment wegbewegt
locationnach - Location, auf die sich das Stra&azlig;ensegment zubewegt
Returns:
Locationangabe entsprechend DatK.

bildeSegmentNamen

public static String bildeSegmentNamen(String pid,
                                       String zusatz)
Bildet den Namen eines Straßensegmentes aus PID und optionalem Zusatztext.

Parameters:
pid - PID
zusatz - Zusatztext zum Namen
Returns:
Name des Straßensegmentes

bildePIDStrassenSegment

public String bildePIDStrassenSegment(String pidanfang,
                                      de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
Bildet die PID für ein Straßensegment.

Zunächst wird in der aktuellen Konfiguration nach einem identischen Segment gesucht. Wenn kein passendes existierendes Straßensegment gefunden wurde, wird aus dem übergebenen PID-Anfang eine eindeutige PID durch Anhängen einer laufenden Nummer erzeugt.

Parameters:
pidanfang - zu vergleichende PID (ohne Zusatzinfo)
polygon - zu vergleichendes Polygon
Returns:
eindeutige PID für ein Straßensegment

bildePIDStrassenTeilSegment

public String bildePIDStrassenTeilSegment(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
Bildet die PID für ein Straßenteilsegment.

Zunächst wird in der aktuellen Konfiguration nach einem identischen Teilsegment gesucht. Wenn kein passendes existierendes Straßenteilsegment gefunden wurde, wird eine eindeutige PID erzeugt.

Parameters:
polygon - zu vergleichendes Polygon
Returns:
eindeutige PID für ein Straßenteilsegment

bildePIDSTS

public String bildePIDSTS(int lfdnr)
Erzeugt eine PID für ein Straßenteilsegment. Die PID wird entsprechend Afo gebildet.

Parameters:
lfdnr - laufende Nummer
Returns:
PID

findeAktuellesObjekt

private SINAktuellesObjekt findeAktuellesObjekt(String davtyp,
                                                String neuepid,
                                                de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
Diese Methode sucht ein Objekt der aktuellen Konfiguration, das mit einem vom Import erzeugten Objekt identisch ist. Ein neues Objekt gilt dabei im Vergleich zur aktuellen Konfiguration als bereits existierend (identisch), wenn

- die Regeln zur Bildung der Attribute zur gleichen PID des Objekts führen und

- die Koordinaten des Objekts (Punkt oder Polygon) identisch sind.

Als identisch werden dabei Koordinaten gewertet, deren Abweichung kleiner oder gleich einer maximalen Abweichung ist.

Parameters:
davtyp - PID des zu testenden DAV-Typs
neuepid - PID des neuen Objektes
polygon - Polygonzug des neuen Objektes
Returns:
das gefundene aktuelle Objekt oder null, wenn kein passendes Objekt gefunden wurde

findeAktuellesSegment

private SINAktuellesObjekt findeAktuellesSegment(String neuepid,
                                                 de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
Sucht in der Liste der Straßensegmente der aktuellen Konfiguration nach einem identischen Segment.

Parameters:
neuepid - zu vergleichende PID
polygon - zu vergleichendes Polygon
Returns:
gefundenes aktuelles Objekt oder null, wenn kein Objekt gefunden werden konnte

findeAktuellesTeilsegment

private SINAktuellesObjekt findeAktuellesTeilsegment(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon)
Findet in der aktuellen Konfiguration ein Teilsegment mit identischem Polygonzug.

Parameters:
polygon - das zu vergleichende Polygon
Returns:
das gefundene Objekt wenn gefunden, oder null