NILoader Class Reference

#include <NILoader.h>


Detailed Description

Perfoms network import.

A plain loader which encapsulates calls to the import modules.

Definition at line 53 of file NILoader.h.


Public Member Functions

void load (OptionsCont &oc)
 NILoader (NBNetBuilder &nb) throw ()
 Constructor.
 ~NILoader () throw ()
 Destructor.

Private Member Functions

void loadXML (OptionsCont &oc)
void loadXMLType (SUMOSAXHandler *handler, const std::vector< std::string > &files, const std::string &type)
 NILoader (const NILoader &)
 Invalidated copy constructor.
NILoaderoperator= (const NILoader &)
 Invalidated assignment operator.

Private Attributes

NBNetBuildermyNetBuilder
 The network builder to fill with loaded data.

Constructor & Destructor Documentation

NILoader::NILoader ( NBNetBuilder nb  )  throw ()

Constructor.

Parameters:
[in] nb The network builder to fill with loaded data

Definition at line 68 of file NILoader.cpp.

00069         : myNetBuilder(nb) {}

NILoader::~NILoader (  )  throw ()

Destructor.

Definition at line 72 of file NILoader.cpp.

00072 {}

NILoader::NILoader ( const NILoader  )  [private]

Invalidated copy constructor.


Member Function Documentation

void NILoader::load ( OptionsCont oc  ) 

loads data from the files specified in the given option container

Definition at line 76 of file NILoader.cpp.

References NBNetBuilder::getDistrictCont(), NBNetBuilder::getEdgeCont(), NBNetBuilder::getNodeCont(), NBEdgeCont::getNoEdgeSplits(), GeoConvHelper::getProjString(), OptionsCont::getStringVector(), NBNetBuilder::getTypeCont(), GeoConvHelper::init(), NIImporter_OpenDrive::loadNetwork(), NIImporter_DlrNavteq::loadNetwork(), NIImporter_Vissim::loadNetwork(), NIImporter_ArcView::loadNetwork(), NIImporter_VISUM::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_SUMO::loadNetwork(), loadXML(), loadXMLType(), myNetBuilder, NBTypeCont::size(), NBDistrictCont::size(), NBEdgeCont::size(), NBNodeCont::size(), toString(), GeoConvHelper::usingGeoProjection(), and WRITE_MESSAGE.

Referenced by main().

00076                               {
00077     // build the projection
00078     if (!GeoConvHelper::init(oc)) {
00079         throw ProcessError("Could not build projection!");
00080     }
00081     // load types first
00082     NIXMLTypesHandler *handler =
00083         new NIXMLTypesHandler(myNetBuilder.getTypeCont());
00084     loadXMLType(handler, oc.getStringVector("xml-type-files"), "types");
00085     // try to load using different methods
00086     NIImporter_SUMO::loadNetwork(oc, myNetBuilder);
00087     NIImporter_RobocupRescue::loadNetwork(oc, myNetBuilder);
00088     NIImporter_OpenStreetMap::loadNetwork(oc, myNetBuilder);
00089     NIImporter_VISUM::loadNetwork(oc, myNetBuilder);
00090     NIImporter_ArcView::loadNetwork(oc, myNetBuilder);
00091     NIImporter_Vissim::loadNetwork(oc, myNetBuilder);
00092     NIImporter_DlrNavteq::loadNetwork(oc, myNetBuilder);
00093     NIImporter_OpenDrive::loadNetwork(oc, myNetBuilder);
00094     loadXML(oc);
00095     // check the loaded structures
00096     if (myNetBuilder.getNodeCont().size()==0) {
00097         throw ProcessError("No nodes loaded.");
00098     }
00099     if (myNetBuilder.getEdgeCont().size()==0) {
00100         throw ProcessError("No edges loaded.");
00101     }
00102     // report loaded structures
00103     WRITE_MESSAGE(" Import done:");
00104     if (myNetBuilder.getDistrictCont().size()>0) {
00105         WRITE_MESSAGE("   " + toString(myNetBuilder.getDistrictCont().size()) + " districts loaded.");
00106     }
00107     WRITE_MESSAGE("   " + toString(myNetBuilder.getNodeCont().size()) + " nodes loaded.");
00108     if (myNetBuilder.getTypeCont().size()>0) {
00109         WRITE_MESSAGE("   " + toString(myNetBuilder.getTypeCont().size()) + " types loaded.");
00110     }
00111     WRITE_MESSAGE("   " + toString(myNetBuilder.getEdgeCont().size()) + " edges loaded.");
00112     if (myNetBuilder.getEdgeCont().getNoEdgeSplits()>0) {
00113         WRITE_MESSAGE("The split of edges was performed "+ toString(myNetBuilder.getEdgeCont().getNoEdgeSplits()) + " times.");
00114     }
00115     if (GeoConvHelper::usingGeoProjection()) {
00116         WRITE_MESSAGE("Proj projection parameters used: '" + GeoConvHelper::getProjString() + "'.");
00117     }
00118 }

void NILoader::loadXML ( OptionsCont oc  )  [private]

loads data from sumo-files loads data from XML-files

Definition at line 125 of file NILoader.cpp.

References NBNetBuilder::getDistrictCont(), NBNetBuilder::getEdgeCont(), NBNetBuilder::getNodeCont(), OptionsCont::getStringVector(), NBNetBuilder::getTLLogicCont(), NBNetBuilder::getTypeCont(), loadXMLType(), and myNetBuilder.

Referenced by load().

00125                                  {
00126     // load nodes
00127     loadXMLType(new NIXMLNodesHandler(myNetBuilder.getNodeCont(),
00128                                       myNetBuilder.getTLLogicCont(), oc),
00129                 oc.getStringVector("xml-node-files"), "nodes");
00130     // load the edges
00131     loadXMLType(new NIXMLEdgesHandler(myNetBuilder.getNodeCont(),
00132                                       myNetBuilder.getEdgeCont(),
00133                                       myNetBuilder.getTypeCont(),
00134                                       myNetBuilder.getDistrictCont(), oc),
00135                 oc.getStringVector("xml-edge-files"), "edges");
00136     // load the connections
00137     loadXMLType(new NIXMLConnectionsHandler(myNetBuilder.getEdgeCont()),
00138                 oc.getStringVector("xml-connection-files"), "connections");
00139 }

void NILoader::loadXMLType ( SUMOSAXHandler handler,
const std::vector< std::string > &  files,
const std::string &  type 
) [private]

loads data from the list of xml-files of certain type

loads a single user-specified file

Definition at line 144 of file NILoader.cpp.

References TplConvert< E >::_2str(), MsgHandler::beginProcessMsg(), MsgHandler::endProcessMsg(), FileHelpers::exists(), MsgHandler::getErrorInstance(), GenericSAXHandler::getFileName(), MsgHandler::getMessageInstance(), XMLSubSys::getSAXReader(), MsgHandler::inform(), and GenericSAXHandler::setFileName().

Referenced by load(), and loadXML().

00145                                              {
00146     // build parser
00147     SAX2XMLReader* parser = XMLSubSys::getSAXReader(*handler);
00148     std::string exceptMsg = "";
00149     // start the parsing
00150     try {
00151         for (std::vector<std::string>::const_iterator file=files.begin(); file!=files.end(); ++file) {
00152             if (!FileHelpers::exists(*file)) {
00153                 MsgHandler::getErrorInstance()->inform("Could not open " + type + "-file '" + *file + "'.");
00154                 exceptMsg = "Process Error";
00155                 continue;
00156             }
00157             handler->setFileName(*file);
00158             MsgHandler::getMessageInstance()->beginProcessMsg("Parsing " + type + " from '" + *file + "'...");
00159             parser->parse(file->c_str());
00160             MsgHandler::getMessageInstance()->endProcessMsg("done.");
00161         }
00162     } catch (const XMLException& toCatch) {
00163         exceptMsg = TplConvert<XMLCh>::_2str(toCatch.getMessage())
00164                     + "\n  The " + type  + " could not be loaded from '" + handler->getFileName() + "'.";
00165     } catch (const ProcessError& toCatch) {
00166         exceptMsg = std::string(toCatch.what()) + "\n  The " + type  + " could not be loaded from '" + handler->getFileName() + "'.";
00167     } catch (...) {
00168         exceptMsg = "The " + type  + " could not be loaded from '" + handler->getFileName() + "'.";
00169     }
00170     delete parser;
00171     delete handler;
00172     if (exceptMsg != "") {
00173         throw ProcessError(exceptMsg);
00174     }
00175 }

NILoader& NILoader::operator= ( const NILoader  )  [private]

Invalidated assignment operator.


Field Documentation

The network builder to fill with loaded data.

Definition at line 81 of file NILoader.h.

Referenced by load(), and loadXML().


The documentation for this class was generated from the following files:

Generated on Wed May 5 00:06:53 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6