StructureParser.cpp

gehe zur Dokumentation dieser Datei
00001 
00006 #include "StructureParser.h"
00007 
00008 #include "../Koordinaten.h"
00009 #include "../Konstanten.h"
00010 #include "../Spur.h"
00011 #include "../Kreuzung.h"
00012 #include "../Generator.h"
00013 
00014 #include <stdio.h>
00015 #include <stdlib.h>
00016 #include <qstring.h>
00017 
00018 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00025 StructureParser::StructureParser()
00026 {
00027         // please do not use
00028 }
00029 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00030 
00031 
00032 
00033 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00046 StructureParser::StructureParser( Spur **spurenArray, long int *spurenPosition, Liste *generatorListe, Liste *kreuzungsListe, Liste *fahrzeugeListe )
00047 {
00048            spurenArray_ = spurenArray;
00049         spurenPosition_ = spurenPosition;
00050         generatorListe_ = generatorListe;               
00051         kreuzungsListe_ = kreuzungsListe;
00052         fahrzeugeListe_ = fahrzeugeListe;
00053         durchlauf_ = 0;
00054 }
00055 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00056 
00057 
00058 
00059 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00073 bool StructureParser::startElement( const QString&, const QString&, const QString &qName, const QXmlAttributes &qAttr )
00074 {
00075         //--- Element Spur gelesen ------------------------------------------------
00076         if( qName == "spur" )
00077         {
00078                 int                     ausrichtung = 0, richtung = 0, vMax = 0;
00079                 long int        id = 0;
00080                 double          laenge = 0, x = 0, y = 0, z = 0;
00081                 Koordinaten *coords = new Koordinaten();
00082                 
00083                 idSpur = "unbekannt";
00084                 
00085                 for( int i = 0; i < qAttr.count(); i++)
00086                 {   // ID
00087                         if( qAttr.localName( i ) == "id" )
00088                         {
00089                                 id = atoi( (const char*)qAttr.value( i ) );
00090                                 idSpur = (const char*)qAttr.value( i );
00091                                 if( id == 0 )
00092                                 {
00093                                         Fehler *fehler = new Fehler("Eine SpurenID ist leer. Bitte überprüfen Sie die XML-Datei.");
00094                                         throw( fehler );
00095                                 }
00096                         }
00097                         
00098                         // Laenge
00099                         if( qAttr.localName( i ) == "laenge" )
00100                         {
00101                                 laenge = atof( (const char*)qAttr.value( i ) )/10;
00102                                 if( laenge == 0 )
00103                                 {
00104                                         string text = "Die Länge der Spur #"; text += idSpur; text += " ist leer. Bitte überprüfen Sie die XML-Datei.";
00105                                         Fehler *fehler = new Fehler( text );
00106                                         throw( fehler );
00107                                 }
00108                         }
00109                         
00110                         // Ausrichtung
00111                         if( qAttr.localName( i ) == "ausrichtung" )
00112                         {
00113                                 if( strcmp((const char*)qAttr.value( i ),"HOR") == 0 )
00114                                         ausrichtung = HOR;
00115                                 else
00116                                 {
00117                                         if( strcmp((const char*)qAttr.value( i ),"VER") == 0 )
00118                                                         ausrichtung = VER;
00119                                         else
00120                                         {
00121                                                 string text = "Die Ausrichtung der Spur #"; text += idSpur; text += " hat keinen gültigen Wert. Bitte überprüfen Sie die XML-Datei.";
00122                                                 Fehler *fehler = new Fehler( text );
00123                                                 throw( fehler );
00124                                         }
00125                                 }
00126                         }
00127                         // Richtung
00128                         if( qAttr.localName( i ) == "richtung" )
00129                         {
00130                                 if ( strcmp( (const char*)qAttr.value( i ),"LTOR") == 0 || strcmp( (const char*)qAttr.value( i ), "UP") == 0 )
00131                                         richtung = LTOR;
00132                                 else
00133                                 {
00134                                         if ( strcmp( (const char*)qAttr.value( i ),"RTOL") == 0 || strcmp( (const char*)qAttr.value( i ), "DOWN") == 0 )
00135                                                         richtung = RTOL;
00136                                         else
00137                                         {
00138                                                 string text = "Die Richtung der Spur #"; text += idSpur; text += " hat keinen gültigen Wert. Bitte überprüfen Sie die XML-Datei.";
00139                                                 Fehler *fehler = new Fehler( text );
00140                                                 throw( fehler );
00141                                         }
00142                                 }
00143                         }
00144                         
00145                         // Koordinaten
00146                         if( qAttr.localName( i ) == "x" )
00147                                 x = atof( (const char*)qAttr.value( i ) );
00148                                 
00149                         if( qAttr.localName( i ) == "y" )
00150                                 y = atof( (const char*)qAttr.value( i ) );
00151                         
00152                         if( qAttr.localName( i ) == "z" )
00153                                 z = atof( (const char*)qAttr.value( i ) );
00154                         
00155                         // maximale Geschwindigkeit
00156                         if( qAttr.localName( i ) == "maximaleGeschwindigkeit" )
00157                         {
00158                                 vMax = atoi( (const char*)qAttr.value( i ) );
00159                                 if( vMax == 0 )
00160                                 {
00161                                         string text = "Die maximale Geschindigkeit der Spur #"; text += idSpur; text += " ist leer. Bitte überprüfen Sie die XML-Datei.";
00162                                         Fehler *fehler = new Fehler( text );
00163                                         throw( fehler );
00164                                 }
00165                         }
00166                 }
00167                 
00168                 coords->x = x;
00169                 coords->y = y;
00170                 coords->z = z;
00171                 
00172                 // Spur anlegen und mit Attributen fuellen
00173                 spurenArray_[durchlauf_] = new Spur( id, laenge, vMax );
00174                 
00175                 spurenArray_[durchlauf_]->setzeKoordinaten( *coords );
00176                 spurenArray_[durchlauf_]->setzeRichtung( richtung );
00177                 spurenArray_[durchlauf_]->setzeAusrichtung( ausrichtung );
00178                 
00179                 // Hilfsarray mit Position im Spurenarray befuellen
00180                 spurenPosition_[id] = durchlauf_;
00181                 
00182                 // in der Liste einen Schritt weiter gehen
00183                 durchlauf_++;
00184         }
00185 
00186 
00187 
00188         //--- Element Nachfolger gelesen ------------------------------------------
00189         if( qName == "nachfolger" )
00190         {   
00191                 long int id = 0;
00192                 const char      *idNachfolger = "unbekannt";
00193                 int              richtung = 0;
00194                 double   wahrscheinlichkeit = 0;
00195                 
00196                 for( int i = 0; i < qAttr.count(); i++)
00197                 {    // ID
00198                         if( qAttr.localName( i ) == "id" )
00199                         {
00200                                 id = atoi( (const char*)qAttr.value( i ) );
00201                                 idNachfolger = (const char*)qAttr.value( i );
00202                                 if( id == 0 )
00203                                 {
00204                                         string text = "Die ID eines Nachfolgers ist leer. Bitte überprüfen Sie die XML-Datei.";
00205                                         Fehler *fehler = new Fehler( text );
00206                                         throw( fehler );
00207                                 }
00208                         }
00209                                 
00210                         
00211                         // Richtung
00212                         if( qAttr.localName( i ) == "richtung" )
00213                         {
00214                                 if( strcmp((const char*)qAttr.value( i ),"LINKS") == 0 )
00215                                         richtung = LINKS;
00216                                 else
00217                                 {
00218                                         if( strcmp((const char*)qAttr.value( i ),"MITTE") == 0 )
00219                                                 richtung = MITTE;
00220                                         else
00221                                         {
00222                                                 if( strcmp((const char*)qAttr.value( i ),"RECHTS") == 0 )
00223                                                         richtung = RECHTS;
00224                                                 else
00225                                                 {
00226                                                         string text = "Die Abbiegerichtung eines Nachfolgers ist leer. Bitte überprüfen Sie die XML-Datei.";
00227                                                         Fehler *fehler = new Fehler( text );
00228                                                         throw( fehler );
00229                                                 }
00230                                         }
00231                                 }
00232                         }
00233 
00234                         
00235                         // Abbiegewahrscheinlichkeit
00236                         if( qAttr.localName( i ) == "wahrscheinlichkeit" )
00237                         {
00238                                 wahrscheinlichkeit = atof( (const char*)qAttr.value( i ) );
00239                                 if( wahrscheinlichkeit == 0 )
00240                                 {
00241                                         string text = "Die Abbiegewahrscheinlichkeit eines Nachfolgers ist leer. Bitte überprüfen Sie die XML-Datei.";
00242                                         Fehler *fehler = new Fehler( text );
00243                                         throw( fehler );
00244                                 }
00245                         }
00246                 }
00247                 
00248                 spurenArray_[durchlauf_-1]->setzeNaechstesVerbindungselement( richtung, id, wahrscheinlichkeit);
00249         }
00250         
00251 
00252 
00253         //--- Element Generator gelesen -------------------------------------------
00254         if( qName == "generator" )
00255         {
00256                 for( int i = 0; i < qAttr.count(); i++)
00257                 {       // ID des Generators
00258                         if( qAttr.localName( i ) == "id" )
00259                         {
00260                                 generator_generatorId = atoi( (const char*)qAttr.value( i ) );
00261                                 idGenerator = (const char*)qAttr.value( i );
00262                                 if( idGenerator == 0 )
00263                                 {
00264                                         Fehler *fehler = new Fehler("Eine GeneratorID ist leer. Bitte überprüfen Sie die XML-Datei.");
00265                                         throw( fehler );
00266                                 }
00267                         }
00268                         
00269                         // ID der Spur
00270                         if( qAttr.localName( i ) == "spurID" )
00271                         {
00272                                 generator_spurId = atoi( (const char*)qAttr.value( i ) );
00273                                 if( generator_spurId == 0 )
00274                                 {
00275                                         string text = "Die SpurenID des Generators #"; text += idGenerator; text += " ist leer. Bitte überprüfen Sie die XML-Datei.";
00276                                         Fehler *fehler = new Fehler( text );
00277                                         throw( fehler );
00278                                 }
00279                         }
00280 
00281                         // Anzahl der Fahrzeuge
00282                         if( qAttr.localName( i ) == "fahrzeugAnzahl" )
00283                         {
00284                                 generator_anzahl = atoi( (const char*)qAttr.value( i ) );
00285                                 if( generator_anzahl == 0 )
00286                                 {
00287                                         string text = "Die Anzahl der zu generierenden Fahrzeuge des Generators #"; text += idGenerator; text += " ist leer. Bitte überprüfen Sie die XML-Datei.";
00288                                         Fehler *fehler = new Fehler( text );
00289                                         throw( fehler );
00290                                 }
00291                         }
00292                         
00293                         // Zeitintervall
00294                         if( qAttr.localName( i ) == "erstellzeit" )
00295                         {
00296                                 generator_zeit = atof( (const char*)qAttr.value( i ) );
00297                                 if( generator_zeit == 0 )
00298                                 {
00299                                         string text = "Die Erstellzeit des Generators #"; text += idGenerator; text += " ist leer. Bitte überprüfen Sie die XML-Datei.";
00300                                         Fehler *fehler = new Fehler( text );
00301                                         throw( fehler );
00302 
00303                                 }
00304                         }               
00305                 }
00306 
00307                 // Generator erstellen und mit Kenndaten fuellen
00308                 generator = new Generator( spurenArray_[ spurenPosition_[generator_spurId] ], generator_generatorId );
00309                 
00310                 generator->setzeFahrzeugliste( fahrzeugeListe_ );
00311                 generator->setzeAnzahlFahrzeuge( generator_anzahl );
00312                 generator->setzeTaktZeit( generator_zeit );
00313                 
00314                 generatorListe_->datenHinzufuegen( generator );                 
00315         }
00316                         
00317 
00318                         
00319                         
00320         //--- Element Fahrzeug gelesen --------------------------------------------
00321         if( qName == "fahrzeug" )
00322         {
00323                 int                     typ = 0, ttl = 0;
00324                 double          laenge = 0, aPos = 0, aNeg = 0, vMax = 0, r = 0, g = 0, b = 0;
00325                 Koordinaten *color  = new Koordinaten();
00326                 
00327                 for( int i = 0; i < qAttr.count(); i++)
00328                 {   // Typ
00329                         if( qAttr.localName( i ) == "typ" )
00330                         {
00331                                 if( strcmp((const char*)qAttr.value( i ),"PKW") == 0 )
00332                                         typ = PKW;
00333                                 else
00334                                 {
00335                                         if( strcmp((const char*)qAttr.value( i ),"BUS") == 0 )
00336                                                 typ = BUS;
00337                                         else
00338                                         {
00339                                                 if( strcmp((const char*)qAttr.value( i ),"LKW") == 0 )
00340                                                         typ = LKW;
00341                                                 else
00342                                                 {
00343                                                         if( strcmp((const char*)qAttr.value( i ),"BIKE") == 0 )
00344                                                                 typ = BIKE;
00345                                                         else
00346                                                         {
00347                                                                 string text = "Ein Fahrzeug eines Generators hat keinen gültigen Typ. Bitte überprüfen Sie die XML-Datei.";
00348                                                                 Fehler *fehler = new Fehler( text );
00349                                                                 throw( fehler );
00350                                                         }
00351                                                 }
00352                                         }
00353                                 }
00354                         }
00355 
00356                         // Laenge
00357                         if( qAttr.localName( i ) == "laenge" )
00358                         {
00359                                 laenge = atof( (const char*)qAttr.value( i ) );
00360                                 if( laenge == 0 )
00361                                 {
00362                                         string text = "Die Fahrzeuglänge eines Generators ist leer. Bitte überprüfen Sie die XML-Datei.";
00363                                         Fehler *fehler = new Fehler( text );
00364                                         throw( fehler );
00365                                 }
00366                         }
00367                         
00368                         // Lebensdauer
00369                         if( qAttr.localName( i ) == "lebensdauer" )
00370                         {
00371                                 ttl = atoi( (const char*)qAttr.value( i ) );
00372                                 if( ttl == 0 )
00373                                 {
00374                                         string text = "Die Fahrzeuglebensdauer eines Generators ist leer. Bitte überprüfen Sie die XML-Datei.";
00375                                         Fehler *fehler = new Fehler( text );
00376                                         throw( fehler );
00377                                 }
00378                         }
00379                         
00380                         // positive Beschleunigung
00381                         if( qAttr.localName( i ) == "beschleunigungPositiv" )
00382                         {
00383                                 aPos = atof( (const char*)qAttr.value( i ) );
00384                                 if( aPos == 0 )
00385                                 {
00386                                         string text = "Die Fahrzeugbeschleunigung eines Generators ist leer. Bitte überprüfen Sie die XML-Datei.";
00387                                         Fehler *fehler = new Fehler( text );
00388                                         throw( fehler );
00389                                 }
00390                         }
00391                         
00392                         // negative Beschleunigung
00393                         if( qAttr.localName( i ) == "beschleunigungNegativ" )
00394                         {
00395                                 aNeg = atof( (const char*)qAttr.value( i ) );
00396                                 if( aNeg == 0 )
00397                                 {
00398                                         string text = "Die Fahrzeugverzögerung eines Generators ist leer. Bitte überprüfen Sie die XML-Datei.";
00399                                         Fehler *fehler = new Fehler( text );
00400                                         throw( fehler );
00401                                 }
00402                                 if( aNeg > 0 )
00403                                 {
00404                                         string text = "Die Fahrzeugverzögerung eines Generators muss negativ sein. Bitte überprüfen Sie die XML-Datei.";
00405                                         Fehler *fehler = new Fehler( text );
00406                                         throw( fehler );
00407                                 }
00408                         }
00409                         
00410                         // maximale Geschwindigkeit
00411                         if( qAttr.localName( i ) == "hoechstgeschwindigkeit" )
00412                         {
00413                                 vMax = atoi( (const char*)qAttr.value( i ) );
00414                                 if( vMax == 0 )
00415                                 {
00416                                         string text = "Die Fahrzeughöchstgeschwindigkeit eines Generators ist leer. Bitte überprüfen Sie die XML-Datei.";
00417                                         Fehler *fehler = new Fehler( text );
00418                                         throw( fehler );
00419                                 }
00420                         }
00421                         
00422                         // Farbe
00423                         if( qAttr.localName( i ) == "rot" )
00424                         {
00425                                 r = atof( (const char*)qAttr.value( i ) );
00426                                 if( r > 255 )
00427                                 {
00428                                         string text = "Der Rotanteil der Fahrzeugfarbe eines Generators größer als 255. Bitte überprüfen Sie die XML-Datei.";
00429                                         Fehler *fehler = new Fehler( text );
00430                                         throw( fehler );
00431                                 }
00432                         }
00433                         
00434                         if( qAttr.localName( i ) == "gruen" )
00435                         {
00436                                 g = atof( (const char*)qAttr.value( i ) );
00437                                 if( g > 255 )
00438                                 {
00439                                         string text = "Der Grünanteil der Fahrzeugfarbe eines Generators größer als 255. Bitte überprüfen Sie die XML-Datei.";
00440                                         Fehler *fehler = new Fehler( text );
00441                                         throw( fehler );
00442                                 }
00443                         }
00444                         
00445                         if( qAttr.localName( i ) == "blau" )
00446                         {
00447                                 b = atof( (const char*)qAttr.value( i ) );
00448                                 if( b > 255 )
00449                                 {
00450                                         string text = "Der Blauanteil der Fahrzeugfarbe eines Generators größer als 255. Bitte überprüfen Sie die XML-Datei.";
00451                                         Fehler *fehler = new Fehler( text );
00452                                         throw( fehler );
00453                                 }
00454                         }
00455                         
00456                         color->x = r;
00457                         color->y = g;
00458                         color->z = b;
00459                 }
00460 
00461                 // Fahrzeugeigenschaften dem aktuellen Generator uebergeben
00462                 generator->setzeFahrzeugeigenschaften( typ, aPos, aNeg, ttl, laenge, *color, vMax );
00463         }
00464         
00465 
00466         
00467         //--- Element Farhrtenbucheintrag gelesen ------------------------------------------------
00468         if( qName == "fahrtenbucheintrag" )
00469         {
00470                 int richtung = 0;
00471                 
00472                 for( int i = 0; i < qAttr.count(); i++)
00473                 {  
00474                         // Richtung
00475                         if( qAttr.localName( i ) == "richtung" )
00476                         {
00477                                 if( strcmp((const char*)qAttr.value( i ),"LINKS") == 0 )
00478                                         richtung = LINKS;
00479                                 else 
00480                                 {
00481                                         if( strcmp((const char*)qAttr.value( i ),"MITTE") == 0 )
00482                                                 richtung = MITTE;
00483                                         else
00484                                         {
00485                                                 if( strcmp((const char*)qAttr.value( i ),"RECHTS") == 0 )
00486                                                         richtung = RECHTS;
00487                                                 else
00488                                                 {
00489                                                         Fehler *fehler = new Fehler( "Ein Fahrtenbucheintrag eines Generators ist nicht korrekt. Bitte überprüfen Sie die XML-Datei.");
00490                                                         fehler->ergaenzeMeldung( (char*) generator->gibId() );
00491                                                         throw(fehler);
00492                                                 }
00493                                         }
00494                                 }
00495                         }
00496                 }
00497                 
00498                 // Fahrtenbuch eintragen
00499                 generator->wegpunktHinzufuegen( richtung );
00500         }
00501                         
00502                 
00503         //--- Element Kreuzung gelesen ------------------------------------------------
00504         if( qName == "kreuzung" )
00505         {
00506                 long int id = 0, nL = 0, nM = 0, nR = 0, oL = 0, oM = 0, oR = 0, sL = 0, sM = 0, sR = 0, wL = 0, wM = 0, wR = 0;
00507                 const char *idKreuzung = "unbekannt";
00508                 int              ampelAlgo = 1;
00509 
00510                 for( int i = 0; i < qAttr.count(); i++)
00511                 {   // Norden
00512                         if( qAttr.localName( i ) == "nordenLinks" )
00513                                 nL = atoi( (const char*)qAttr.value( i ) );
00514                         if( qAttr.localName( i ) == "nordenMitte" )
00515                                 nM = atoi( (const char*)qAttr.value( i ) );
00516                         if( qAttr.localName( i ) == "nordenRechts" )
00517                                 nR = atoi( (const char*)qAttr.value( i ) );
00518 
00519                         // Osten
00520                         if( qAttr.localName( i ) == "ostenLinks" )
00521                                 oL = atoi( (const char*)qAttr.value( i ) );
00522                         if( qAttr.localName( i ) == "ostenMitte" )
00523                                 oM = atoi( (const char*)qAttr.value( i ) );
00524                         if( qAttr.localName( i ) == "ostenRechts" )
00525                                 oR = atoi( (const char*)qAttr.value( i ) );
00526 
00527                         // Sueden
00528                         if( qAttr.localName( i ) == "suedenLinks" )
00529                                 sL = atoi( (const char*)qAttr.value( i ) );
00530                         if( qAttr.localName( i ) == "suedenMitte" )
00531                                 sM = atoi( (const char*)qAttr.value( i ) );
00532                         if( qAttr.localName( i ) == "suedenRechts" )
00533                                 sR = atoi( (const char*)qAttr.value( i ) );
00534 
00535                         // Westen
00536                         if( qAttr.localName( i ) == "westenLinks" )
00537                                 wL = atoi( (const char*)qAttr.value( i ) );
00538                         if( qAttr.localName( i ) == "westenMitte" )
00539                                 wM = atoi( (const char*)qAttr.value( i ) );
00540                         if( qAttr.localName( i ) == "westenRechts" )
00541                                 wR = atoi( (const char*)qAttr.value( i ) );
00542                 
00543                         // ID der Spur
00544                         if( qAttr.localName( i ) == "id" )
00545                         {
00546                                 id = atoi( (const char*)qAttr.value( i ) );
00547                                 idKreuzung = (const char*)qAttr.value( i );
00548                                 if( id == 0 )
00549                                 {
00550                                         Fehler *fehler = new Fehler("Eine KreuzungsID ist leer. Bitte überprüfen Sie die XML-Datei.");
00551                                         throw( fehler );
00552                                 }
00553                         }
00554 
00555                         // Ampelalgorithmus
00556                         if( qAttr.localName( i ) == "ampelalgorithmus")
00557                         {
00558                                 ampelAlgo = atoi( (const char*)qAttr.value( i ) );
00559                                 if( ampelAlgo == 0 )
00560                                 {
00561                                         string text = "Der Ampelalgorithmus der Kreuzung #"; text += idKreuzung; text += " ist nicht gesetzt. Bitte überprüfen Sie die XML-Datei.";
00562                                         Fehler *fehler = new Fehler( text );
00563                                         throw( fehler );
00564                                 }
00565                         }
00566                         
00567                 }
00568 
00569                 // Kreuzung erstellen und mit Kenndaten fuellen
00570                 Kreuzung   *kreuzung = new Kreuzung( id );
00571 
00572                 if( nL != 0 )
00573                         kreuzung->setzeSpur( NORD, LINKS, spurenArray_[ spurenPosition_[nL] ] );
00574                 if( nM != 0 )
00575                         kreuzung->setzeSpur( NORD, MITTE, spurenArray_[ spurenPosition_[nM] ] );
00576                 if( nR != 0 )
00577                         kreuzung->setzeSpur( NORD, RECHTS, spurenArray_[ spurenPosition_[nR] ] );
00578                 if( oL != 0 )
00579                         kreuzung->setzeSpur( OST, LINKS, spurenArray_[ spurenPosition_[oL] ] );
00580                 if( oM != 0 )
00581                         kreuzung->setzeSpur( OST, MITTE, spurenArray_[ spurenPosition_[oM] ] );
00582                 if( oR != 0 )
00583                         kreuzung->setzeSpur( OST, RECHTS, spurenArray_[ spurenPosition_[oR] ] );
00584                 if( sL != 0 )
00585                         kreuzung->setzeSpur( SUED, LINKS, spurenArray_[ spurenPosition_[sL] ] );
00586                 if( sM != 0 )
00587                         kreuzung->setzeSpur( SUED, MITTE, spurenArray_[ spurenPosition_[sM] ] );
00588                 if( sR != 0 )
00589                         kreuzung->setzeSpur( SUED, RECHTS, spurenArray_[ spurenPosition_[sR] ] );
00590                 if( wL != 0 )
00591                         kreuzung->setzeSpur( WEST, LINKS, spurenArray_[ spurenPosition_[wL] ] );
00592                 if( wM != 0 )
00593                         kreuzung->setzeSpur( WEST, MITTE, spurenArray_[ spurenPosition_[wM] ] );
00594                 if( wR != 0 )
00595                         kreuzung->setzeSpur( WEST, RECHTS, spurenArray_[ spurenPosition_[wR] ] );
00596 
00597                 try
00598                 {
00599                         kreuzung->setzeAmpelalgorithmus( ampelAlgo );
00600                 }
00601                 catch(Fehler f)
00602                 {
00603                         string text = "Der Ampelalgorithmus der Kreuzung #"; text += idKreuzung; text += " hat keinen gültigen Wert. Bitte überprüfen Sie die XML-Datei.";
00604                         Fehler *fehler = new Fehler( text );
00605                         throw( fehler );
00606                 }
00607                 
00608                 kreuzungsListe_->datenHinzufuegen( kreuzung );
00609         }
00610 
00611         return TRUE;
00612 }
00613 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00614 
00615 
00616 
00617 
00618 
00619 
00620 //------------------------------------------------------------------------------------------------------------------
00627 StructureCounter::StructureCounter()
00628 {
00629         countSpuren_ = 0;
00630 }
00631 //------------------------------------------------------------------------------------------------------------------
00632 
00633 
00634 
00635 //------------------------------------------------------------------------------------------------------------------
00646 bool StructureCounter::endElement( const QString&, const QString&, const QString &qName )
00647 {
00648         if( qName == "spur" )
00649                 countSpuren_ += 1;
00650         
00651         return TRUE;
00652 }
00653 //------------------------------------------------------------------------------------------------------------------
00654 
00655 
00656 
00657 //------------------------------------------------------------------------------------------------------------------
00666 int StructureCounter::gibAnzahlSpuren()
00667 {
00668         return countSpuren_;
00669 }
00670 //------------------------------------------------------------------------------------------------------------------
00671 
00672 
00673 
00674 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00681 StructureGetter::StructureGetter()
00682 {
00683         maxID_ = 0;
00684 }
00685 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00686 
00687 
00688 
00689 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00701 bool StructureGetter::startElement( const QString&, const QString&, const QString &qName, const QXmlAttributes &qAttr )
00702 {
00703         if( qName == "spur" )
00704         {
00705                 long int        id = 0;
00706                 
00707                 for( int i = 0; i < qAttr.count(); i++)
00708                 {   // ID
00709                         if( qAttr.localName( i ) == "id" )
00710                                 id = atol( (const char*)qAttr.value( i ) );
00711                 }
00712                 
00713                 // ggf. neue maxID setzen
00714                 if( id > maxID_ )
00715                         maxID_ = id;
00716         }
00717         
00718         return TRUE;
00719 }
00720 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00721 
00722 
00723 
00724 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00733 long int StructureGetter::gibMaxId()
00734 {
00735         return maxID_;
00736 }
00737 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Erzeugt am Tue Jun 14 18:36:50 2005 für TraffSpot von  doxygen 1.3.9.1