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);
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);
107 const T* getTable(std::string name)
const
109 return (T*)(getTableByName(name));
112 const TableBase* getTableByName(
const std::string& configurationName)
const;
114 void dumpActiveConfiguration(
const std::string& filePath,
115 const std::string& dumpType);
117 std::map<std::string ,
119 getActiveGroupAliases(
void);
122 std::map<std::string , std::map<std::string ,
TableVersion>>
123 getVersionAliases(
void)
const;
125 std::pair<std::string ,
TableGroupKey> getTableGroupFromAlias(
126 std::string systemAlias,
ProgressBar* progressBar = 0);
127 std::map<std::string ,
129 getActiveTableGroups(
void)
const;
130 const std::map<std::string ,
132 getFailedTableGroups(
void)
const
134 return lastFailedGroupLoad_;
136 const std::string& getActiveGroupName(
const std::string& type =
"")
const;
137 TableGroupKey getActiveGroupKey(
const std::string& type =
"")
const;
140 const std::string& nodeString,
141 bool doNotThrowOnBrokenUIDLinks =
false)
const;
143 const std::string& applicationUID)
const;
145 const std::string& applicationUID)
const;
147 const std::string& applicationUID)
const;
150 std::map<std::string, TableVersion>* memberMap = 0,
151 std::string* accumulatedTreeErrors = 0)
const;
153 const std::string& startPath =
"/")
const;
155 std::map<std::string, TableVersion> getActiveVersions(
void)
const;
157 const std::string& getOwnerContext(
void) {
return ownerContextUID_; }
158 const std::string& getOwnerApp(
void) {
return ownerAppUID_; }
159 bool isOwnerFirstAppInContext(
void);
163 std::shared_ptr<TableGroupKey> makeTheTableGroupKey(
TableGroupKey key);
164 void restoreActiveTableGroups(
bool throwErrors =
false,
165 const std::string& pathToActiveGroupsFile =
"",
166 bool onlyLoadIfBackboneOrContext =
false);
168 void setOwnerContext(
const std::string& contextUID) { ownerContextUID_ = contextUID; }
169 void setOwnerApp(
const std::string& appUID) { ownerAppUID_ = appUID; }
174 void initializeFromFhicl(
const std::string& fhiclPath);
175 void recursiveInitFromFhiclPSet(
const std::string& tableName,
176 const fhicl::ParameterSet& pset,
177 const std::string& recordName =
"",
178 const std::string& groupName =
"",
179 const std::string& groupLinkIndex =
"");
181 std::string username_;
184 std::shared_ptr<TableGroupKey> theConfigurationTableGroupKey_,
185 theContextTableGroupKey_, theBackboneTableGroupKey_, theIterateTableGroupKey_;
186 std::string theConfigurationTableGroup_, theContextTableGroup_,
187 theBackboneTableGroup_, theIterateTableGroup_;
189 std::map<std::string, std::pair<std::string, TableGroupKey>> lastFailedGroupLoad_;
191 std::map<std::string, TableBase*> nameToTableMap_;
196 std::string ownerContextUID_;
198 std::string ownerAppUID_;