[OSADL-svn-commits] r73 - fapia-trunk/FAPIAConfiguration/source

OSADL repository commits osadl-svn-commits at lists.osadl.org
Tue Oct 2 11:46:05 CEST 2007


Author: tb10rts
Date: Thu Jul 19 07:06:45 2007
New Revision: 73

Log:
Added a folder remotely

Added:
   fapia-trunk/FAPIAConfiguration/source/
   fapia-trunk/FAPIAConfiguration/source/FAPIAConfiguration.cpp
   fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationError.cpp
   fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationInit.cpp
   fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationLogicalPhysicalObject.cpp

Added: fapia-trunk/FAPIAConfiguration/source/FAPIAConfiguration.cpp
==============================================================================
--- (empty file)
+++ fapia-trunk/FAPIAConfiguration/source/FAPIAConfiguration.cpp	Thu Jul 19 07:06:45 2007
@@ -0,0 +1,407 @@
+// $Id$
+
+
+#include "../interface/FAPIAConfiguration.h"
+#include "../interface/FAPIAIConfiguration.h"
+#include "../../interface/FAPIATrace.h"
+
+#if !defined (__ACE_INLINE__)
+#include "../interface/FAPIAConfiguration.i"
+#endif /* __ACE_INLINE__ */
+
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
+
+#include <xercesc/dom/DOM.hpp>
+
+namespace FAPI
+  {
+    namespace Acyclic
+      {
+
+/* ---------------------------------------------------------------------------*/
+
+        namespace Configuration
+          {
+            Configuration::Configuration (void)
+              {
+                FAPIA_TRACE;
+                open();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Configuration::Configuration (const Configuration& conf)
+              {
+                FAPIA_TRACE;
+                open();
+                copy(conf);
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Configuration::~Configuration (void)
+              {
+                FAPIA_TRACE;
+                XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate();
+                close();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            int Configuration::init
+              (
+                    FAPI::Acyclic::Configuration::Init& init,
+                    FAPI::Acyclic::Configuration::Error& error
+              )
+              {
+                FAPIA_TRACE;
+                return parseConfigurationFile(init, error);
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            int Configuration::parseConfigurationFile
+              (
+                    FAPI::Acyclic::Configuration::Init& init,
+                    FAPI::Acyclic::Configuration::Error& error
+              )
+              {
+                FAPIA_TRACE;
+                // Initialisieren des Parsers
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "Initializing the xml platform utils...\n");
+                XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize();
+                
+
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "creating dom parser and setting the specific options...\n");
+                XERCES_CPP_NAMESPACE::XercesDOMParser *parser = new XERCES_CPP_NAMESPACE::XercesDOMParser();
+//ACTIVATE!! IF NOT VALID, STOP HANDLING
+parser->setValidationScheme(XERCES_CPP_NAMESPACE::XercesDOMParser::Val_Auto);
+                parser->setDoNamespaces(false);
+                parser->setDoSchema(false);
+                parser->setValidationSchemaFullChecking(false);
+                parser->setCreateEntityReferenceNodes(false);
+                
+                try
+                  {
+                  FAPIA_DEBUG(
+                    LM_NOTICE,
+                    "parsing the xml file...\n");
+
+                    parser->parse(CONFIGFILE);
+                  }
+                catch(...)
+                  {
+                    ACE_CString strError = "Fatal Error while parsing configfile ";
+                    strError += CONFIGFILE;
+
+                    error.error_code_ = FAPIA_ERROR_CONFIG_PARSE_ERROR;
+                    error.reason_     = strError;
+
+                    FAPIA_DEBUG (
+                        LM_ALERT,
+                        "Error occurred during the parse operation of the configuration file.\n");
+
+                    return FAPIA_ERROR_CONFIG_PARSE_ERROR;
+                  }
+            
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "accessing the document...\n");
+                XERCES_CPP_NAMESPACE::DOMNode *pDoc = parser->getDocument();
+                       
+                if (!pDoc)
+                  {
+                    ACE_CString strError = "Fatal Error while parsing configfile ";
+                    strError += CONFIGFILE;
+
+                    error.error_code_ = FAPIA_ERROR_CONFIG_PARSE_ERROR;
+                    error.reason_     = strError;
+
+                    FAPIA_DEBUG (
+                        LM_ALERT,
+                        "Error document node of configuration file is null.\n");
+
+                    return FAPIA_ERROR_CONFIG_PARSE_ERROR;
+                  }
+                
+
+                /* get the logicaldevices node */
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "getting the commonfieldbusnode...\n");
+                XERCES_CPP_NAMESPACE::DOMNode *pDNCommonFieldBusNode = pDoc->getFirstChild();
+
+                if ( !pDNCommonFieldBusNode )
+                  {
+                    ACE_CString strError = "Missing Information in config file. Commonfieldbus Node not found!";
+                    strError += CONFIGFILE;
+
+                    error.error_code_ = FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                    error.reason_     = strError;
+
+                    strError += "\n";
+
+                    FAPIA_DEBUG (
+                        LM_ALERT,
+                        strError.c_str());
+
+                    return FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                  }
+
+
+                /* Find the logicaldevices node */
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "getting the logicaldevices node...\n");
+                XERCES_CPP_NAMESPACE::DOMNode *pDNIteratorNode = pDNCommonFieldBusNode->getFirstChild();
+                while( NULL != pDNIteratorNode )
+                  {
+                    if ( isNodeNameLikeThis(pDNIteratorNode, XMLCONFIG_LOGICALDEVICES) )
+                      {
+                        break;
+                      }
+                    pDNIteratorNode = pDNIteratorNode->getNextSibling();
+                  }
+
+                if ( !pDNIteratorNode )
+                  {
+                    ACE_CString strError = "Missing Information in config file. Logicaldevices Node not found!";
+                    strError += CONFIGFILE;
+
+                    error.error_code_ = FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                    error.reason_     = strError;
+
+                    strError += "\n";
+
+                    FAPIA_DEBUG (
+                        LM_ALERT,
+                        strError.c_str());
+
+                    return FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                  }
+
+                /* get all devices */
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "iterating through all logicaldevice nodes...\n");
+                XERCES_CPP_NAMESPACE::DOMNode *pDNLogicalDevice = pDNIteratorNode->getFirstChild();
+                while( pDNLogicalDevice )
+                  {
+                    ACE_CString logicalDeviceName;
+                    ACE_CString physicalDeviceName;
+
+
+                    FAPIA_DEBUG(
+                      LM_DEBUG,
+                      "new child node of logicaldevices found...\n");
+
+                    if (isNodeNameLikeThis(pDNLogicalDevice, XMLCONFIG_LOGICALDEVICE))
+                      {
+                        FAPIA_DEBUG(
+                          LM_DEBUG,
+                          "\tlogicaldevice node found...\n");
+
+                        if (hasAttribute(pDNLogicalDevice, XMLCONFIG_NAME))
+                          {
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              "\t\tname attribute found:>");
+
+                            logicalDeviceName = getAttributeValue(pDNLogicalDevice, XMLCONFIG_NAME);
+
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              logicalDeviceName.c_str());
+
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              "<\n");
+                          }
+
+                        /* find the physical device */
+                        XERCES_CPP_NAMESPACE::DOMNode *pDNPhysicalDevice = pDNLogicalDevice->getFirstChild();
+                        while(pDNPhysicalDevice)
+                          {
+                            if (isNodeNameLikeThis(pDNPhysicalDevice, XMLCONFIG_PHYSICALDEVICE))
+                              {
+                                FAPIA_DEBUG(
+                                  LM_DEBUG,
+                                  "\t\t\tphysicaldevicenode found...\n");
+                                break;
+                              }
+                            pDNPhysicalDevice = pDNPhysicalDevice->getNextSibling();
+                          }
+
+                        /* get the communication node */
+                        if (!pDNPhysicalDevice)
+                          {
+                            ACE_CString strError = "Missing Information in config file. Physicaldevice Node not found!";
+                            error.error_code_ = FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                            error.reason_     = strError;
+
+                            strError += "\n";
+
+                            FAPIA_DEBUG (
+                              LM_ALERT,
+                              strError.c_str());
+
+                            return FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                          }/* if !pDNPhysicalDevice */
+
+                        XERCES_CPP_NAMESPACE::DOMNode *pDNCommunication = pDNPhysicalDevice->getFirstChild();
+                        while(pDNCommunication)
+                          {
+                            pDNCommunication = pDNCommunication->getNextSibling();
+                            if ( pDNCommunication && isNodeNameLikeThis(pDNCommunication, XMLCONFIG_COMMUNICATION) )
+                              {
+                                FAPIA_DEBUG(
+                                  LM_DEBUG,
+                                  "\t\t\tcommunicationnode found...\n");
+                                break;
+                              }
+                          }
+                        
+                        if (!pDNCommunication)
+                          {
+                            ACE_CString strError = "Missing Information in config file. Communication Node not found!";
+                            error.error_code_ = FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                            error.reason_     = strError;
+
+                            strError += "\n";
+
+                            FAPIA_DEBUG (
+                              LM_ALERT,
+                              strError.c_str());
+
+                            return FAPIA_ERROR_CONFIG_HAS_WRONG_FORMAT;
+                          }
+
+
+                        if ( hasAttribute(pDNCommunication, XMLCONFIG_DESCRIPTOR) )
+                          {
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              "\t\t\t\tattribute name of communication node found:");
+                            physicalDeviceName = getAttributeValue(pDNCommunication, XMLCONFIG_DESCRIPTOR);
+
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              physicalDeviceName.c_str());
+
+                            FAPIA_DEBUG(
+                              LM_DEBUG,
+                              "\n");
+
+                          }
+
+
+                        if ( 0 != logicalDeviceName.compare("") && 0 != physicalDeviceName.compare("") )
+                          {
+                            LogicalPhysicalObject lpo;
+                            lpo.logical_object_name_  = logicalDeviceName;
+                            lpo.physical_object_name_ = physicalDeviceName;
+
+                            init.logical_physical_objects_.push_back(lpo);
+                          }
+
+                      }/* if nodenamelike XMLCONFIG_LOGICALDEVICE */
+                    pDNLogicalDevice = pDNLogicalDevice->getNextSibling();
+                  }/* isNodeNameLikeThis LOGICALDEVICE */
+
+                FAPIA_DEBUG(
+                  LM_NOTICE,
+                  "parsing the config file finished...\n");
+
+
+                if(parser)
+                  {
+                    delete parser;
+                  }
+
+                return init.logical_physical_objects_.size();
+              }/* parseConfigurationFile */
+
+/* ---------------------------------------------------------------------------*/
+
+            bool Configuration::isNodeNameLikeThis(const XERCES_CPP_NAMESPACE::DOMNode *dnp, const char* cp)
+              {
+                FAPIA_TRACE;
+                char *pNodeName = XERCES_CPP_NAMESPACE::XMLString::transcode(dnp->getNodeName());
+                if (0 == XERCES_CPP_NAMESPACE::XMLString::compareString(pNodeName, cp) )
+                  {
+                    XERCES_CPP_NAMESPACE::XMLString::release(&pNodeName);
+                    return true;
+                  }
+                  XERCES_CPP_NAMESPACE::XMLString::release(&pNodeName);
+                return false;
+              }/* isNodeNameLikeThis */
+
+/* ---------------------------------------------------------------------------*/
+
+            bool Configuration::hasAttribute
+              (
+                const XERCES_CPP_NAMESPACE::DOMNode *dnp,
+                const char* cpAttrName
+              )
+              {
+                FAPIA_TRACE;
+                XERCES_CPP_NAMESPACE::DOMNode *dnpTemp = NULL;
+                XMLCh *xcAttrName = XERCES_CPP_NAMESPACE::XMLString::transcode(cpAttrName);
+
+                if ( dnp && dnp->getAttributes() )
+                  {
+                    dnpTemp = dnp->getAttributes()->getNamedItem(xcAttrName);
+                  }
+
+                XERCES_CPP_NAMESPACE::XMLString::release(&xcAttrName);
+
+                if (!dnpTemp)
+                  {
+                    return false;
+                  }
+
+                return true;
+              }/* hasAttribute */
+
+/* ---------------------------------------------------------------------------*/
+
+            const ACE_CString Configuration::getAttributeValue 
+              (
+                const XERCES_CPP_NAMESPACE::DOMNode *dnp, 
+                const char* cpAttrName
+              )
+              {
+                FAPIA_TRACE;
+                XERCES_CPP_NAMESPACE::DOMNode *dnpTemp = NULL;
+                XMLCh *xcAttrName = XERCES_CPP_NAMESPACE::XMLString::transcode(cpAttrName);
+
+                if ( dnp && dnp->getAttributes() )
+                  {
+                    dnpTemp = dnp->getAttributes()->getNamedItem(xcAttrName);
+                  }
+
+                XERCES_CPP_NAMESPACE::XMLString::release(&xcAttrName);
+
+                if (!dnpTemp)
+                  {
+                    return ACE_CString();
+                  }
+
+                char* cpTmp = XERCES_CPP_NAMESPACE::XMLString::transcode(dnpTemp->getNodeValue());
+                ACE_CString strTemp = cpTmp;
+                XERCES_CPP_NAMESPACE::XMLString::release(&cpTmp);
+
+                return strTemp;
+              }/* getAttributeValue */
+
+/* ---------------------------------------------------------------------------*/
+
+          }/* namespace Configuration */
+      } /* namespace Acyclic */
+  } /* namespace FAPI */

Added: fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationError.cpp
==============================================================================
--- (empty file)
+++ fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationError.cpp	Thu Jul 19 07:06:45 2007
@@ -0,0 +1,47 @@
+// $Id$
+
+
+#include "../interface/FAPIAConfigurationError.h"
+#include "../../interface/FAPIATrace.h"
+
+#if !defined (__ACE_INLINE__)
+#include "../interface/FAPIAConfigurationError.i"
+#endif
+
+namespace FAPI
+  {
+    namespace Acyclic
+      {
+
+/* ---------------------------------------------------------------------------*/
+
+        namespace Configuration
+          {
+            Error::Error (void)
+              {
+                FAPIA_TRACE;
+                open();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Error::Error (const Error& err)
+              {
+                FAPIA_TRACE;
+                open();
+                copy(err);
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Error::~Error (void)
+              {
+                FAPIA_TRACE;
+                close();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+      }/* namespace Configuration */
+    } /* namespace Acyclic */
+  } /* namespace FAPI */

Added: fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationInit.cpp
==============================================================================
--- (empty file)
+++ fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationInit.cpp	Thu Jul 19 07:06:45 2007
@@ -0,0 +1,48 @@
+// $Id$
+
+
+#include "../interface/FAPIAConfigurationInit.h"
+#include "../../interface/FAPIATrace.h"
+
+
+#if !defined (__ACE_INLINE__)
+#include "../interface/FAPIAConfigurationInit.i"
+#endif /* __ACE_INLINE__ */
+
+namespace FAPI
+  {
+    namespace Acyclic
+      {
+        namespace Configuration
+          {
+
+/* ---------------------------------------------------------------------------*/
+
+            Init::Init (void)
+              {
+                FAPIA_TRACE;
+                open();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Init::Init (const Init& init)
+              {
+                FAPIA_TRACE;
+                open();
+                copy(init);
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            Init::~Init (void)
+              {
+                FAPIA_TRACE;
+                close();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+      }/* namespace Configuration */
+    } /* namespace Acyclic */
+  } /* namespace FAPI */

Added: fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationLogicalPhysicalObject.cpp
==============================================================================
--- (empty file)
+++ fapia-trunk/FAPIAConfiguration/source/FAPIAConfigurationLogicalPhysicalObject.cpp	Thu Jul 19 07:06:45 2007
@@ -0,0 +1,48 @@
+// $Id$
+
+
+#include "../interface/FAPIAConfigurationLogicalPhysicalObject.h"
+#include "../../interface/FAPIATrace.h"
+
+#if !defined (__ACE_INLINE__)
+#include "../interface/FAPIAConfigurationLogicalPhysicalObject.i"
+#endif /* __ACE_INLINE__ */
+
+namespace FAPI
+  {
+    namespace Acyclic
+      {
+        namespace Configuration
+          {
+
+/* ---------------------------------------------------------------------------*/
+
+            LogicalPhysicalObject::LogicalPhysicalObject (void)
+              {
+                FAPIA_TRACE;
+                open();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            LogicalPhysicalObject::LogicalPhysicalObject 
+              (const LogicalPhysicalObject& lpo)
+              {
+                FAPIA_TRACE;
+                open();
+                copy(lpo);
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+            LogicalPhysicalObject::~LogicalPhysicalObject (void)
+              {
+                FAPIA_TRACE;
+                close();
+              }
+
+/* ---------------------------------------------------------------------------*/
+
+          }/* namespace Configuration */
+      } /* namespace Acyclic */
+  } /* namespace FAPI */


More information about the OSADL-svn-commits mailing list