private void Initialize() { ErrorMessage = string.Empty; // Set up the loggers const string logFileNameBase = @"Logs\MyEMSLFileCacher"; LogTools.CreateFileLogger(logFileNameBase, LogLevel); var hostName = System.Net.Dns.GetHostName(); var dbLoggerConnectionString = DbToolsFactory.AddApplicationNameToConnectionString(mLogDBConnectionString, "MyEMSLMTSFileCacher"); LogTools.CreateDbLogger(dbLoggerConnectionString, "MyEMSLFileCacher: " + hostName); // Make initial log entry var msg = "=== Started MyEMSL MTS File Cacher v" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version + " === "; LogTools.LogMessage(msg); var connectionStringToUse = DbToolsFactory.AddApplicationNameToConnectionString(MTSConnectionString, "MyEMSLMTSFileCacher"); mDbTools = DbToolsFactory.GetDBTools(connectionStringToUse); RegisterEvents(mDbTools); }
/// <summary> /// Contact DMS to get the bionet host names /// </summary> /// <returns> /// Dictionary where keys are host names and values are true if the host is active and should be monitored, /// or false if it should not be monitored /// </returns> private static Dictionary <string, bool> GetBionetHosts(bool onlyActiveHosts = false) { try { // Keys are host names, values are True if the host has Active=1 in T_Bionet_Hosts, otherwise false var hostsTrackedByDMS = new Dictionary <string, bool>(StringComparer.OrdinalIgnoreCase); ShowTimestampMessage("Retrieving names of Bionet computers"); var connectionStringToUse = DbToolsFactory.AddApplicationNameToConnectionString(DMS_CONNECTION_STRING, "BionetPingTool"); var dbTools = DbToolsFactory.GetDBTools(connectionStringToUse); const string sqlQuery = "SELECT Host, IP, Active " + "FROM V_Bionet_Hosts_Export " + "ORDER BY Host"; var success = dbTools.GetQueryResults(sqlQuery, out var results); if (!success) { ShowErrorMessage("Error obtaining bionet hosts from V_Bionet_Hosts_Export"); return(hostsTrackedByDMS); } foreach (var item in results) { var hostName = item[0]; if (!int.TryParse(item[2], out var isActive)) { ShowWarning(string.Format("Unable to convert {0} to an integer", item[2])); isActive = 1; } var hostIsActive = (isActive > 0); if (onlyActiveHosts && !hostIsActive) { continue; } if (hostsTrackedByDMS.ContainsKey(hostName)) { ShowWarning("Skipping duplicate host " + hostName, 0); } else { hostsTrackedByDMS.Add(hostName, hostIsActive); } } return(hostsTrackedByDMS); } catch (Exception ex) { ShowErrorMessage("Error in GetBionetHosts", ex); return(new Dictionary <string, bool>()); } }
/// <summary> /// Initializes the manager /// </summary> /// <returns>TRUE for success, FALSE for failure</returns> public bool InitMgr() { // Define the default logging info // This will get updated below LogTools.CreateFileLogger(DEFAULT_BASE_LOGFILE_NAME, BaseLogger.LogLevels.DEBUG); // Create a database logger connected to the Manager Control DB // Once the initial parameters have been successfully read, // we remove this logger than make a new one using the connection string read from the Manager Control DB var defaultDmsConnectionString = Properties.Settings.Default.MgrCnfgDbConnectStr; var hostName = System.Net.Dns.GetHostName(); var applicationName = "PkgFolderCreateManager_" + hostName; var defaultDbLoggerConnectionString = DbToolsFactory.AddApplicationNameToConnectionString(defaultDmsConnectionString, applicationName); LogTools.CreateDbLogger(defaultDbLoggerConnectionString, "FolderCreate: " + hostName); // Get the manager settings try { var localSettings = GetLocalManagerSettings(); mMgrSettings = new MgrSettingsDB { TraceMode = false }; RegisterEvents(mMgrSettings); mMgrSettings.CriticalErrorEvent += ErrorEventHandler; var success = mMgrSettings.LoadSettings(localSettings, true); if (!success) { if (string.Equals(mMgrSettings.ErrMsg, MgrSettings.DEACTIVATED_LOCALLY)) { throw new ApplicationException(MgrSettings.DEACTIVATED_LOCALLY); } throw new ApplicationException("Unable to initialize manager settings class: " + mMgrSettings.ErrMsg); } } catch { // Failures are logged by clsMgrSettings to local emergency log file return(false); } // Setup the loggers var logFileNameBase = mMgrSettings.GetParam("LogFilename", "FolderCreate"); BaseLogger.LogLevels logLevel; if (int.TryParse(mMgrSettings.GetParam("DebugLevel"), out var debugLevel)) { logLevel = (BaseLogger.LogLevels)debugLevel; } else { logLevel = BaseLogger.LogLevels.INFO; } LogTools.CreateFileLogger(logFileNameBase, logLevel); // Typically: // Data Source=gigasax;Initial Catalog=DMS_Pipeline;Integrated Security=SSPI; var logCnStr = mMgrSettings.GetParam("ConnectionString"); var moduleName = mMgrSettings.GetParam("ModuleName"); var dbLoggerConnectionString = DbToolsFactory.AddApplicationNameToConnectionString(logCnStr, mMgrSettings.ManagerName); LogTools.CreateDbLogger(dbLoggerConnectionString, moduleName); LogTools.MessageLogged += MessageLoggedHandler; // Make the initial log entry var appVersion = Assembly.GetExecutingAssembly().GetName().Version; var msg = "=== Started Package Folder Creation Manager V" + appVersion + " === "; LogTools.LogMessage(msg); // Setup the message queue mMsgHandler = new clsMessageHandler { BrokerUri = mMgrSettings.GetParam("MessageQueueURI"), CommandQueueName = mMgrSettings.GetParam("ControlQueueName"), BroadcastTopicName = mMgrSettings.GetParam("BroadcastQueueTopic"), StatusTopicName = mMgrSettings.GetParam("MessageQueueTopicMgrStatus"), MgrSettings = mMgrSettings }; if (!mMsgHandler.Init()) { // Most error messages provided by .Init method, but debug message is here for program tracking LogDebug("Message handler init error"); return(false); } LogDebug("Message handler initialized"); // Connect message handler events mMsgHandler.CommandReceived += OnMsgHandler_CommandReceived; mMsgHandler.BroadcastReceived += OnMsgHandler_BroadcastReceived; // Setup the status file class var appPath = PRISM.FileProcessor.ProcessFilesOrDirectoriesBase.GetAppPath(); var fInfo = new FileInfo(appPath); string statusFileNameLoc; if (fInfo.DirectoryName == null) { statusFileNameLoc = "Status.xml"; } else { statusFileNameLoc = Path.Combine(fInfo.DirectoryName, "Status.xml"); } mStatusFile = new clsStatusFile(statusFileNameLoc, mMsgHandler) { LogToMsgQueue = mMgrSettings.GetParam("LogStatusToMessageQueue", false), MgrName = mMgrSettings.ManagerName }; RegisterEvents(mStatusFile); mStatusFile.InitStatusFromFile(); SetStartupStatus(); mStatusFile.WriteStatusFile(); LogDebug("Status file init complete"); // Register the listeners for the message handler mMsgHandler.RegisterListeners(); // Everything worked return(true); }
/// <summary> /// Constructor /// </summary> /// <param name="connectionString"></param> public DBAccess(string connectionString) { const int DB_TIMEOUT_SECONDS = 90; mDBTools = DbToolsFactory.GetDBTools(connectionString, DB_TIMEOUT_SECONDS); }