RegisterWizardFactory.cpp
Go to the documentation of this file.
00001 #include "robot_instance/RegisterWizardFactory.h"
00002 
00003 using namespace std;
00004 using namespace log4cpp;
00005 
00006 RegisterWizardMap::value_type RegisterWizardFactory::fromXml(const std::string& xml, const std::string& namePrefix)
00007 {
00008     TiXmlDocument file;
00009     file.Parse(xml.c_str());
00010     TiXmlHandle doc(&file);
00011     TiXmlHandle elementHandle(doc.FirstChild("Register"));
00012 
00013     RegisterWizardPtr registerWizard;
00014     RegisterPropertiesFactory registerPropertiesFactory;
00015 
00016     if (elementHandle.ToElement())
00017     {
00018         string name = "";
00019         string id = "";
00020 
00021         if (elementHandle.ToElement()->Attribute("id"))
00022         {
00023             id = elementHandle.ToElement()->Attribute("id");
00024 
00025             if (id.length() == 0)
00026             {
00027                 NasaCommonLogging::Logger::log("gov.nasa.robonet.RegisterWizardFactory", Priority::ERROR, "The attribute [id] is malformed.");
00028                 MissingXMLElementException missingXMLElementException;
00029                 throw missingXMLElementException;
00030             }
00031 
00032             if (namePrefix.length() > 0)
00033             {
00034                 name = namePrefix + StringUtilities::TOKEN_DELIMITER + id;
00035             }
00036             else
00037             {
00038                 name = id;
00039             }
00040         }
00041         else
00042         {
00043             stringstream err;
00044             err << "The attribute [id] was not found for element [" << elementHandle.ToElement()->ValueStr() << "]";
00045             NasaCommonLogging::Logger::log("gov.nasa.robonet.RegisterWizardFactory", Priority::ERROR, err.str());
00046             MissingXMLElementException missingXMLElementException;
00047             throw missingXMLElementException;
00048         }
00049 
00050         NasaCommonLogging::Logger::log("gov.nasa.robonet.RegisterWizardFactory", Priority::INFO, "Register [" + name + "] being parsed.");
00051 
00052         RegisterPropertiesPtr registerProperties = registerPropertiesFactory.fromXml(xml);
00053         registerWizard = boost::make_shared<RegisterWizard>(registerProperties);
00054 
00055         NasaCommonLogging::Logger::log("gov.nasa.robonet.RegisterWizardFactory", Priority::INFO, "Register [" + name + "] parsed.");
00056 
00057         return RegisterWizardMap::value_type(name, registerWizard);
00058     }
00059     else
00060     {
00061         stringstream err;
00062         err << "The element [Register] was not found.";
00063         NasaCommonLogging::Logger::log("gov.nasa.robonet.RegisterWizardFactory", Priority::ERROR, err.str());
00064         MissingXMLElementException missingXMLElementException;
00065         throw missingXMLElementException;
00066     }
00067 }
00068 


robot_instance
Author(s):
autogenerated on Sat Jun 8 2019 20:43:12