00001 #ifndef _ots_ConfigurationManagerRW_h_
00002 #define _ots_ConfigurationManagerRW_h_
00003
00004
00005
00006
00007 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
00008
00009
00010
00011
00012
00013 namespace ots {
00014
00015
00016 struct ConfigurationInfo {
00017 ConfigurationInfo() :
00018 configurationPtr_(0)
00019 {}
00020
00021 std::set<ConfigurationVersion> versions_;
00022 ConfigurationBase* configurationPtr_;
00023 };
00024
00025
00026 #define Q(X) #X
00027 #define QUOTE(X) Q(X)
00028 #define __GETCFG_RW__(X) getConfigurationRW<X>(QUOTE(X))
00029
00030
00031
00032
00033
00034
00035 class ConfigurationManagerRW : public ConfigurationManager
00036 {
00037 public:
00038
00039 ConfigurationManagerRW (std::string username);
00040
00041
00042
00043 const std::string& getUsername (void) const { return username_; }
00044 ConfigurationInterface* getConfigurationInterface (void) const { return theInterface_; }
00045
00046 const std::map<std::string, ConfigurationInfo>& getAllConfigurationInfo (bool refresh=false, std::string *accumulatedErrors=0, const std::string &errorFilterName="");
00047
00048 std::map<std::string,std::map<std::string,ConfigurationVersion> > getActiveVersionAliases (void) const;
00049
00050 template<class T>
00051 T* getConfigurationRW(std::string name)
00052 {
00053 return (T*)getConfigurationByName(name);
00054 }
00055 ConfigurationBase* getVersionedConfigurationByName (const std::string &configurationName, ConfigurationVersion version, bool looseColumnMatching=false);
00056 ConfigurationBase* getConfigurationByName (const std::string &configurationName);
00057 ConfigurationGroupKey findConfigurationGroup (const std::string &groupName, const std::map<std::string, ConfigurationVersion> &groupMembers);
00058
00059
00060
00061
00062 ConfigurationVersion saveNewConfiguration (const std::string &configurationName, ConfigurationVersion temporaryVersion = ConfigurationVersion(), bool makeTemporary = false);
00063 ConfigurationVersion copyViewToCurrentColumns (const std::string &configurationName, ConfigurationVersion sourceVersion);
00064 void eraseTemporaryVersion (const std::string &configurationName, ConfigurationVersion targetVersion = ConfigurationVersion());
00065 void clearCachedVersions (const std::string &configurationName);
00066 void clearAllCachedVersions ();
00067
00068
00069
00070
00071 void activateConfigurationGroup (const std::string &configGroupName, ConfigurationGroupKey configGroupKey, std::string *accumulatedTreeErrors=0);
00072
00073 ConfigurationVersion createTemporaryBackboneView (ConfigurationVersion sourceViewVersion = ConfigurationVersion());
00074 ConfigurationVersion saveNewBackbone (ConfigurationVersion temporaryVersion = ConfigurationVersion());
00075
00076
00077
00078
00079
00080 ConfigurationGroupKey saveNewConfigurationGroup (const std::string &groupName, std::map<std::string, ConfigurationVersion> &groupMembers, ConfigurationGroupKey previousVersion=ConfigurationGroupKey(), const std::string &groupComment = ViewColumnInfo::DATATYPE_COMMENT_DEFAULT);
00081
00082 void testXDAQContext();
00083
00084 private:
00085
00086
00087 std::map<std::string, ConfigurationInfo> allConfigurationInfo_;
00088
00089 };
00090 }
00091
00092 #endif