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))
26 static const std::string READONLY_USER;
27 static const std::string ACTIVE_GROUP_FILENAME;
28 static const std::string ALIAS_VERSION_PREAMBLE;
29 static const std::string SCRATCH_VERSION_ALIAS;
30 static const std::string XDAQ_CONTEXT_CONFIG_NAME;
32 static const std::string ACTIVE_GROUP_NAME_CONTEXT;
33 static const std::string ACTIVE_GROUP_NAME_BACKBONE;
34 static const std::string ACTIVE_GROUP_NAME_ITERATE;
35 static const std::string ACTIVE_GROUP_NAME_CONFIGURATION;
37 static const std::set<std::string> contextMemberNames_;
38 static const std::set<std::string> backboneMemberNames_;
39 static const std::set<std::string> iterateMemberNames_;
41 static const std::set<std::string>& getContextMemberNames (
void);
42 static const std::set<std::string>& getBackboneMemberNames (
void);
43 static const std::set<std::string>& getIterateMemberNames (
void);
45 static std::string encodeURIComponent (
const std::string &sourceStr);
46 static const std::string& convertGroupTypeIdToName (
int groupTypeId);
47 static int getTypeOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
48 static const std::string& getTypeNameOfGroup (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
63 void init (std::string *accumulatedErrors = 0);
65 void destroyConfigurationGroup (
const std::string &theGroup =
"",
bool onlyDeactivate =
false);
72 void loadConfigurationGroup (
const std::string &configGroupName,
ConfigurationGroupKey configGroupKey,
bool doActivate=
false, std::map<std::string, ConfigurationVersion> *groupMembers = 0,
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);
73 void loadMemberMap (
const std::map<std::string /*name*/, ConfigurationVersion /*version*/> &memberMap);
80 const T* getConfiguration(std::string name)
const
81 {
return (T*) (getConfigurationByName(name));}
83 const ConfigurationBase* getConfigurationByName (
const std::string &configurationName)
const;
85 void dumpActiveConfiguration (
const std::string &filePath,
const std::string &dumpType)
const;
88 std::map<std::string, std::pair<std::string, ConfigurationGroupKey>> getActiveConfigurationGroups (
void)
const;
89 const std::string& getActiveGroupName (
const std::string& type =
"")
const;
92 ConfigurationTree getNode (
const std::string &nodeString,
bool doNotThrowOnBrokenUIDLinks=
false)
const;
93 ConfigurationTree getContextNode (
const std::string &contextUID,
const std::string &applicationUID)
const;
94 ConfigurationTree getSupervisorNode (
const std::string &contextUID,
const std::string &applicationUID)
const;
95 ConfigurationTree getSupervisorConfigurationNode(
const std::string &contextUID,
const std::string &applicationUID)
const;
100 std::vector<std::pair<std::string,ConfigurationTree> > getChildren (std::map<std::string, ConfigurationVersion> *memberMap = 0, std::string *accumulatedTreeErrors = 0)
const;
101 std::string getFirstPathToNode (
const ConfigurationTree &node,
const std::string &startPath =
"/")
const;
105 std::map<std::string, std::pair<std::string, ConfigurationGroupKey> > getGroupAliasesConfiguration (
void);
107 std::pair<std::string, ConfigurationGroupKey> getConfigurationGroupFromAlias(std::string systemAlias,
ProgressBar* progressBar=0);
109 std::map<std::string, ConfigurationVersion> getActiveVersions (
void)
const;
114 void restoreActiveConfigurationGroups(
bool throwErrors=
false);
120 std::string username_;
122 std::shared_ptr<ConfigurationGroupKey> theConfigurationGroupKey_, theContextGroupKey_, theBackboneGroupKey_, theIterateGroupKey_;
123 std::string theConfigurationGroup_, theContextGroup_, theBackboneGroup_, theIterateGroup_;
125 std::map<std::string, ConfigurationBase* > nameToConfigurationMap_;