[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