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_;
62 static const std::set<std::string>& getContextMemberNames (
void);
63 static const std::set<std::string>& getBackboneMemberNames (
void);
64 static const std::set<std::string>& getIterateMemberNames (
void);
66 static std::string encodeURIComponent (
const std::string& sourceStr);
67 static const std::string& convertGroupTypeIdToName (
int groupTypeId);
68 static int getTypeOfGroup (
const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap);
69 static const std::string& getTypeNameOfGroup (
const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap);
75 bool initializeFromFhicl =
false);
78 void init (std::string* accumulatedErrors = 0,
bool initForWriteAccess =
false);
80 void destroyTableGroup (
const std::string& theGroup =
"",
bool onlyDeactivate =
false);
86 const std::string& configGroupName,
88 bool doActivate =
false,
89 std::map<std::string, TableVersion>* groupMembers = 0,
91 std::string* accumulateWarnings = 0,
92 std::string* groupComment = 0,
93 std::string* groupAuthor = 0,
94 std::string* groupCreateTime = 0,
95 bool doNotLoadMember =
false,
96 std::string* groupTypeString = 0,
97 std::map<std::string /*name*/, std::string /*alias*/>* groupAliases = 0,
98 bool onlyLoadIfBackboneOrContext =
false);
100 const std::map<std::string /*name*/, TableVersion /*version*/>& memberMap,
101 std::string* accumulateWarnings = 0);
108 const T* getTable(std::string name)
const
110 return (T*)(getTableByName(name));
113 const TableBase* getTableByName (
const std::string& configurationName)
const;
115 void dumpActiveConfiguration (
const std::string& filePath,
const std::string& dumpType);
117 std::map<std::string ,
118 std::pair<std::string ,
122 std::map<std::string ,
123 std::map<std::string ,
125 std::pair<std::string ,
127 std::map<std::string ,
128 std::pair<std::string ,
130 const std::map<std::string ,
131 std::pair<std::string ,
132 TableGroupKey>>& getFailedTableGroups (
void)
const {
return lastFailedGroupLoad_;}
133 const std::string& getActiveGroupName (
const std::string& type =
"")
const;
134 TableGroupKey getActiveGroupKey (
const std::string& type =
"")
const;
136 ConfigurationTree getNode (
const std::string& nodeString,
bool doNotThrowOnBrokenUIDLinks =
false)
const;
137 ConfigurationTree getContextNode (
const std::string& contextUID,
const std::string& applicationUID)
const;
138 ConfigurationTree getSupervisorNode (
const std::string& contextUID,
const std::string& applicationUID)
const;
139 ConfigurationTree getSupervisorTableNode (
const std::string& contextUID,
const std::string& applicationUID)
const;
141 std::vector<std::pair<std::string ,
143 std::map<std::string, TableVersion>* memberMap = 0,
144 std::string* accumulatedTreeErrors = 0)
const;
145 std::string getFirstPathToNode (
const ConfigurationTree& node,
const std::string& startPath =
"/")
const;
147 std::map<std::string, TableVersion> getActiveVersions (
void)
const;
149 const std::string& getOwnerContext (
void) {
return ownerContextUID_; }
150 const std::string& getOwnerApp (
void) {
return ownerAppUID_; }
151 bool isOwnerFirstAppInContext (
void);
155 std::shared_ptr<TableGroupKey> makeTheTableGroupKey (
TableGroupKey key);
156 void restoreActiveTableGroups (
157 bool throwErrors =
false,
158 const std::string& pathToActiveGroupsFile =
"",
159 bool onlyLoadIfBackboneOrContext =
false);
161 void setOwnerContext (
const std::string& contextUID) { ownerContextUID_ = contextUID; }
162 void setOwnerApp (
const std::string& appUID) { ownerAppUID_ = appUID; }
167 void initializeFromFhicl (
const std::string& fhiclPath);
168 void recursiveInitFromFhiclPSet(
169 const std::string& tableName,
170 const fhicl::ParameterSet& pset,
171 const std::string& recordName =
"",
172 const std::string& groupName =
"",
173 const std::string& groupLinkIndex =
"");
175 std::string username_;
177 std::shared_ptr<TableGroupKey> theConfigurationTableGroupKey_, theContextTableGroupKey_, theBackboneTableGroupKey_, theIterateTableGroupKey_;
178 std::string theConfigurationTableGroup_, theContextTableGroup_, theBackboneTableGroup_, theIterateTableGroup_;
180 std::map<std::string, std::pair<std::string, TableGroupKey>> lastFailedGroupLoad_;
182 std::map<std::string, TableBase*> nameToTableMap_;
186 std::string ownerContextUID_;
187 std::string ownerAppUID_;