00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef _INITIALIZE_DATASTORE_MANAGER_H_ 00004 #define _INITIALIZE_DATASTORE_MANAGER_H_ 00005 00006 #include <vector> 00007 #include <string> 00008 00009 #include <stdint.h> 00010 00011 namespace fesa 00012 { 00013 00014 class GlobalDeviceElement; 00015 class DeviceElement; 00016 class DomainStoreElement; 00017 class FieldElement; 00018 class ElementXML; 00019 class XMLParser; 00020 00026 class InitializeDataStoreManager 00027 { 00028 00029 public: 00030 00036 InitializeDataStoreManager(const std::string className); 00037 00042 ~InitializeDataStoreManager(); 00043 00047 GlobalDeviceElement& retrieveGlobalDeviceElement(); 00048 00052 const std::vector<DeviceElement*>& retrieveDeviceElements(); 00053 00057 const std::vector<DomainStoreElement*>& retrieveDomainStoreElements(); 00058 00062 int32_t getRollingManagerDepth(); 00063 00064 private: 00065 00066 static const int32_t ROLLING_DEFAULT_SIZE = 3; 00067 00071 void processDeviceFields(const std::vector<ElementXML*>& fields, DeviceElement* pDeviceElement); 00072 00077 void fillElement(const ElementXML* pField, FieldElement* pFieldElement); 00078 00082 void processDeviceRelationField(const ElementXML* pField, FieldElement* pFieldElement); 00083 00087 void processExtraMuxField(const ElementXML* pField, DeviceElement* pDeviceElement); 00088 00092 std::string getFieldValue(const ElementXML* pField); 00093 00097 std::string getAttributeValue(const ElementXML* element); 00098 00102 uint32_t getAttributeValueAsInt(const ElementXML* element); 00103 00107 XMLParser* parser_; 00108 00112 std::string className_; 00113 00117 GlobalDeviceElement* globalDeviceElement_; 00118 00122 std::vector<DeviceElement*> pDeviceElementCol_; 00123 00127 std::vector<DomainStoreElement*> pDomainStoreElementCol_; 00128 00129 }; 00130 00131 } // fesa 00132 00133 #endif // _INITIALIZE_DATASTORE_MANAGER_H_