otsdaq  v1_01_04
 All Classes Namespaces Functions
ConfigurationHandler.h
1 #ifndef _ots_ConfigurationHandler_h_
2 #define _ots_ConfigurationHandler_h_
3 
4 #include <string>
5 #include <xercesc/util/XMLChar.hpp>
6 #include <xercesc/dom/DOMDocument.hpp>
7 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationVersion.h"
8 
9 namespace ots
10 {
11 
12 class ConfigurationBase;
13 
15 {
16 public:
18  virtual ~ConfigurationHandler(void);
19  virtual void read (ConfigurationBase& configuration)
20  {
21  ;
22  }
23  virtual void write(const ConfigurationBase& configuration)
24  {
25  ;
26  }
27 
28  static void readXML (ConfigurationBase& configuration, ConfigurationVersion version);
29  static void readXML (ConfigurationBase* configuration, ConfigurationVersion version);
30  static std::string writeXML(const ConfigurationBase& configuration);//returns the file name
31  static std::string writeXML(const ConfigurationBase* configuration);//returns the file name
32 
33  //FIXME These are methods that should not exist as public but I don't know what to do until I know how to make the database interface
34  static std::string getXMLDir (const ConfigurationBase* configuration);
35 
36 private:
37  static void initPlatform (void);
38  static void terminatePlatform(void);
39  static bool validateNode (XMLCh* tagName, xercesc::DOMNode* node, const std::string& expectedValue);
40  static void outputXML (xercesc::DOMDocument* pmyDOMDocument, std::string filePath);
41  static std::string getXMLFileName (const ConfigurationBase& configuration, ConfigurationVersion version);
42 
43  static xercesc::DOMNode* getNode (XMLCh* tagName, xercesc::DOMNode* parent, unsigned int itemNumber);
44  static xercesc::DOMNode* getNode (XMLCh* tagName, xercesc::DOMElement* parent, unsigned int itemNumber);
45  static xercesc::DOMElement* getElement(XMLCh* tagName, xercesc::DOMNode* parent, unsigned int itemNumber);
46  static xercesc::DOMElement* getElement(XMLCh* tagName, xercesc::DOMElement* parent, unsigned int itemNumber);
47  static XMLCh* rootTag_;
48  static XMLCh* headerTag_;
49  static XMLCh* typeTag_;
50  static XMLCh* extensionTableNameTag_;
51  static XMLCh* nameTag_;
52  static XMLCh* runTag_;
53  static XMLCh* runTypeTag_;
54  static XMLCh* runNumberTag_;
55  static XMLCh* runBeginTimestampTag_;
56  static XMLCh* locationTag_;
57  static XMLCh* datasetTag_;
58  static XMLCh* versionTag_;
59  static XMLCh* commentDescriptionTag_;
60  static XMLCh* createdByUserTag_;
61  static XMLCh* partTag_;
62  static XMLCh* nameLabelTag_;
63  static XMLCh* kindOfPartTag_;
64  static XMLCh* dataTag_;
65 };
66 
67 }
68 
69 #endif //ots_ConfigurationHandler_h