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_CONFIGURATION;
43 void init (std::string *accumulatedErrors = 0);
45 void destroyConfigurationGroup (
const std::string &theGroup =
"",
bool onlyDeactivate =
false);
51 const T* getConfiguration(std::string name)
52 {
return (T*) (getConfigurationByName(name));}
61 void dumpActiveConfiguration (
const std::string &filePath,
const std::string &dumpType)
const;
64 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);
65 void loadMemberMap (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
67 void restoreActiveConfigurationGroups(
bool throwErrors=
false);
68 int getTypeOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
69 const std::string& getTypeNameOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
70 const std::string& convertGroupTypeIdToName (
int groupTypeId);
74 const ConfigurationBase* getConfigurationByName (
const std::string &configurationName)
const;
77 std::map<std::string, std::pair<std::string, ConfigurationGroupKey>> getActiveConfigurationGroups (
void)
const;
79 ConfigurationTree getNode (
const std::string &nodeString,
bool doNotThrowOnBrokenUIDLinks=
false)
const;
80 ConfigurationTree getSupervisorConfigurationNode(
const std::string &contextUID,
const std::string &applicationUID)
const;
82 std::vector<std::pair<std::string,ConfigurationTree> > getChildren (std::map<std::string, ConfigurationVersion> *memberMap = 0, std::string *accumulatedTreeErrors = 0)
const;
83 std::string getFirstPathToNode (
const ConfigurationTree &node,
const std::string &startPath =
"/")
const;
87 std::map<std::string, std::pair<std::string, ConfigurationGroupKey> > getGroupAliasesConfiguration (
void);
89 std::pair<std::string, ConfigurationGroupKey> getConfigurationGroupFromAlias(std::string runType,
ProgressBar* progressBar=0);
91 std::map<std::string, ConfigurationVersion> getActiveVersions (
void)
const;
93 const std::set<std::string>& getContextMemberNames (
void)
const {
return contextMemberNames_;}
94 const std::set<std::string>& getBackboneMemberNames (
void)
const {
return backboneMemberNames_;}
96 static std::string encodeURIComponent(
const std::string &sourceStr);
105 std::string username_;
107 std::shared_ptr<ConfigurationGroupKey> theConfigurationGroupKey_, theContextGroupKey_, theBackboneGroupKey_;
108 std::string theConfigurationGroup_, theContextGroup_, theBackboneGroup_;
110 std::map<std::string, ConfigurationBase* > nameToConfigurationMap_;
112 const std::set<std::string> contextMemberNames_;
113 const std::set<std::string> backboneMemberNames_;