/// <summary> /// Constructor /// </summary> public DatabasePoller(DbMessenger messenger, MessageGatewayService service) : base(messenger.PollingInterval * 1000) { this.messenger = messenger; this.messageGatewayService = service; this.isRunning = false; }
/// <summary> /// Deletes the channel. /// </summary> private void DeleteMessenger() { DbMessenger messenger = lvwDbMessenger.SelectedObject as DbMessenger; if (messenger != null) { DialogResult result = FormHelper.Confirm(string.Format(Resources.MsgConfirmDeleteMessenger, messenger.Name)); if (result == DialogResult.Yes) { // Delete the messenger DbMessenger.Delete(m => m.Name.ToLower() == messenger.Name.ToLower()); this.lvwDbMessenger.RemoveObjects(this.lvwDbMessenger.SelectedObjects); if (MessengerRemoved != null) { // Raise the event MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(messenger.Name); this.MessengerRemoved.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null); } } } else { FormHelper.ShowInfo(Resources.MsgMessengerMustBeSelected); } }
/// <summary> /// Shows the channels. /// </summary> private void SetupView() { lvwDbMessenger.BeginUpdate(); this.olvColName.AspectGetter = delegate(object x) { return(((DbMessenger)x).Name); }; this.olvColDescription.AspectGetter = delegate(object x) { return(((DbMessenger)x).Description); }; this.olvColStatus.AspectGetter = delegate(object x) { return(((DbMessenger)x).Status); }; lvwDbMessenger.SetObjects(DbMessenger.All()); lvwDbMessenger.EndUpdate(); }
/// <summary> /// FRM_s the messenger updated. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> void frm_MessengerUpdated(object sender, MessengerEventHandlerArgs e) { DbMessenger messenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == e.Name.ToLower()); if (MessengerUpdated != null) { // Raise the event MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(e.Name); this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null); } }
/// <summary> /// Builds the connection string. /// </summary> /// <param name="messenger">The messenger.</param> /// <returns></returns> private static string BuildConnString(DbMessenger messenger) { if (messenger.RequiredAuth) { return(string.Format("DSN={0};Uid={1};Pwd={2};", messenger.Dsn, messenger.DbUserName, messenger.DbUserPassword)); } else { return(string.Format("DSN={0}", messenger.Dsn)); } }
/// <summary> /// Deletes the message. /// </summary> /// <param name="messenger">The messenger.</param> /// <param name="id">The id.</param> /// <returns></returns> public static bool DeleteMsg(DbMessenger messenger, string id) { OdbcConnection dbConnection = null; OdbcCommand dbCommand = null; try { string connString = BuildConnString(messenger); DataType idColDataType = (DataType)StringEnum.Parse(typeof(DataType), messenger.UniqMsgIdColDataType); string sqlCommand = string.Empty; sqlCommand = string.Format("DELETE FROM {0} ", messenger.DbTable); if (idColDataType == DataType.Numeric) { sqlCommand += " WHERE {0}={1}"; } else { sqlCommand += " WHERE {0}='{1}'"; } sqlCommand = string.Format(sqlCommand, messenger.UniqMsgIdColName, id); dbConnection = new OdbcConnection(connString); dbConnection.Open(); dbCommand = dbConnection.CreateCommand(); dbCommand.CommandText = sqlCommand; int rowCount = dbCommand.ExecuteNonQuery(); return(true); } catch (Exception ex) { string msg = string.Format("Messenger [{0}] error, DSN is [{1}]", messenger.Name, messenger.Dsn); log.Error(msg, ex); return(false); } finally { if (dbCommand != null) { dbCommand.Dispose(); } if (dbConnection != null) { dbConnection.Close(); dbConnection.Dispose(); dbConnection = null; } } }
/// <summary> /// Gets the records. /// </summary> /// <param name="messenger">The messenger.</param> /// <returns></returns> public static DataTable GetRecords(DbMessenger messenger) { OdbcConnection dbConnection = null; OdbcCommand dbCommand = null; OdbcDataReader dbReader = null; try { string connString = BuildConnString(messenger); string sqlCommand = string.Format("SELECT * FROM {0}", messenger.DbTable); if (!messenger.DeleteAfterSending) { sqlCommand = string.Format("{0} WHERE {1}='{2}'", sqlCommand, messenger.StatusColName, messenger.StatusColNewValue); } dbConnection = new OdbcConnection(connString); dbConnection.Open(); dbCommand = dbConnection.CreateCommand(); dbCommand.CommandText = sqlCommand; dbReader = dbCommand.ExecuteReader(); DataTable dt = new DataTable(); dt.TableName = messenger.DbTable; dt.Load(dbReader); dbReader.Close(); return(dt); } catch (Exception ex) { string msg = string.Format("Messenger [{0}] error, DSN is [{1}]", messenger.Name, messenger.Dsn); log.Error(msg, ex); throw new SmartGatewayException(msg, ex); } finally { if (dbReader != null && !dbReader.IsClosed) { dbReader.Close(); } if (dbCommand != null) { dbCommand.Dispose(); } if (dbConnection != null) { dbConnection.Close(); dbConnection.Dispose(); dbConnection = null; } } }
private void frmTestForm_Load(object sender, EventArgs e) { DbMessenger messenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == "messagingtoolkit".ToLower()); if (messenger != null) { DatabasePoller poller = new DatabasePoller(messenger, null); poller.Name = messenger.Name; Thread worker = new Thread(new ThreadStart(poller.StartTimer)); worker.IsBackground = true; worker.Name = messenger.Name; worker.Start(); } }
/// <summary> /// Displays the messenger. /// </summary> private void DisplayMessenger() { if (!string.IsNullOrEmpty(this.MessengerName)) { // Retrieve and display the messenger configuration DbMessenger messenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == this.MessengerName.ToLower()); if (messenger != null) { // Display the messenger information txtName.Text = messenger.Name; txtDescription.Text = messenger.Description; cboDsn.Text = messenger.Dsn; txtDbTable.Text = messenger.DbTable; npdPollingInterval.Value = messenger.PollingInterval; chkRequireAuthentication.Checked = messenger.RequiredAuth; txtDbUserName.Text = messenger.DbUserName; txtDbPassword.Text = messenger.DbUserPassword; txtUniqMsgIdColName.Text = messenger.UniqMsgIdColName; DataType dataType = (DataType)Enum.Parse(typeof(DataType), messenger.UniqMsgIdColDataType.ToString()); if ((dataType & DataType.String) == DataType.String) { radMsgIdDataTypeString.Checked = true; } if ((dataType & DataType.Numeric) == DataType.Numeric) { radMsgIdDataTypeNumeric.Checked = true; } txtMsgColName.Text = messenger.MsgColName; txtDestNoColName.Text = messenger.DestNoColName; txtMsgPriorityColName.Text = messenger.MsgPriorityColName; txtMsgAlertColName.Text = messenger.MsgAlertColName; cboDefaultMsgPriority.Text = messenger.DefaultMsgPriority; txtDefaultTextMsg.Text = messenger.DefaultTextMsg; chkDeleteAfterSending.Checked = messenger.DeleteAfterSending; txtStatusColName.Text = messenger.StatusColName; txtStatusTimestampColName.Text = messenger.StatusTimestampColName; txtStatusColValue.Text = messenger.StatusColNewValue; txtStatusColUpdateSentValue.Text = messenger.StatusColUpdateSuccessVal; txtStatusColUpdateFailedValue.Text = messenger.StatusColUpdateFailedValue; txtStatusColUpdateSendingValue.Text = messenger.StatusColUpdateSendingValue; chkAutoStart.Checked = messenger.AutoStart; txtName.Enabled = false; this.IsUpdate = true; } } }
/// <summary> /// Edits the db messenger. /// </summary> private void EditMessenger() { object obj = lvwDbMessenger.SelectedObject; if (obj != null) { DbMessenger messenger = obj as DbMessenger; frmDatabaseMessenger frm = new frmDatabaseMessenger(); frm.MessengerUpdated += new UpdateMessengerEventHandler(frm_MessengerUpdated); frm.MessengerName = messenger.Name; DialogResult result = frm.ShowDialog(); } }
private void CheckMessengers() { try { List <DbMessenger> messengers = new List <DbMessenger>(); while (true) { messengers.Clear(); foreach (DbMessenger messenger in DbMessenger.All().OrderBy(m => m.Name)) { try { EventAction action = new EventAction(StringEnum.GetStringValue(EventNotificationType.QueryMessengerStatus)); action.ActionType = EventAction.Synchronous; action.Values.Add(EventParameter.MessengerName, messenger.Name); EventResponse response = RemotingHelper.NotifyEvent(ServiceEventListenerUrl, action); if (StringEnum.GetStringValue(EventNotificationResponse.Failed).Equals(response.Status)) { messenger.Status = StringEnum.GetStringValue(MessengerStatus.Stopped); } else { messenger.Status = response.Results[EventParameter.MessengerStatus]; } messengers.Add(messenger); } catch (Exception ex) { log.ErrorFormat("Error checking messenger - [{0}]", messenger.Name); log.Error(ex.Message, ex); } } RefreshView(messengers); Thread.Sleep(PollingInterval); } } catch (Exception ex) { log.Error(ex.Message, ex); } }
/// <summary> /// Shows the messages. /// </summary> public void RefreshView(List <DbMessenger> messengers) { if (this.lvwDbMessenger.InvokeRequired) { SetListCallback callback = new SetListCallback(RefreshView); this.Invoke(callback, messengers); } else { DbMessenger messenger = lvwDbMessenger.SelectedObject as DbMessenger; lvwDbMessenger.BeginUpdate(); lvwDbMessenger.ClearObjects(); lvwDbMessenger.SetObjects(messengers); if (messenger != null) { lvwDbMessenger.SelectObject(messenger); } lvwDbMessenger.EndUpdate(); lvwDbMessenger.Refresh(); } }
private void stopMessengerToolStripMenuItem_Click(object sender, EventArgs e) { try { DbMessenger messenger = lvwDbMessenger.SelectedObject as DbMessenger; if (messenger != null) { EventAction action = new EventAction(StringEnum.GetStringValue(EventNotificationType.StopMessenger)); action.Values.Add(EventParameter.MessengerName, messenger.Name); EventResponse response = RemotingHelper.NotifyEvent(ServiceEventListenerUrl, action); messenger.Status = StringEnum.GetStringValue(MessengerStatus.Stopping); lvwDbMessenger.RefreshObject(messenger); } else { FormHelper.ShowInfo(Resources.MsgNoMessengerSelected); } } catch (Exception ex) { FormHelper.ShowError(ex.Message); } }
/// <summary> /// Saves the changes. /// </summary> /// <returns></returns> private bool SaveChanges() { // Validate the name is not empty if (!FormHelper.ValidateNotEmpty(txtName, Resources.MsgUniqueNameRequired)) { return(false); } string name = txtName.Text.Trim(); if (!this.IsUpdate) { // The messenger name must be unique if (DbMessenger.Exists(m => m.Name.ToLower() == name.ToLower())) { FormHelper.ShowError(txtName, string.Format(Resources.MsgMessengerNameAlreadyExists, name)); return(false); } } if (!FormHelper.ValidateNotEmpty(cboDsn, Resources.MsgDsnRequired)) { return(false); } if (!FormHelper.ValidateNotEmpty(txtDbTable, Resources.MsgDbTableRequired)) { return(false); } if (chkRequireAuthentication.Checked) { if (!FormHelper.ValidateNotEmpty(txtDbUserName, Resources.MsgDbUserNameRequired)) { return(false); } if (!FormHelper.ValidateNotEmpty(txtDbPassword, Resources.MsgDbUserPasswordRequired)) { return(false); } } if (!FormHelper.ValidateNotEmpty(txtUniqMsgIdColName, Resources.MsgUniqMsgIdColNameRequired)) { return(false); } if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired)) { return(false); } if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired)) { return(false); } if (!FormHelper.ValidateNotEmpty(txtMsgColName, txtDefaultTextMsg, Resources.MsgMsgColDefaultMsgRequired)) { return(false); } if (chkDeleteAfterSending.Checked) { if (!FormHelper.ValidateNotEmpty(txtStatusColName, Resources.MsgStatusColNameRequired)) { return(false); } } try { // Save the messenger configuration DbMessenger dbMessenger = new DbMessenger(); if (this.IsUpdate) { dbMessenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == name.ToLower()); } dbMessenger.Name = name; dbMessenger.Description = txtDescription.Text; dbMessenger.Dsn = cboDsn.Text; dbMessenger.DbTable = txtDbTable.Text; dbMessenger.PollingInterval = Convert.ToInt32(npdPollingInterval.Value); dbMessenger.RequiredAuth = chkRequireAuthentication.Checked; dbMessenger.DbUserName = txtDbUserName.Text; dbMessenger.DbUserPassword = txtDbPassword.Text; dbMessenger.UniqMsgIdColName = txtUniqMsgIdColName.Text; if (radMsgIdDataTypeString.Checked) { dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.String); } else { dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.Numeric); } dbMessenger.MsgColName = txtMsgColName.Text; dbMessenger.DestNoColName = txtDestNoColName.Text; dbMessenger.MsgPriorityColName = txtMsgPriorityColName.Text; dbMessenger.MsgAlertColName = txtMsgAlertColName.Text; dbMessenger.DefaultMsgPriority = cboDefaultMsgPriority.Text; dbMessenger.DefaultTextMsg = txtDefaultTextMsg.Text; dbMessenger.DeleteAfterSending = chkDeleteAfterSending.Checked; dbMessenger.StatusColName = txtStatusColName.Text; dbMessenger.StatusTimestampColName = txtStatusTimestampColName.Text; dbMessenger.StatusColNewValue = txtStatusColValue.Text; dbMessenger.StatusColUpdateSuccessVal = txtStatusColUpdateSentValue.Text; dbMessenger.StatusColUpdateFailedValue = txtStatusColUpdateFailedValue.Text; dbMessenger.StatusColUpdateSendingValue = txtStatusColUpdateSendingValue.Text; dbMessenger.AutoStart = chkAutoStart.Checked; if (!this.IsUpdate) { dbMessenger.Save(); } else { dbMessenger.Update(); } if (MessengerAdded != null) { // Raise the event MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name); this.MessengerAdded.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null); } if (MessengerUpdated != null) { // Raise the event MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name); this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null); } } catch (Exception ex) { FormHelper.ShowError(ex.Message); return(false); } // Reset to false isFormChanged = false; // Show successful save message FormHelper.ShowInfo(Resources.MsgMessengerConfigSaved); // Return true as saving is successful return(true); }
/// <summary> /// Generates the message id. /// </summary> /// <param name="messenger">The messenger.</param> /// <param name="id">The message id.</param> /// <returns></returns> public static string GenerateMessageId(DbMessenger messenger, string id) { return(MessagePrefix + GuiHelper.FieldSplitter + messenger.Name + GuiHelper.FieldSplitter + id); }
/// <summary> /// Updates the status. /// </summary> /// <param name="messenger">The messenger.</param> /// <param name="row">The row.</param> /// <param name="id">The id.</param> /// <param name="status">The status.</param> /// <returns></returns> public static bool UpdateStatus(DbMessenger messenger, string id, string status) { OdbcConnection dbConnection = null; OdbcCommand dbCommand = null; try { string connString = BuildConnString(messenger); DataType idColDataType = (DataType)StringEnum.Parse(typeof(DataType), messenger.UniqMsgIdColDataType); string sqlCommand = string.Empty; sqlCommand = string.Format("UPDATE {0} SET {1}='{2}'", messenger.DbTable, messenger.StatusColName, status); if (!string.IsNullOrEmpty(messenger.StatusTimestampColName)) { sqlCommand += ", " + messenger.StatusTimestampColName + "=?"; } if (idColDataType == DataType.Numeric) { sqlCommand += " WHERE {0}={1}"; } else { sqlCommand += " WHERE {0}='{1}'"; } sqlCommand = string.Format(sqlCommand, messenger.UniqMsgIdColName, id); dbConnection = new OdbcConnection(connString); dbConnection.Open(); dbCommand = dbConnection.CreateCommand(); dbCommand.CommandText = sqlCommand; if (!string.IsNullOrEmpty(messenger.StatusTimestampColName)) { dbCommand.Parameters.Add("@ts", OdbcType.DateTime); dbCommand.Parameters["@ts"].Value = DateTime.Now; } int rowCount = dbCommand.ExecuteNonQuery(); return(true); } catch (Exception ex) { string msg = string.Format("Messenger [{0}] error, DSN is [{1}]", messenger.Name, messenger.Dsn); log.Error(msg, ex); return(false); } finally { if (dbCommand != null) { dbCommand.Dispose(); } if (dbConnection != null) { dbConnection.Close(); dbConnection.Dispose(); dbConnection = null; } } }