diff options
Diffstat (limited to 'video_in_hal/nsframework/framework_unified/client/NS_XMLConfigeParser/library/src/ns_xmlparser.cpp')
-rwxr-xr-x | video_in_hal/nsframework/framework_unified/client/NS_XMLConfigeParser/library/src/ns_xmlparser.cpp | 354 |
1 files changed, 0 insertions, 354 deletions
diff --git a/video_in_hal/nsframework/framework_unified/client/NS_XMLConfigeParser/library/src/ns_xmlparser.cpp b/video_in_hal/nsframework/framework_unified/client/NS_XMLConfigeParser/library/src/ns_xmlparser.cpp deleted file mode 100755 index cb05865..0000000 --- a/video_in_hal/nsframework/framework_unified/client/NS_XMLConfigeParser/library/src/ns_xmlparser.cpp +++ /dev/null @@ -1,354 +0,0 @@ -/* - * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// \ingroup tag_NS_XmlParser -/// \brief This file contains implementation of CXmlParser class. -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Include Files -//////////////////////////////////////////////////////////////////////////////////////////////////// -#include <native_service/ns_xmlparser_if.h> -#include <fstream> -#include <string> -#include "ns_xmlconfig_parser_frameworkunifiedlog.h" - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// CXmlParser -/// Constructor -//////////////////////////////////////////////////////////////////////////////////////////////// -CXmlParser::CXmlParser(): m_pXmlDoc(NULL), m_cFileName(""), m_pRootNode(NULL) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - // for maintaining indentation - xmlKeepBlanksDefault(0); // LCOV_EXCL_BR_LINE 11: except branch - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// ~CXmlParser -/// Destructor -//////////////////////////////////////////////////////////////////////////////////////////////// -CXmlParser::~CXmlParser() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - // clears the document structure - ClearDocument(); // LCOV_EXCL_BR_LINE 11: except branch - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// ParseXml -/// Parses the xml file and creates a document structure -//////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CXmlParser::ParseXml(std::string f_cFileName) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - // clears the document structure - ClearDocument(); // LCOV_EXCL_BR_LINE 11: except branch - - m_cFileName = f_cFileName; - - if (IsReadable(m_cFileName)) { - // create document object structure - m_pXmlDoc = xmlParseFile(m_cFileName.c_str()); - - if (NULL != m_pXmlDoc) { - // sets the root node in class - m_pRootNode.SetXmlNodePtr(xmlDocGetRootElement(m_pXmlDoc)); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Document not parsed successfully :: %s", f_cFileName.c_str()); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - l_eStatus = eFrameworkunifiedStatusNullPointer; - } - } else { - l_eStatus = eFrameworkunifiedStatusInvldParam; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "File not exists :: %s", f_cFileName.c_str()); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// CreateNewXmlDoc -/// Creates a new xml document with f_cRootNodeName as root node -//////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CXmlParser::CreateNewXmlDoc(std::string f_cRootNodeName) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - xmlNodePtr l_pRootNodePtr = NULL; - - // clears the document structure - ClearDocument(); - - if (0 < f_cRootNodeName.length()) { - // creates new document structure - m_pXmlDoc = xmlNewDoc((const xmlChar *)"1.0"); - if (NULL != m_pXmlDoc) { - // create new node(root) - l_pRootNodePtr = xmlNewNode(NULL, - (const xmlChar *)f_cRootNodeName.c_str()); - if (NULL != l_pRootNodePtr) { - // sets the root node in document structure - xmlDocSetRootElement(m_pXmlDoc, l_pRootNodePtr); - - // sets the root node in class - m_pRootNode.SetXmlNodePtr(l_pRootNodePtr); - } else { - l_eStatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Error creating new root node"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - } else { - l_eStatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Unable to create new xml document structure"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - } else { - l_eStatus = eFrameworkunifiedStatusInvldParam; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Invalid root node name :: %s", f_cRootNodeName.c_str()); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// SaveXml -/// Saves the document structure in an xml file -//////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CXmlParser::SaveXml(std::string f_cFileName) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - std::string l_cFileName = ""; - - // if user explicitly provides file name - if (0 < f_cFileName.length()) { - l_cFileName.assign(f_cFileName); - } else { // takes the file name from the CXmlParser object - l_cFileName.assign(m_cFileName); - } - - if (NULL != m_pXmlDoc) { - if (IsReadable(l_cFileName)) { - // save the doc structure to the file - if (-1 == xmlSaveFormatFileEnc(l_cFileName.c_str(), m_pXmlDoc, "UTF-8", 1)) { - l_eStatus = eFrameworkunifiedStatusFail; - } - } else { - l_eStatus = eFrameworkunifiedStatusInvldParam; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "File not exists :: %s", f_cFileName.c_str()); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - } else { - l_eStatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "m_pXmlDoc is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// GetRootNode -/// Gets the root node object of xml -//////////////////////////////////////////////////////////////////////////////////////////////// -CXmlNode CXmlParser::GetRootNode() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return m_pRootNode; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// AddNewNode -/// Adds the new node to the parent node -//////////////////////////////////////////////////////////////////////////////////////////////// -CXmlNode CXmlParser::AddNewNode(CXmlNode m_pParentNode, std::string f_cNewNodeName, std::string f_cContent) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CXmlNode l_pXmlNode; - - if (!m_pParentNode.IsNull()) { - l_pXmlNode = m_pParentNode.AddChildNode(f_cNewNodeName, f_cContent); // LCOV_EXCL_BR_LINE 11: except branch - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_pXmlNode; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// RemoveNode -/// Removes the node from the xml -//////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CXmlParser::RemoveNode(CXmlNode m_pNode) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - if (!m_pNode.IsNull()) { - xmlUnlinkNode(m_pNode.m_pXmlNodePtr); - xmlFreeNode(m_pNode.m_pXmlNodePtr); - } else { - l_eStatus = eFrameworkunifiedStatusNullPointer; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// FindNode -/// Finds the first matching node, by tag name or path -//////////////////////////////////////////////////////////////////////////////////////////////// -CXmlNode CXmlParser::FindNode(std::string f_cNodePath, CXmlNode f_pCurrentNode) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CXmlNode l_pXmlNode; - - xmlXPathObjectPtr l_pXpathObj = GetNodeSet(f_cNodePath, f_pCurrentNode); // LCOV_EXCL_BR_LINE 11: except branch - - if (NULL != l_pXpathObj) { - if (NULL != l_pXpathObj->nodesetval && 0 < l_pXpathObj->nodesetval->nodeNr) { - l_pXmlNode.SetXmlNodePtr(l_pXpathObj->nodesetval->nodeTab[0]); // LCOV_EXCL_BR_LINE 11: except branch - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "NodeSetVal is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - xmlXPathFreeObject(l_pXpathObj); // LCOV_EXCL_BR_LINE 11: except branch - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "xmlXPathObjectPtr is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_pXmlNode; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// FindAllNodes -/// Finds all the matching node, by tag name or path -//////////////////////////////////////////////////////////////////////////////////////////////// -TNodeList CXmlParser::FindAllNodes(std::string f_cNodePath, CXmlNode f_pCurrentNode) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - TNodeList l_pNodeList; - - xmlXPathObjectPtr l_pXpathObj = GetNodeSet(f_cNodePath, f_pCurrentNode); // LCOV_EXCL_BR_LINE 11: except branch - - if (NULL != l_pXpathObj) { - if (NULL != l_pXpathObj->nodesetval && 0 < l_pXpathObj->nodesetval->nodeNr) { - for (UI_8 l_uiSize = 0; - l_uiSize < l_pXpathObj->nodesetval->nodeNr; - l_uiSize++) { - if (NULL != l_pXpathObj->nodesetval->nodeTab[l_uiSize]) { - CXmlNode l_pNode(l_pXpathObj->nodesetval->nodeTab[l_uiSize]); // LCOV_EXCL_BR_LINE 11: except branch - l_pNodeList.push_back(l_pNode); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "node pointer is NULL"); - } - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "NodeSetVal is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - xmlXPathFreeObject(l_pXpathObj); // LCOV_EXCL_BR_LINE 11: except branch - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "xmlXPathObjectPtr is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_pNodeList; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// GetNodeSet -/// Gets the node set resulting from search of nodepath using XPath -//////////////////////////////////////////////////////////////////////////////////////////////// -xmlXPathObjectPtr CXmlParser::GetNodeSet(std::string f_cNodePath, CXmlNode f_pCurrentNode) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - xmlXPathObjectPtr l_pXpathObj = NULL; - - xmlXPathContextPtr l_pXpathCtx = NULL; - CXmlNode l_pXmlNode; - - if (NULL != m_pXmlDoc) { - if (!f_pCurrentNode.IsNull()) { - l_pXmlNode = f_pCurrentNode; - } - - // Create xpath evaluation context - l_pXpathCtx = xmlXPathNewContext(m_pXmlDoc); // LCOV_EXCL_BR_LINE 11: except branch - - if (NULL != l_pXpathCtx) { - // set the current node in path context - l_pXpathCtx->node = l_pXmlNode.m_pXmlNodePtr; - - // Evaluate xpath expression - l_pXpathObj = xmlXPathEvalExpression((const xmlChar *)f_cNodePath.c_str(), l_pXpathCtx); // LCOV_EXCL_BR_LINE 11: except branch - - if (NULL == l_pXpathObj) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to evaluate nodepath :: \"%s\"", f_cNodePath.c_str()); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - // Cleanup of XPath data - xmlXPathFreeContext(l_pXpathCtx); // LCOV_EXCL_BR_LINE 11: except branch - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to create new XPath context"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "document object is NULL"); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_pXpathObj; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// ClearDocument -/// Clears the document structure and resets the root node -//////////////////////////////////////////////////////////////////////////////////////////////// -VOID CXmlParser::ClearDocument() { - if (NULL != m_pXmlDoc) { - // free the document - xmlFreeDoc(m_pXmlDoc); - m_pXmlDoc = NULL; - - // free the global variables that may have been allocated by the parser - xmlCleanupParser(); - } - - m_pRootNode = NULL; - m_cFileName.clear(); -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// IsReadable -/// Checks whether the file exists or not -//////////////////////////////////////////////////////////////////////////////////////////////// -BOOL CXmlParser::IsReadable(const std::string &filename) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - BOOL l_bReadable = FALSE; - - std::ifstream l_ifstream(filename.c_str()); - - if (l_ifstream.good()) { - l_bReadable = TRUE; - l_ifstream.close(); // LCOV_EXCL_BR_LINE 11: except branch - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_bReadable; -} |