1 #ifndef _ots_ConfigurationManager_h_
2 #define _ots_ConfigurationManager_h_
8 #include "otsdaq-core/ConfigurationInterface/ConfigurationInterface.h"
9 #include "otsdaq-core/ConfigurationInterface/ConfigurationTree.h"
10 #include "otsdaq-core/TableCore/TableVersion.h"
16 #define __GET_CONFIG__(X) getTable<X>(QUOTE(X))
27 static const std::string READONLY_USER;
28 static const std::string ACTIVE_GROUPS_FILENAME;
29 static const std::string ALIAS_VERSION_PREAMBLE;
30 static const std::string SCRATCH_VERSION_ALIAS;
32 static const std::string XDAQ_CONTEXT_TABLE_NAME;
33 static const std::string XDAQ_APPLICATION_TABLE_NAME;
34 static const std::string GROUP_ALIASES_TABLE_NAME;
35 static const std::string VERSION_ALIASES_TABLE_NAME;
37 static const std::string ACTIVE_GROUP_NAME_CONTEXT;
38 static const std::string ACTIVE_GROUP_NAME_BACKBONE;
39 static const std::string ACTIVE_GROUP_NAME_ITERATE;
40 static const std::string ACTIVE_GROUP_NAME_CONFIGURATION;
41 static const std::string ACTIVE_GROUP_NAME_UNKNOWN;
43 static const uint8_t METADATA_COL_ALIASES;
44 static const uint8_t METADATA_COL_COMMENT;
45 static const uint8_t METADATA_COL_AUTHOR;
46 static const uint8_t METADATA_COL_TIMESTAMP;
48 static const std::set<std::string> contextMemberNames_;
49 static const std::set<std::string> backboneMemberNames_;
50 static const std::set<std::string> iterateMemberNames_;
52 static const std::set<std::string>& getContextMemberNames(
void);
53 static const std::set<std::string>& getBackboneMemberNames(
void);
54 static const std::set<std::string>& getIterateMemberNames(
void);
56 static std::string encodeURIComponent(
const std::string& sourceStr);
57 static const std::string& convertGroupTypeIdToName(
int groupTypeId);
58 static int getTypeOfGroup(
59 const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap);
60 static const std::string& getTypeNameOfGroup(
61 const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap);
77 void init(std::string* accumulatedErrors = 0);
79 void destroyTableGroup(
const std::string& theGroup =
"",
bool onlyDeactivate =
false);
85 const std::string& configGroupName,
87 bool doActivate =
false,
88 std::map<std::string, TableVersion>* groupMembers = 0,
90 std::string* accumulateWarnings = 0,
91 std::string* groupComment = 0,
92 std::string* groupAuthor = 0,
93 std::string* groupCreateTime = 0,
94 bool doNotLoadMember =
false,
95 std::string* groupTypeString = 0,
96 std::map<std::string /*name*/, std::string /*alias*/>* groupAliases = 0);
98 const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap);
105 const T* getTable(std::string name)
const
107 return (T*)(getTableByName(name));
110 const TableBase* getTableByName(
const std::string& configurationName)
const;
112 void dumpActiveConfiguration(
const std::string& filePath,
113 const std::string& dumpType);
115 std::map<std::string ,
117 getActiveGroupAliases(
void);
120 std::map<std::string , std::map<std::string ,
TableVersion>>
121 getVersionAliases(
void)
const;
123 std::pair<std::string ,
TableGroupKey> getTableGroupFromAlias(
124 std::string systemAlias,
ProgressBar* progressBar = 0);
125 std::map<std::string ,
127 getActiveTableGroups(
void)
const;
128 const std::map<std::string ,
130 getFailedTableGroups(
void)
const
132 return lastFailedGroupLoad_;
134 const std::string& getActiveGroupName(
const std::string& type =
"")
const;
135 TableGroupKey getActiveGroupKey(
const std::string& type =
"")
const;
138 const std::string& nodeString,
139 bool doNotThrowOnBrokenUIDLinks =
false)
const;
141 const std::string& applicationUID)
const;
143 const std::string& applicationUID)
const;
145 const std::string& applicationUID)
const;
148 std::map<std::string, TableVersion>* memberMap = 0,
149 std::string* accumulatedTreeErrors = 0)
const;
151 const std::string& startPath =
"/")
const;
153 std::map<std::string, TableVersion> getActiveVersions(
void)
const;
157 std::shared_ptr<TableGroupKey> makeTheTableGroupKey(
TableGroupKey key);
158 void restoreActiveTableGroups(
bool throwErrors =
false,
159 const std::string& pathToActiveGroupsFile =
"");
165 std::string username_;
168 std::shared_ptr<TableGroupKey> theConfigurationTableGroupKey_,
169 theContextTableGroupKey_, theBackboneTableGroupKey_, theIterateTableGroupKey_;
170 std::string theConfigurationTableGroup_, theContextTableGroup_,
171 theBackboneTableGroup_, theIterateTableGroup_;
173 std::map<std::string, std::pair<std::string, TableGroupKey>> lastFailedGroupLoad_;
175 std::map<std::string, TableBase*> nameToTableMap_;