1 #ifndef _ots_ConfigurationGUISupervisor_h_
2 #define _ots_ConfigurationGUISupervisor_h_
4 #include "otsdaq/ConfigurationInterface/ConfigurationManagerRW.h"
5 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
14 static xdaq::Application*
instantiate(xdaq::ApplicationStub* s);
22 virtual void defaultPage(xgi::Input* in, xgi::Output* out)
override;
23 virtual void request(
const std::string& requestType,
25 HttpXmlDocument& xmlOut,
26 const WebUsers::RequestUserInfo& userInfo)
override;
28 virtual void setSupervisorPropertyDefaults(
void)
override;
29 virtual void forceSupervisorPropertyValues(
void)
override;
35 void handleSaveTableInfoXML(HttpXmlDocument& xmldoc,
36 ConfigurationManagerRW* cfgMgr,
37 std::string& tableName,
38 const std::string& columnCSV,
39 const std::string& tableDescription,
40 const std::string& columnChoicesCSV,
41 bool allowOverwrite =
false);
42 void handleDeleteTableInfoXML(HttpXmlDocument& xmldoc,
43 ConfigurationManagerRW* cfgMgr,
44 std::string& tableName);
46 void handleGroupAliasesXML(HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
47 void handleSetGroupAliasInBackboneXML(HttpXmlDocument& xmldoc,
48 ConfigurationManagerRW* cfgMgr,
49 const std::string& groupAlias,
50 const std::string& groupName,
51 TableGroupKey groupKey,
52 const std::string& author);
53 void handleSetVersionAliasInBackboneXML(HttpXmlDocument& xmldoc,
54 ConfigurationManagerRW* cfgMgr,
55 const std::string& versionAlias,
56 const std::string& tableName,
58 const std::string& author);
59 void handleAliasGroupMembersInBackboneXML(HttpXmlDocument& xmldoc,
60 ConfigurationManagerRW* cfgMgr,
61 const std::string& versionAlias,
62 const std::string& groupName,
63 TableGroupKey groupKey,
64 const std::string& author);
65 void handleVersionAliasesXML(HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
66 void handleTableGroupsXML(HttpXmlDocument& xmldoc,
67 ConfigurationManagerRW* cfgMgr,
69 void handleGetTableGroupTypeXML(HttpXmlDocument& xmldoc,
70 ConfigurationManagerRW* cfgMgr,
71 const std::string& configList);
73 void handleTablesXML(HttpXmlDocument& xmldoc,
74 ConfigurationManagerRW* cfgMgr,
75 bool allowIllegalColumns);
76 void handleGetTableXML(HttpXmlDocument& xmldoc,
77 ConfigurationManagerRW* cfgMgr,
78 const std::string& tableName,
80 bool allowIllegalColumns =
false);
82 void setupActiveTablesXML(
83 HttpXmlDocument& xmldoc,
84 ConfigurationManagerRW* cfgMgr,
85 const std::string& groupName,
86 const TableGroupKey& groupKey,
87 const std::string& modifiedTables,
88 bool refreshAll =
true,
89 bool getGroupInfo =
false,
90 std::map<std::string /*name*/, TableVersion /*version*/>* returnMemberMap = 0,
91 bool outputActiveTables =
true,
92 std::string* accumulatedErrors = 0);
93 void handleFillTreeViewXML(HttpXmlDocument& xmldoc,
94 ConfigurationManagerRW* cfgMgr,
95 const std::string& groupName,
96 const TableGroupKey& groupKey,
97 const std::string& startPath,
100 const std::string& modifiedTables,
101 const std::string& filterList);
102 static void recursiveTreeToXML(
const ConfigurationTree& t,
104 HttpXmlDocument& xmldoc,
105 DOMElement* parentEl,
106 bool hideStatusFalse);
107 void handleFillTreeNodeCommonFieldsXML(HttpXmlDocument& xmldoc,
108 ConfigurationManagerRW* cfgMgr,
109 const std::string& groupName,
110 const TableGroupKey& groupKey,
111 const std::string& startPath,
113 const std::string& modifiedTables,
114 const std::string& recordList,
115 const std::string& fieldList);
116 void handleFillUniqueFieldValuesForRecordsXML(HttpXmlDocument& xmldoc,
117 ConfigurationManagerRW* cfgMgr,
118 const std::string& groupName,
119 const TableGroupKey& groupKey,
120 const std::string& startPath,
121 const std::string& modifiedTables,
122 const std::string& recordList,
123 const std::string& fieldList);
124 void handleFillGetTreeNodeFieldValuesXML(HttpXmlDocument& xmldoc,
125 ConfigurationManagerRW* cfgMgr,
126 const std::string& groupName,
127 const TableGroupKey& groupKey,
128 const std::string& startPath,
129 const std::string& modifiedTables,
130 const std::string& recordList,
131 const std::string& fieldList);
132 void handleFillSetTreeNodeFieldValuesXML(HttpXmlDocument& xmldoc,
133 ConfigurationManagerRW* cfgMgr,
134 const std::string& groupName,
135 const TableGroupKey& groupKey,
136 const std::string& startPath,
137 const std::string& modifiedTables,
138 const std::string& recordList,
139 const std::string& fieldList,
140 const std::string& valueList,
141 const std::string& author);
142 void handleFillCreateTreeNodeRecordsXML(HttpXmlDocument& xmldoc,
143 ConfigurationManagerRW* cfgMgr,
144 const std::string& groupName,
145 const TableGroupKey& groupKey,
146 const std::string& startPath,
147 const std::string& modifiedTables,
148 const std::string& recordList,
149 const std::string& author);
150 void handleFillDeleteTreeNodeRecordsXML(HttpXmlDocument& xmldoc,
151 ConfigurationManagerRW* cfgMgr,
152 const std::string& groupName,
153 const TableGroupKey& groupKey,
154 const std::string& startPath,
155 const std::string& modifiedTables,
156 const std::string& recordList);
157 void handleFillModifiedTablesXML(HttpXmlDocument& xmldoc,
158 ConfigurationManagerRW* cfgMgr);
160 void handleSaveTreeNodeEditXML(HttpXmlDocument& xmldoc,
161 ConfigurationManagerRW* cfgMgr,
162 const std::string& tableName,
163 TableVersion version,
164 const std::string& type,
165 const std::string& uid,
166 const std::string& column,
167 const std::string& newValue,
168 const std::string& author);
169 void handleGetAffectedGroupsXML(HttpXmlDocument& xmldoc,
170 ConfigurationManagerRW* cfgMgr,
171 const std::string& rootGroupName,
172 const TableGroupKey& rootGroupKey,
173 const std::string& modifiedTables);
174 void handleGetLinkToChoicesXML(HttpXmlDocument& xmldoc,
175 ConfigurationManagerRW* cfgMgr,
176 const std::string& linkToTableName,
177 const TableVersion& linkToTableVersion,
178 const std::string& linkIdType,
179 const std::string& linkIndex,
180 const std::string& linkInitId);
182 void handleSavePlanCommandSequenceXML(HttpXmlDocument& xmldoc,
183 ConfigurationManagerRW* cfgMgr,
184 const std::string& groupName,
185 const TableGroupKey& groupKey,
186 const std::string& modifiedTables,
187 const std::string& author,
188 const std::string& planName,
189 const std::string& commandString);
191 void handleMergeGroupsXML(HttpXmlDocument& xmlOut,
192 ConfigurationManagerRW* cfgMgr,
193 const std::string& groupANameContext,
194 const TableGroupKey& groupAKeyContext,
195 const std::string& groupBNameContext,
196 const TableGroupKey& groupBKeyContext,
197 const std::string& groupANameConfig,
198 const TableGroupKey& groupAKeyConfig,
199 const std::string& groupBNameConfig,
200 const TableGroupKey& groupBKeyConfig,
201 const std::string& author,
202 const std::string& mergeApproach);
216 void handleGetArtdaqNodeRecordsXML(HttpXmlDocument& xmlOut,
217 ConfigurationManagerRW* cfgMgr,
218 const std::string& modifiedTables);
219 void handleLoadArtdaqNodeLayoutXML(
220 HttpXmlDocument& xmlOut,
221 ConfigurationManagerRW* cfgMgr,
222 const std::string& contextGroupName =
"",
223 const TableGroupKey& contextGroupKey = TableGroupKey());
224 void handleSaveArtdaqNodeLayoutXML(
225 HttpXmlDocument& xmlOut,
226 ConfigurationManagerRW* cfgMgr,
227 const std::string& layoutString,
228 const std::string& contextGroupName =
"",
229 const TableGroupKey& contextGroupKey = TableGroupKey());
231 void testXDAQContext(
void);
235 CONFIGURATION_MANAGER_EXPIRATION_TIME = 60 * 60 * 1,
236 CONFIGURATION_MANAGER_REFRESH_THRESHOLD = 60 * 15,
239 ConfigurationManagerRW* refreshUserSession(std::string username,
240 uint64_t activeSessionIndex,
242 std::map<std::string, ConfigurationManagerRW*> userConfigurationManagers_;
243 std::map<std::string, time_t> userLastUseTime_;
static xdaq::Application * instantiate(xdaq::ApplicationStub *s)