/// <summary> /// Method to handle window loaded event. /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">Event arguments.</param> private void MainWindow_Loaded(object sender, RoutedEventArgs e) { // Load Menu XmlRootAttribute xmlRootAttribute = new XmlRootAttribute("MenuDataItems"); XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection <MenuDataItem>), xmlRootAttribute); using (XmlReader reader = XmlReader.Create(FilePath.GetAbsolutePath("Menu.xml"))) { m_menuDataItems = (ObservableCollection <MenuDataItem>)serializer.Deserialize(reader); } MenuMain.DataContext = m_menuDataItems; // Populate Node Dropdown ComboboxNode.ItemsSource = Node.GetLookupList(null); if (ComboboxNode.Items.Count > 0) { ComboboxNode.SelectedIndex = 0; } // Create alarm monitor as singleton m_alarmMonitor = new AlarmMonitor(true); m_alarmMonitor.Start(); IsolatedStorageManager.InitializeIsolatedStorage(false); }
// Sets up the alarm monitor when the user control is loaded. private void AlarmStatusUserControl_Loaded(object sender, RoutedEventArgs e) { int refreshInterval; if ((object)AlarmMonitor.Default == null) m_monitor = new AlarmMonitor(); m_dataContext.Monitor = AlarmMonitor.Default ?? m_monitor; refreshInterval = m_dataContext.Monitor.RefreshInterval; TextBlockAlarmRefreshInterval.Text = refreshInterval.ToString(); TextBoxRefreshInterval.Text = refreshInterval.ToString(); }
// Sets up the alarm monitor when the user control is loaded. private void AlarmStatusUserControl_Loaded(object sender, RoutedEventArgs e) { int refreshInterval; if ((object)AlarmMonitor.Default == null) { m_monitor = new AlarmMonitor(); } m_dataContext.Monitor = AlarmMonitor.Default ?? m_monitor; refreshInterval = m_dataContext.Monitor.RefreshInterval; TextBlockAlarmRefreshInterval.Text = refreshInterval.ToString(); TextBoxRefreshInterval.Text = refreshInterval.ToString(); }
/// <summary> /// Deletes specified <see cref="Alarm"/> record from database. /// </summary> /// <param name="database"><see cref="AdoDataConnection"/> to connection to database.</param> /// <param name="alarmId">ID of the record to be deleted.</param> /// <returns>String, for display use, indicating success.</returns> public static string Delete(AdoDataConnection database, int alarmId) { bool createdConnection = false; string query; object associatedMeasurementId; AlarmMonitor monitor = AlarmMonitor.Default; try { createdConnection = CreateConnection(ref database); // Setup current user context for any delete triggers CommonFunctions.SetCurrentUserContext(database); query = database.ParameterizedQueryString("SELECT AssociatedMeasurementID FROM Alarm WHERE ID = {0}", "alarmId"); associatedMeasurementId = database.Connection.ExecuteScalar(query, DefaultTimeout, alarmId); query = database.ParameterizedQueryString("DELETE FROM Alarm WHERE ID = {0}", "alarmId"); database.Connection.ExecuteNonQuery(query, DefaultTimeout, alarmId); if (associatedMeasurementId != null && associatedMeasurementId != DBNull.Value) { Guid signalId = Guid.Parse(associatedMeasurementId.ToString()); query = database.ParameterizedQueryString("DELETE FROM Measurement WHERE SignalID = {0}", "signalId"); database.Connection.ExecuteNonQuery(query, DefaultTimeout, signalId); } if ((object)monitor != null) { monitor.UpdateDefinedAlarms(); } CommonFunctions.SendCommandToService("ReloadConfig"); return("Alarm deleted successfully"); } finally { if (createdConnection && database != null) { database.Dispose(); } } }
/// <summary> /// Method to handle window loaded event. /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">Event arguments.</param> private void MainWindow_Loaded(object sender, RoutedEventArgs e) { // Load Menu XmlRootAttribute xmlRootAttribute = new XmlRootAttribute("MenuDataItems"); XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection <MenuDataItem>), xmlRootAttribute); using (XmlReader reader = XmlReader.Create(FilePath.GetAbsolutePath("Menu.xml"))) { m_menuDataItems = (ObservableCollection <MenuDataItem>)serializer.Deserialize(reader); } MenuMain.DataContext = m_menuDataItems; // Populate Node Dropdown Dictionary <Guid, string> nodesList = Node.GetLookupList(null); ComboboxNode.ItemsSource = nodesList; if (ComboboxNode.Items.Count > 0) { if (!string.IsNullOrEmpty(m_defaultNodeID) && nodesList.ContainsKey(new Guid(m_defaultNodeID))) { foreach (KeyValuePair <Guid, string> item in nodesList) { if (item.Key.ToString().ToLower() == m_defaultNodeID.ToLower()) { ComboboxNode.SelectedItem = item; break; } } } else { ComboboxNode.SelectedIndex = 0; } } // Create alarm monitor as singleton m_alarmMonitor = new AlarmMonitor(true); m_alarmMonitor.Start(); IsolatedStorageManager.InitializeIsolatedStorage(false); }
/// <summary> /// Saves <see cref="Alarm"/> information to database. /// </summary> /// <param name="database"><see cref="AdoDataConnection"/> to connection to database.</param> /// <param name="alarm">Information about <see cref="Alarm"/>.</param> /// <returns>String, for display use, indicating success.</returns> public static string Save(AdoDataConnection database, Alarm alarm) { bool createdConnection = false; try { createdConnection = CreateConnection(ref database); string updateQuery; Alarm createdAlarm = alarm; string successMessage = "Alarm information saved successfully"; object associatedMeasurementId = (alarm.AssociatedMeasurementID != null) ? database.Guid(alarm.AssociatedMeasurementID.Value) : DBNull.Value; AlarmMonitor monitor = AlarmMonitor.Default; if (alarm.ID == 0) { string query = database.ParameterizedQueryString("INSERT INTO Alarm (NodeID, TagName, SignalID, AssociatedMeasurementID, Description, Severity, Operation, SetPoint, Tolerance, Delay, " + "Hysteresis, LoadOrder, Enabled, UpdatedBy, UpdatedOn, CreatedBy, CreatedOn) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16})", "nodeID", "tagName", "signalId", "associatedMeasurementId", "description", "severity", "operation", "setPoint", "tolerance", "delay", "hysteresis", "loadOrder", "enabled", "updatedBy", "updatedOn", "createdBy", "createdOn"); database.Connection.ExecuteNonQuery(query, DefaultTimeout, (alarm.NodeID != Guid.Empty) ? database.Guid(alarm.NodeID) : database.CurrentNodeID(), alarm.TagName.ToNotNull(), database.Guid(alarm.SignalID), associatedMeasurementId, alarm.Description.ToNotNull(), alarm.Severity, alarm.Operation, alarm.SetPoint.ToNotNull(), alarm.Tolerance.ToNotNull(), alarm.Delay.ToNotNull(), alarm.Hysteresis.ToNotNull(), alarm.LoadOrder, database.Bool(alarm.Enabled), CommonFunctions.CurrentUser, database.UtcNow, CommonFunctions.CurrentUser, database.UtcNow); createdAlarm = GetAlarm(database, string.Format("WHERE TagName = '{0}'", alarm.TagName)); } else { string query = database.ParameterizedQueryString("UPDATE Alarm SET NodeID = {0}, TagName = {1}, SignalID = {2}, AssociatedMeasurementID = {3}, Description = {4}, Severity = {5}, " + "Operation = {6}, SetPoint = {7}, Tolerance = {8}, Delay = {9}, Hysteresis = {10}, LoadOrder = {11}, Enabled = {12}, UpdatedBy = {13}, UpdatedOn = {14} WHERE ID = {15}", "nodeID", "tagName", "signalId", "associatedMeasurementId", "description", "severity", "operation", "setPoint", "tolerance", "delay", "hysteresis", "loadOrder", "enabled", "updatedBy", "updatedOn", "id"); database.Connection.ExecuteNonQuery(query, DefaultTimeout, (alarm.NodeID != Guid.Empty) ? database.Guid(alarm.NodeID) : database.CurrentNodeID(), alarm.TagName, database.Guid(alarm.SignalID), associatedMeasurementId, alarm.Description.ToNotNull(), alarm.Severity, alarm.Operation, alarm.SetPoint.ToNotNull(), alarm.Tolerance.ToNotNull(), alarm.Delay.ToNotNull(), alarm.Hysteresis.ToNotNull(), alarm.LoadOrder, database.Bool(alarm.Enabled), CommonFunctions.CurrentUser, database.UtcNow, alarm.ID); } updateQuery = database.ParameterizedQueryString("UPDATE Alarm SET AssociatedMeasurementID = {0} WHERE ID = {1}", "associatedMeasurementId", "id"); if (alarm.CreateAssociatedMeasurement && (object)alarm.AssociatedMeasurementID == null) { alarm.AssociatedMeasurementID = CreateAlarmMeasurement(database, createdAlarm); if ((object)alarm.AssociatedMeasurementID != null) { database.Connection.ExecuteNonQuery(updateQuery, DefaultTimeout, database.Guid(alarm.AssociatedMeasurementID.Value), createdAlarm.ID); } else { successMessage += " but failed to create associated measurement"; } } else if (!alarm.CreateAssociatedMeasurement && (object)alarm.AssociatedMeasurementID != null) { database.Connection.ExecuteNonQuery(updateQuery, DefaultTimeout, DBNull.Value, createdAlarm.ID); DeleteAlarmMeasurement(database, createdAlarm.AssociatedMeasurementID.Value); alarm.AssociatedMeasurementID = null; } if ((object)monitor != null) { monitor.UpdateDefinedAlarms(); } try { CommonFunctions.SendCommandToService("ReloadConfig"); } catch (Exception ex) { CommonFunctions.LogException(database, "Alarm Save", ex); } return(successMessage); } finally { if (createdConnection && database != null) { database.Dispose(); } } }
/// <summary> /// Method to handle window loaded event. /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">Event arguments.</param> private void MainWindow_Loaded(object sender, RoutedEventArgs e) { // Load Menu XmlRootAttribute xmlRootAttribute = new XmlRootAttribute("MenuDataItems"); XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<MenuDataItem>), xmlRootAttribute); using (XmlReader reader = XmlReader.Create(FilePath.GetAbsolutePath("Menu.xml"))) { m_menuDataItems = (ObservableCollection<MenuDataItem>)serializer.Deserialize(reader); } MenuMain.DataContext = m_menuDataItems; // Populate Node Dropdown ComboboxNode.ItemsSource = Node.GetLookupList(null); if (ComboboxNode.Items.Count > 0) ComboboxNode.SelectedIndex = 0; // Create alarm monitor as singleton m_alarmMonitor = new AlarmMonitor(true); m_alarmMonitor.Start(); IsolatedStorageManager.InitializeIsolatedStorage(false); }