00001 #ifndef _ots_ConfigurationGUISupervisor_h_
00002 #define _ots_ConfigurationGUISupervisor_h_
00003
00004 #include "otsdaq-core/CoreSupervisors/CoreSupervisorBase.h"
00005 #include "otsdaq-core/ConfigurationInterface/ConfigurationManagerRW.h"
00006
00007
00008 namespace ots
00009 {
00010
00011
00012
00013 class ConfigurationGUISupervisor: public CoreSupervisorBase
00014 {
00015
00016 public:
00017
00018 static xdaq::Application* instantiate(xdaq::ApplicationStub* s);
00019
00020 ConfigurationGUISupervisor (xdaq::ApplicationStub* s) ;
00021 virtual ~ConfigurationGUISupervisor (void);
00022
00023 void init (void);
00024 void destroy (void);
00025
00026 virtual void defaultPage (xgi::Input* in, xgi::Output* out) override;
00027 virtual void request (const std::string& requestType, cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut, const WebUsers::RequestUserInfo& userInfo) override;
00028
00029 virtual void setSupervisorPropertyDefaults (void) override;
00030 virtual void forceSupervisorPropertyValues (void) override;
00031
00032 private:
00033 void handleSaveConfigurationInfoXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, std::string& configName, const std::string& columnCSV, const std::string& tableDescription, const std::string& columnChoicesCSV, bool allowOverwrite=false);
00034 void handleDeleteConfigurationInfoXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, std::string& configName);
00035
00036 void handleGroupAliasesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
00037 void handleSetGroupAliasInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupAlias, const std::string& groupName, ConfigurationGroupKey groupKey, const std::string& author);
00038 void handleSetVersionAliasInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& versionAlias, const std::string& configName, ConfigurationVersion version, const std::string& author);
00039 void handleAliasGroupMembersInBackboneXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& versionAlias, const std::string& groupName, ConfigurationGroupKey groupKey, const std::string& author);
00040 void handleVersionAliasesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
00041 void handleConfigurationGroupsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, bool returnMembers);
00042 void handleGetConfigurationGroupXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& groupName, ConfigurationGroupKey groupKey);
00043 void handleGetConfigurationGroupTypeXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configList);
00044 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);
00045
00046 void handleConfigurationsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, bool allowIllegalColumns);
00047 void handleGetConfigurationXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion version, bool allowIllegalColumns=false);
00048 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);
00049
00050 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);
00051 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);
00052 static void recursiveTreeToXML (const ConfigurationTree& t, unsigned int depth, HttpXmlDocument& xmldoc, DOMElement* parentEl, bool hideStatusFalse);
00053 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);
00054 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);
00055 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);
00056 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);
00057 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);
00058 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);
00059 void handleFillModifiedTablesXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr);
00060
00061 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);
00062 void handleGetAffectedGroupsXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& rootGroupName, const ConfigurationGroupKey& rootGroupKey, const std::string& modifiedTables);
00063 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);
00064
00065 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);
00066
00067 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);
00068
00069 ConfigurationVersion saveModifiedVersionXML (HttpXmlDocument& xmldoc, ConfigurationManagerRW* cfgMgr, const std::string& configName, ConfigurationVersion originalVersion, bool makeTemporary, ConfigurationBase* config, ConfigurationVersion temporaryModifiedVersion, bool ignoreDuplicates = false, bool lookForEquivalent = false);
00070
00071
00072 void testXDAQContext (void);
00073
00074 enum {
00075 CONFIGURATION_MANAGER_EXPIRATION_TIME = 60*60*1,
00076 CONFIGURATION_MANAGER_REFRESH_THRESHOLD = 60*15,
00077 };
00078
00079
00080 ConfigurationManagerRW* refreshUserSession(std::string username, uint64_t activeSessionIndex, bool refresh);
00081 std::map<std::string, ConfigurationManagerRW* > userConfigurationManagers_;
00082 std::map<std::string, time_t> userLastUseTime_;
00083
00084 };
00085
00086
00087
00088 }
00089
00090 #endif