hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SphinxDataSourceParameters.cpp
Go to the documentation of this file.
1 #include <Poco/DOM/DOMParser.h>
2 #include <Poco/DOM/DOMWriter.h>
3 
4 #include <Poco/DOM/NodeIterator.h>
5 #include <Poco/DOM/NodeFilter.h>
6 #include <Poco/DOM/AutoPtr.h>
7 #include <Poco/DOM/NamedNodeMap.h>
8 #include <Poco/XML/XMLWriter.h>
9 #include <Poco/SAX/InputSource.h>
10 #include <Poco/DOM/Node.h>
11 #include <Poco/DOM/Document.h>
12 
13 #include <Poco/SharedPtr.h>
14 #include <Poco/AutoPtr.h>
15 
16 #include <fstream>
17 #include <sstream>
18 
19 #include "SphinxDataSource.hpp"
21 #include "SphinxMessageConst.hpp"
22 
23 namespace HCE
24 {
25 namespace sphinx
26 {
27 //-----------------------------------------------------------------------------
29 :Map(), errorMsg(""), _IsError(false)
30 {
31 }
32 //-----------------------------------------------------------------------------
34 :Map(), errorMsg(""), _IsError(false)
35 {
36  load(is);
37 }
38 //-----------------------------------------------------------------------------
39 bool SphinxDataSourceParameters::load(std::istream& is)
40 {
41  errorMsg.clear();
42  Map.clear();
43  try
44  {
45  Poco::XML::InputSource sourceDoc(is);
46  Poco::XML::DOMParser parser;
47  Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&sourceDoc);
48  Poco::XML::NodeIterator it_doc(pDoc, Poco::XML::NodeFilter::SHOW_ALL);
49  Poco::XML::Node* pNode = it_doc.nextNode();
50 
51  while (pNode)
52  {
53  if (pNode->nodeName() == sphinx_data_source_const::hceDocsTag)
54  {
55  Poco::AutoPtr<Poco::XML::NamedNodeMap> pMap = pNode->attributes();
56  if (!pMap.isNull())
57  {
58  for (size_t i=0;i<pMap->length();++i)
59  {
60  try
61  {
62  Map.insert(PARAM_ATTR__MAP::value_type(pMap->item(i)->nodeName(), std::stoull(pMap->item(i)->nodeValue())));
63  }
64  catch(std::exception& exc)
65  {
66  throw Poco::Exception(message_const::attribute+message_const::space+pMap->item(i)->nodeName()+
68  }
69  }
70  }
71  }
72  pNode = it_doc.nextNode();
73  }
74  _IsError = false;
75  }
76  catch(Poco::Exception& e)
77  {
78  errorMsg = e.displayText();
79  _IsError = true;
80  }
81  return !_IsError;
82 }
83 //-----------------------------------------------------------------------------
85 {
87 }
88 //-----------------------------------------------------------------------------
89 // cppcheck-suppress unusedFunction
91 {
93 }
94 //-----------------------------------------------------------------------------
95 //-----------------------------------------------------------------------------
96 } // namespace sphinx
97 } // namespace HCE