otsdaq  v1_01_03
 All Classes Namespaces Functions
ConfigurationManagerRW.h
1 #ifndef _ots_ConfigurationManagerRW_h_
2 #define _ots_ConfigurationManagerRW_h_
3 
4 //#include <string>
5 //#include <map>
6 //#include <set>
7 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
8 
9 //Configuration Types
10 
11 //#include <memory>
12 
13 namespace ots {
14 
15 
17  ConfigurationInfo() : //constructor
18  configurationPtr_(0)
19  {}
20 
21  std::set<ConfigurationVersion> versions_;
22  ConfigurationBase* configurationPtr_;
23 };
24 
25 
26 #define Q(X) #X
27 #define QUOTE(X) Q(X)
28 #define __GETCFG_RW__(X) getConfigurationRW<X>(QUOTE(X))
29 
30 //==============================================================================
31 //ConfigurationManagerRW
32 // This is the ConfigurationManger with write access
33 // This class inherits all public function from ConfigurationManager
34 // and is a "Friend" class of ConfigurationManager so has access to private members.
36 {
37 public:
38 
39  ConfigurationManagerRW (std::string username);
40 
41  //==============================================================================
42  //Getters
43  const std::string& getUsername (void) const { return username_; }
44  ConfigurationInterface* getConfigurationInterface (void) const { return theInterface_; }
45 
46  const std::map<std::string, ConfigurationInfo>& getAllConfigurationInfo (bool refresh=false, std::string *accumulatedErrors=0, const std::string &errorFilterName="");
47  /* map < configName, map < aliasName, version > > */
48  std::map<std::string,std::map<std::string,ConfigurationVersion> > getActiveVersionAliases (void) const;
49 
50  template<class T>
51  T* getConfigurationRW(std::string name)
52  {
53  return (T*)getConfigurationByName(name);
54  }
55  ConfigurationBase* getVersionedConfigurationByName (const std::string &configurationName, ConfigurationVersion version, bool looseColumnMatching=false);
56  ConfigurationBase* getConfigurationByName (const std::string &configurationName);
57  ConfigurationGroupKey findConfigurationGroup (const std::string &groupName, const std::map<std::string, ConfigurationVersion> &groupMembers);
58 
59  //==============================================================================
60  //modifiers of generic ConfigurationBase
61 
62  ConfigurationVersion saveNewConfiguration (const std::string &configurationName, ConfigurationVersion temporaryVersion = ConfigurationVersion(), bool makeTemporary = false);
63  ConfigurationVersion copyViewToCurrentColumns (const std::string &configurationName, ConfigurationVersion sourceVersion);
64  void eraseTemporaryVersion (const std::string &configurationName, ConfigurationVersion targetVersion = ConfigurationVersion());
65  void clearCachedVersions (const std::string &configurationName);
66  void clearAllCachedVersions ();
67 
68  //==============================================================================
69  //modifiers of configuration groups
70 
71  void activateConfigurationGroup (const std::string &configGroupName, ConfigurationGroupKey configGroupKey, std::string *accumulatedTreeErrors=0);
72 
73  ConfigurationVersion createTemporaryBackboneView (ConfigurationVersion sourceViewVersion = ConfigurationVersion()); //-1, from MockUp, else from valid backbone view version
74  ConfigurationVersion saveNewBackbone (ConfigurationVersion temporaryVersion = ConfigurationVersion());
75 
76 
77 
78  //==============================================================================
79  //modifiers of a configuration group based on alias, e.g. "Physics"
80  ConfigurationGroupKey saveNewConfigurationGroup (const std::string &groupName, std::map<std::string, ConfigurationVersion> &groupMembers, ConfigurationGroupKey previousVersion=ConfigurationGroupKey(), const std::string &groupComment = ViewColumnInfo::DATATYPE_COMMENT_DEFAULT);
81 
82  void testXDAQContext(); //for debugging
83 
84 private:
85  //==============================================================================
86  //private members
87  std::map<std::string, ConfigurationInfo> allConfigurationInfo_;
88 
89 };
90 }
91 
92 #endif