1 #ifndef _ots_ConfigurationManager_h_
2 #define _ots_ConfigurationManager_h_
7 #include "otsdaq-core/ConfigurationInterface/ConfigurationInterface.h"
8 #include "otsdaq-core/ConfigurationInterface/ConfigurationTree.h"
9 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationVersion.h"
15 #define __GET_CONFIG__(X) getConfiguration<X>(QUOTE(X))
24 static const std::string READONLY_USER;
25 static const std::string ACTIVE_GROUP_FILENAME;
26 static const std::string ALIAS_VERSION_PREAMBLE;
27 static const std::string SCRATCH_VERSION_ALIAS;
28 static const std::string XDAQ_CONTEXT_CONFIG_NAME;
30 static const std::string ACTIVE_GROUP_NAME_CONTEXT;
31 static const std::string ACTIVE_GROUP_NAME_BACKBONE;
32 static const std::string ACTIVE_GROUP_NAME_ITERATE;
33 static const std::string ACTIVE_GROUP_NAME_CONFIGURATION;
45 void init (std::string *accumulatedErrors = 0);
47 void destroyConfigurationGroup (
const std::string &theGroup =
"",
bool onlyDeactivate =
false);
53 const T* getConfiguration(std::string name)
54 {
return (T*) (getConfigurationByName(name));}
63 void dumpActiveConfiguration (
const std::string &filePath,
const std::string &dumpType)
const;
66 std::map<std::string, ConfigurationVersion > loadConfigurationGroup (
const std::string &configGroupName,
ConfigurationGroupKey configGroupKey,
bool doActivate=
false,
ProgressBar* progressBar=0, std::string *accumulateWarnings=0, std::string *groupComment=0, std::string *groupAuthor=0, std::string *groupCreateTime=0,
bool doNotLoadMember=
false, std::string *groupTypeString=0);
67 void loadMemberMap (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
69 void restoreActiveConfigurationGroups(
bool throwErrors=
false);
70 int getTypeOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
71 const std::string& getTypeNameOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
72 const std::string& convertGroupTypeIdToName (
int groupTypeId);
76 const ConfigurationBase* getConfigurationByName (
const std::string &configurationName)
const;
79 std::map<std::string, std::pair<std::string, ConfigurationGroupKey>> getActiveConfigurationGroups (
void)
const;
80 const std::string& getActiveGroupName (
const std::string& type =
"")
const;
83 ConfigurationTree getNode (
const std::string &nodeString,
bool doNotThrowOnBrokenUIDLinks=
false)
const;
84 ConfigurationTree getSupervisorConfigurationNode(
const std::string &contextUID,
const std::string &applicationUID)
const;
86 std::vector<std::pair<std::string,ConfigurationTree> > getChildren (std::map<std::string, ConfigurationVersion> *memberMap = 0, std::string *accumulatedTreeErrors = 0)
const;
87 std::string getFirstPathToNode (
const ConfigurationTree &node,
const std::string &startPath =
"/")
const;
91 std::map<std::string, std::pair<std::string, ConfigurationGroupKey> > getGroupAliasesConfiguration (
void);
93 std::pair<std::string, ConfigurationGroupKey> getConfigurationGroupFromAlias(std::string systemAlias,
ProgressBar* progressBar=0);
95 std::map<std::string, ConfigurationVersion> getActiveVersions (
void)
const;
97 const std::set<std::string>& getContextMemberNames (
void)
const {
return contextMemberNames_;}
98 const std::set<std::string>& getBackboneMemberNames (
void)
const {
return backboneMemberNames_;}
99 const std::set<std::string>& getIterateMemberNames (
void)
const {
return iterateMemberNames_;}
101 static std::string encodeURIComponent(
const std::string &sourceStr);
110 std::string username_;
112 std::shared_ptr<ConfigurationGroupKey> theConfigurationGroupKey_, theContextGroupKey_, theBackboneGroupKey_, theIterateGroupKey_;
113 std::string theConfigurationGroup_, theContextGroup_, theBackboneGroup_, theIterateGroup_;
115 std::map<std::string, ConfigurationBase* > nameToConfigurationMap_;
117 const std::set<std::string> contextMemberNames_;
118 const std::set<std::string> backboneMemberNames_;
119 const std::set<std::string> iterateMemberNames_;