00001 #ifndef _ots_ConfigurationHandler_h_
00002 #define _ots_ConfigurationHandler_h_
00003
00004 #include <string>
00005 #include <xercesc/util/XMLChar.hpp>
00006 #include <xercesc/dom/DOMDocument.hpp>
00007 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationVersion.h"
00008
00009 namespace ots
00010 {
00011
00012 class ConfigurationBase;
00013
00014 class ConfigurationHandler
00015 {
00016 public:
00017 ConfigurationHandler(void);
00018 virtual ~ConfigurationHandler(void);
00019 virtual void read (ConfigurationBase& configuration)
00020 {
00021 ;
00022 }
00023 virtual void write(const ConfigurationBase& configuration)
00024 {
00025 ;
00026 }
00027
00028 static void readXML (ConfigurationBase& configuration, ConfigurationVersion version);
00029 static void readXML (ConfigurationBase* configuration, ConfigurationVersion version);
00030 static std::string writeXML(const ConfigurationBase& configuration);
00031 static std::string writeXML(const ConfigurationBase* configuration);
00032
00033
00034 static std::string getXMLDir (const ConfigurationBase* configuration);
00035
00036 private:
00037 static void initPlatform (void);
00038 static void terminatePlatform(void);
00039 static bool validateNode (XMLCh* tagName, xercesc::DOMNode* node, const std::string& expectedValue);
00040 static void outputXML (xercesc::DOMDocument* pmyDOMDocument, std::string filePath);
00041 static std::string getXMLFileName (const ConfigurationBase& configuration, ConfigurationVersion version);
00042
00043 static xercesc::DOMNode* getNode (XMLCh* tagName, xercesc::DOMNode* parent, unsigned int itemNumber);
00044 static xercesc::DOMNode* getNode (XMLCh* tagName, xercesc::DOMElement* parent, unsigned int itemNumber);
00045 static xercesc::DOMElement* getElement(XMLCh* tagName, xercesc::DOMNode* parent, unsigned int itemNumber);
00046 static xercesc::DOMElement* getElement(XMLCh* tagName, xercesc::DOMElement* parent, unsigned int itemNumber);
00047 static XMLCh* rootTag_;
00048 static XMLCh* headerTag_;
00049 static XMLCh* typeTag_;
00050 static XMLCh* extensionTableNameTag_;
00051 static XMLCh* nameTag_;
00052 static XMLCh* runTag_;
00053 static XMLCh* runTypeTag_;
00054 static XMLCh* runNumberTag_;
00055 static XMLCh* runBeginTimestampTag_;
00056 static XMLCh* locationTag_;
00057 static XMLCh* datasetTag_;
00058 static XMLCh* versionTag_;
00059 static XMLCh* commentDescriptionTag_;
00060 static XMLCh* createdByUserTag_;
00061 static XMLCh* partTag_;
00062 static XMLCh* nameLabelTag_;
00063 static XMLCh* kindOfPartTag_;
00064 static XMLCh* dataTag_;
00065 };
00066
00067 }
00068
00069 #endif //ots_ConfigurationHandler_h