otsdaq_utilities  v2_02_00
ConfigurationGUISupervisor.h
1 #ifndef _ots_ConfigurationGUISupervisor_h_
2 #define _ots_ConfigurationGUISupervisor_h_
3 
4 #include "otsdaq-core/CoreSupervisors/CoreSupervisorBase.h"
5 #include "otsdaq-core/ConfigurationInterface/ConfigurationManagerRW.h"
6 
7 
8 namespace ots
9 {
10 
11 //ConfigurationGUISupervisor
12 // This class handles the user requests to read and write the Configuration Tree.
13 class ConfigurationGUISupervisor: public CoreSupervisorBase
14 {
15 
16 public:
17 
18  static xdaq::Application* instantiate(xdaq::ApplicationStub* s);
19 
20  ConfigurationGUISupervisor (xdaq::ApplicationStub* s) ;
21  virtual ~ConfigurationGUISupervisor (void);
22 
23  void init (void);
24  void destroy (void);
25 
26  virtual void defaultPage (xgi::Input* in, xgi::Output* out) override;
27  virtual void request (const std::string& requestType, cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut, const WebUsers::RequestUserInfo& userInfo) override;
28 
29  virtual void setSupervisorPropertyDefaults (void) override;
30  virtual void forceSupervisorPropertyValues (void) override; //override to force supervisor property values (and ignore user settings)
31 
32 private:
33  void handleSaveConfigurationInfoXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, std::string& configName, const std::string& columnCSV, const std::string& tableDescription, const std::string& columnChoicesCSV, bool allowOverwrite=false);
34  void handleDeleteConfigurationInfoXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, std::string& configName);
35 
36  void handleGroupAliasesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
37  void handleSetGroupAliasInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupAlias, const std::string& groupName, ConfigurationGroupKey groupKey, const std::string& author);
38  void handleSetVersionAliasInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& versionAlias, const std::string& configName, ConfigurationVersion version, const std::string& author);
39  void handleAliasGroupMembersInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& versionAlias, const std::string& groupName, ConfigurationGroupKey groupKey, const std::string& author);
40  void handleVersionAliasesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
41  void handleConfigurationGroupsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, bool returnMembers);
42  void handleGetConfigurationGroupXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, ConfigurationGroupKey groupKey);
43  void handleGetConfigurationGroupTypeXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configList);
44  void handleCreateConfigurationGroupXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const std::string& configList, bool allowDuplicates=false, bool ignoreWarnings=false, const std::string& groupComment = "", bool lookForEquivalent = false);
45 
46  void handleConfigurationsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, bool allowIllegalColumns);
47  void handleGetConfigurationXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion version, bool allowIllegalColumns=false);
48  void handleCreateConfigurationXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion version, bool makeTemporary, const std::string& data, const int& dataOffset, const std::string& author, const std::string& comment, bool sourceTableAsIs, bool lookForEquivalent);
49 
50  void setupActiveTablesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& modifiedTables, bool refreshAll = true, bool getGroupInfo = false, std::map<std::string /*name*/, ConfigurationVersion /*version*/>* returnMemberMap = 0, bool outputActiveTables = true, std::string* accumulatedErrors = 0);
51  void handleFillTreeViewXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, unsigned int depth, bool hideStatusFalse, const std::string& modifiedTables, const std::string& filterList);
52  static void recursiveTreeToXML (const ConfigurationTree& t, unsigned int depth, HttpXmlDocument& xmldoc, DOMElement* parentEl, bool hideStatusFalse);
53  void handleFillTreeNodeCommonFieldsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, unsigned int depth, const std::string& modifiedTables, const std::string& recordList, const std::string& fieldList);
54  void handleFillUniqueFieldValuesForRecordsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, const std::string& modifiedTables, const std::string& recordList, const std::string& fieldList);
55  void handleFillGetTreeNodeFieldValuesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, const std::string& modifiedTables, const std::string& recordList, const std::string& fieldList);
56  void handleFillSetTreeNodeFieldValuesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, const std::string& modifiedTables, const std::string& recordList, const std::string& fieldList, const std::string& valueList, const std::string& author);
57  void handleFillCreateTreeNodeRecordsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, const std::string& modifiedTables, const std::string& recordList, const std::string& author);
58  void handleFillDeleteTreeNodeRecordsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& startPath, const std::string& modifiedTables, const std::string& recordList);
59  void handleFillModifiedTablesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
60 
61  void handleSaveTreeNodeEditXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion version, const std::string& type, const std::string& uid, const std::string& column, const std::string& newValue, const std::string& author);
62  void handleGetAffectedGroupsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& rootGroupName, const ConfigurationGroupKey& rootGroupKey, const std::string& modifiedTables);
63  void handleGetLinkToChoicesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& linkToTableName, const ConfigurationVersion& linkToTableVersion, const std::string& linkIdType, const std::string& linkIndex, const std::string& linkInitId);
64 
65  void handleSavePlanCommandSequenceXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, const ConfigurationGroupKey& groupKey, const std::string& modifiedTables, const std::string& author, const std::string& planName, const std::string& commandString);
66 
67  void handleMergeGroupsXML (HttpXmlDocument& xmlOut, ConfigurationManagerRW* cfgMgr, const std::string& groupANameContext, const ConfigurationGroupKey& groupAKeyContext, const std::string& groupBNameContext, const ConfigurationGroupKey& groupBKeyContext, const std::string& groupANameConfig, const ConfigurationGroupKey& groupAKeyConfig, const std::string& groupBNameConfig, const ConfigurationGroupKey& groupBKeyConfig, const std::string& author, const std::string& mergeApproach);
68 
69  ConfigurationVersion saveModifiedVersionXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion originalVersion, bool makeTemporary, ConfigurationBase* config, ConfigurationVersion temporaryModifiedVersion, bool ignoreDuplicates = false, bool lookForEquivalent = false);
70 
71 
72  void testXDAQContext (void);
73 
74  enum {
75  CONFIGURATION_MANAGER_EXPIRATION_TIME = 60*60*1, //1 hour, in seconds
76  CONFIGURATION_MANAGER_REFRESH_THRESHOLD = 60*15, //15 minutes, in seconds
77  };
78 
79 
80  ConfigurationManagerRW* refreshUserSession(std::string username, uint64_t activeSessionIndex, bool refresh);
81  std::map<std::string, ConfigurationManagerRW* > userConfigurationManagers_;
82  std::map<std::string, time_t> userLastUseTime_;
83 
84 };
85 
86 
87 
88 } //end ots namespace
89 
90 #endif
static xdaq::Application * instantiate(xdaq::ApplicationStub *s)