de.bsvrz.kex.bwsin.konfig
Class KonfigurationsDaten

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

public class KonfigurationsDaten
extends Object

Modul KonfigurationsDaten. Das Modul führt die zentralen Operationen des Netzimportes aus.

Version:
$Id: KonfigurationsDaten.java 10471 2008-07-11 11:21:53Z gieseler $
Author:
BitCtrl Systems GmbH, Gieseler

Field Summary
private  SINAktuelleKonfiguration aktuelleKonfiguration
          Die aktuelle Konfiguration.
(package private)  AufteilungspunkteAktuelleKonfiguration apaktuell
          Die Aufeilungspunkte der aktuellen Konfiguration.
private  HashSet<StrassenAbschnitt> assMenge
          Die Menge der ASS zugeordneten Straßenabschnitte.
private  BetriebsKilometer betriebsKilometer
          Die Betriebskilometerangaben aus OKSTRA.
private  de.bsvrz.dav.daf.main.ClientDavConnection dav
          Datenverteiler-Verbindung.
private static de.bsvrz.sys.funclib.debug.Debug DEBUG
          Logger für Debug-Ausgaben.
private  ImportNetz importNetz
          Das Importnetz.
(package private)  Map<String,KonfigurationsObjekt> konfigurationsObjekte
          Die erzeugten Konfigurationsobjekte.
private  Okstra okstradb
          OKSTRA-Datenbasis.
private  SegmentFactory segmentFactory
          Die Segment-Factory.
(package private)  List<StrassenAbschnitt> strassenAbschnitte
          Die gebildeten Straßenabschnitte.
 
Constructor Summary
KonfigurationsDaten(SINAktuelleKonfiguration konfiguration, de.bsvrz.dav.daf.main.ClientDavConnection dav, Okstra okstradb)
          Konstruktor.
 
Method Summary
 void abschnitteAufteilen()
          Aufteilung der Straßenabschnitte.
private  void addiereTeilsegmente(SINStrassenSegment segment)
          Fügt die Teilsegmente eines Straßensegmentes zur Liste der Konfigurationsobjekte hinzu.
(package private)  void addKonfigurationsObjekt(KonfigurationsObjekt objekt)
          Fügt ein neu erstelltes Konfigurationsobjekt zur Tabelle der Konfigurationsobjekte hinzu.
private  Location bestimmeKnotenLocation(Location vonlc, Location nachlc)
          Bestimmt die Knotenlocation zu einem Straßensegment.
private  int bildeAeussereStrassenSegmente()
          Bildet die äußeren Straßensegmente.
private  SINISS bildeInneresStrassenSegment(Route route, String extraname, boolean dummy)
          Bildet ein inneres Straßensegment aus einer Route.
private  int bildeInnereStrassenSegmente(ArrayList<Route> routen)
          Bildet innere Straßensegmente auf der Basis von Routen.
 void bildeStrassen()
          Bildet die Straßen.
 void bildeStrassenAbschnitte()
          Bildet die Straßenabschnitte auf der Basis der OKSTRA-Daten.
 void bildeStrassenKnoten()
          Bildet die Strßenknoten.
 void bildeStrassenSegmente()
          Erzeugt die Straßensegmente.
 void bildeStrassenTeilSegmente()
          Erzeugt die Straßenteilsegmente.
private  boolean checkLocations(Location von, Location nach)
          Überprüft die Locations auf Gültigkeit.
 void exportKB(SINKonfigurationsBereich kb)
          Exportiert alle erzeugten Konfigurationsobjekte SINKonfigurationsBereich.
 Map<String,KonfigurationsObjekt> getOjekteMap()
          Gibt die erzeugten Konfigurationsobjekte zurück.
 void importiere()
          Zentrale Methode zur Durchführung des Importes und Erzeugung der internen Konfigurationsobjekte.
private  String korrigierePid(KonfigurationsObjekt ko)
          Korrigiert die PID und den Teil des Namens, der durch die PID bestimmt wird, dermassen, dass versucht wird, die kleinstmögliche laufende Nummer als Postfix der PID zu nutzen.
private  void segmentePidsKorrigieren()
          Die Methode korrigiert folgenden Effekt:
Durch das sequenzielle Erzeugen der Straßensegmente entstehen bei Änderungen (geänderter Polygonzug) Konfigurationsobjekte mit PIDs, die sich durch die laufende Nummer am Ende der PID vom Objekt der aktuellen Konfiguration unterscheiden.
private  void segmenteTeilen()
          Teilt die Segmente an den Aufteilungspunkten der aktuellen Konfiguration.
 
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
Logger für Debug-Ausgaben.


strassenAbschnitte

List<StrassenAbschnitt> strassenAbschnitte
Die gebildeten Straßenabschnitte.


konfigurationsObjekte

Map<String,KonfigurationsObjekt> konfigurationsObjekte
Die erzeugten Konfigurationsobjekte.


importNetz

private ImportNetz importNetz
Das Importnetz.


betriebsKilometer

private BetriebsKilometer betriebsKilometer
Die Betriebskilometerangaben aus OKSTRA.


assMenge

private final HashSet<StrassenAbschnitt> assMenge
Die Menge der ASS zugeordneten Straßenabschnitte.


aktuelleKonfiguration

private final SINAktuelleKonfiguration aktuelleKonfiguration
Die aktuelle Konfiguration.


segmentFactory

private SegmentFactory segmentFactory
Die Segment-Factory.


dav

private final de.bsvrz.dav.daf.main.ClientDavConnection dav
Datenverteiler-Verbindung.


okstradb

private final Okstra okstradb
OKSTRA-Datenbasis.


apaktuell

AufteilungspunkteAktuelleKonfiguration apaktuell
Die Aufeilungspunkte der aktuellen Konfiguration.

Constructor Detail

KonfigurationsDaten

public KonfigurationsDaten(SINAktuelleKonfiguration konfiguration,
                           de.bsvrz.dav.daf.main.ClientDavConnection dav,
                           Okstra okstradb)
Konstruktor.

Parameters:
konfiguration - aktuelle Konfiguration
dav - Datenverteiler-Verbindung
okstradb - OKSTRA-Datenbasis
Method Detail

abschnitteAufteilen

public void abschnitteAufteilen()
                         throws ImportException
Aufteilung der Straßenabschnitte.

Die Straßenabschnitte werden zunächst an den Aufteilungspunkten der OKSTRA-Datenbasis geteilt. Anschließend werden sie an den durch Koordinaten bestimmten Aufteilungspunkten der aktuellen Konfiguration geteilt.

Throws:
ImportException - bei Ausnahmen

addiereTeilsegmente

private void addiereTeilsegmente(SINStrassenSegment segment)
Fügt die Teilsegmente eines Straßensegmentes zur Liste der Konfigurationsobjekte hinzu.

Parameters:
segment - Straßensegment

addKonfigurationsObjekt

void addKonfigurationsObjekt(KonfigurationsObjekt objekt)
Fügt ein neu erstelltes Konfigurationsobjekt zur Tabelle der Konfigurationsobjekte hinzu. Es wird geprüft, ob das Objekt bereits existiert.

Parameters:
objekt - Kondigurationsobjekt

bestimmeKnotenLocation

private Location bestimmeKnotenLocation(Location vonlc,
                                        Location nachlc)
                                 throws ImportException
Bestimmt die Knotenlocation zu einem Straßensegment.

Parameters:
vonlc - Location, von der sich das Segment wegbewegt.
nachlc - Location, auf die sich das Segment zubewegt.
Returns:
Location
Throws:
ImportException - bei Ausnahmen

bildeAeussereStrassenSegmente

private int bildeAeussereStrassenSegmente()
Bildet die äußeren Straßensegmente.

Returns:
Anzahl der gebildeten Segmente

bildeInneresStrassenSegment

private SINISS bildeInneresStrassenSegment(Route route,
                                           String extraname,
                                           boolean dummy)
Bildet ein inneres Straßensegment aus einer Route.

Parameters:
route - Liste von Straßenabschnitten
extraname - Namenserweiterung
dummy - Flag, ob es sich um ein Dummy-ISS (eingefügt zwischen 2 ASS) handelt
Returns:
inneres Straßensegment

bildeInnereStrassenSegmente

private int bildeInnereStrassenSegmente(ArrayList<Route> routen)
Bildet innere Straßensegmente auf der Basis von Routen.

Parameters:
routen - Liste von Routen
Returns:
Anzahl der gebildeten inneren Teilsegmente

bildeStrassen

public void bildeStrassen()
Bildet die Straßen.


bildeStrassenAbschnitte

public void bildeStrassenAbschnitte()
                             throws ImportException
Bildet die Straßenabschnitte auf der Basis der OKSTRA-Daten.

Throws:
ImportException - bei Ausnahmen

bildeStrassenKnoten

public void bildeStrassenKnoten()
Bildet die Strßenknoten.


bildeStrassenSegmente

public void bildeStrassenSegmente()
Erzeugt die Straßensegmente.


bildeStrassenTeilSegmente

public void bildeStrassenTeilSegmente()
Erzeugt die Straßenteilsegmente.


checkLocations

private boolean checkLocations(Location von,
                               Location nach)
                        throws ImportException
Überprüft die Locations auf Gültigkeit.

Parameters:
von - VON-Location
nach - NACHLocation
Returns:
true, wenn die beiden Locations gültig sind
Throws:
ImportException - bei ungültigen Locations

exportKB

public void exportKB(SINKonfigurationsBereich kb)
Exportiert alle erzeugten Konfigurationsobjekte SINKonfigurationsBereich.

Parameters:
kb - KonfigurationsBereich

getOjekteMap

public Map<String,KonfigurationsObjekt> getOjekteMap()
Gibt die erzeugten Konfigurationsobjekte zurück.

Returns:
_objektmap

importiere

public void importiere()
                throws ImportException
Zentrale Methode zur Durchführung des Importes und Erzeugung der internen Konfigurationsobjekte.

Throws:
ImportException - bei Ausnahmen

korrigierePid

private String korrigierePid(KonfigurationsObjekt ko)
Korrigiert die PID und den Teil des Namens, der durch die PID bestimmt wird, dermassen, dass versucht wird, die kleinstmögliche laufende Nummer als Postfix der PID zu nutzen.

Parameters:
ko - Konfigurationsobjekt
Returns:
korrigierte PID oder null, wenn nicht korrigiert wurde

segmentePidsKorrigieren

private void segmentePidsKorrigieren()
Die Methode korrigiert folgenden Effekt:

Durch das sequenzielle Erzeugen der Straßensegmente entstehen bei Änderungen (geänderter Polygonzug) Konfigurationsobjekte mit PIDs, die sich durch die laufende Nummer am Ende der PID vom Objekt der aktuellen Konfiguration unterscheiden.

Erst nach dem alle Segmente erzeugt sind, kann entschieden werden, welche Objekte der aktuellen Konfiguration erhalten bleiben, bzw. überschrieben werden sollen.

Beispiel:

In der aktuellen Konfiguration existiert das Straßensegment ass.p.11111.p.22222.0. Durch einen neuen Teilungspunkt (z.B. AQ) entsteht das gleiche Segment, aber mit geändertem Polygonzug. Das Segment der aktuellen Konfiguration wird deshalb nicht als identisch gefunden, das neue Segment erhält die PID ass.p.11111.p.22222.1. Wenn in der neuen Konfiguration kein Objekt mit der PID ass.p.11111.p.22222.0 existiert wird die PID des neuen Objektes in ass.p.11111.p.22222.0 geändert.


Dadurch wird sichergestellt, dass die Segmente immer mit einer laufenden Nummer '0' beginnen und die laufenden Nummern nicht mit jeder Änderung hochlaufen.


segmenteTeilen

private void segmenteTeilen()
Teilt die Segmente an den Aufteilungspunkten der aktuellen Konfiguration.