00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef _STORE_MANAGER_H_ 00004 #define _STORE_MANAGER_H_ 00005 00006 #include <vector> 00007 #include <string> 00008 00009 namespace fesa 00010 { 00011 00012 class GlobalDevice; 00013 class AbstractDevice; 00014 class DomainStore; 00015 class PersistencyUnit; 00016 class XMLParser; 00017 class AbstractField; 00018 class DeviceElement; 00019 class GlobalDeviceElement; 00020 class DomainStoreElement; 00021 class DataStoreElement; 00022 class ElementXML; 00023 00029 class StoreManager 00030 { 00031 public: 00032 00036 StoreManager(); 00037 00041 ~StoreManager(); 00042 00051 void restore(GlobalDevice& globalDevice, std::vector<AbstractDevice*>& deviceCol, 00052 std::vector<DomainStore*>& domainStoreCol, const std::string& className); 00053 00059 void store(PersistencyUnit& pu); 00060 00061 private: 00062 00068 void storeFields(XMLParser& parser, const std::vector<AbstractField*>& fields, std::string dataStore); 00069 00073 GlobalDeviceElement* retrieveGlobalDeviceElement(XMLParser& parser); 00074 00078 std::vector<DeviceElement*>* retrieveDeviceElements(XMLParser& parser); 00079 00083 std::vector<DomainStoreElement*>* retrieveDomainStoreElements(XMLParser& parser); 00084 00085 void fillElements(ElementXML* dataStoreXML, DataStoreElement* dataStoreElement); 00086 00087 static const std::string GLOBAL_DEVICE_TAG; 00088 static const std::string DEVICE_INSTANCE_TAG; 00089 static const std::string DOMAIN_STORE_TAG; 00090 }; 00091 00092 } // fesa 00093 00094 #endif // _STORE_MANAGER_H_