PageRenderTime 22ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/QuickMon4/QuickMonDBUIForWinForms/Collectors/SqlQuery/SqlQueryCollectorEditEntry.cs

#
C# | 296 lines | 259 code | 30 blank | 7 comment | 14 complexity | ce8cf4c0fb85c5c6a493c954e0ceec52 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using QuickMon.Forms;
  9. using System.Windows.Forms;
  10. namespace QuickMon.Collectors
  11. {
  12. public partial class SqlQueryCollectorEditEntry : CollectorConfigEntryEditWindowBase // Form, ICollectorConfigEntryEditWindow
  13. {
  14. public SqlQueryCollectorEditEntry()
  15. {
  16. InitializeComponent();
  17. }
  18. //#region ICollectorConfigEntryEditWindow
  19. //public ICollectorConfigEntry SelectedEntry { get; set; }
  20. //public QuickMonDialogResult ShowEditEntry()
  21. //{
  22. // return (QuickMonDialogResult)ShowDialog();
  23. //}
  24. //#endregion
  25. #region Form events
  26. private void SqlQueryCollectorEditEntry_Load(object sender, EventArgs e)
  27. {
  28. try
  29. {
  30. SqlQueryCollectorEntry selectedEntry;
  31. if (SelectedEntry == null)
  32. SelectedEntry = new SqlQueryCollectorEntry() { DataSourceType = Collectors.DataSourceType.SqlServer };
  33. selectedEntry = (SqlQueryCollectorEntry)SelectedEntry;
  34. txtName.Text = selectedEntry.Name;
  35. optOLEDb.Checked = selectedEntry.DataSourceType == DataSourceType.OLEDB;
  36. optSqlServer.Checked = selectedEntry.DataSourceType == DataSourceType.SqlServer;
  37. txtServer.Text = selectedEntry.Server;
  38. txtDatabase.Text = selectedEntry.Database;
  39. chkIntegratedSec.Checked = selectedEntry.IntegratedSecurity;
  40. txtUserName.Text = selectedEntry.UserName;
  41. txtPassword.Text = selectedEntry.Password;
  42. txtConnectionString.Text = selectedEntry.ConnectionString;
  43. txtApplicationName.Text = selectedEntry.ApplicationName;
  44. numericUpDownCmndTimeOut.SaveValueSet(selectedEntry.CmndTimeOut);
  45. chkUsePersistentConnection.Checked = selectedEntry.UsePersistentConnection;
  46. chkUseSPForState.Checked = selectedEntry.UseSPForStateQuery;
  47. txtStateQuery.Text = selectedEntry.StateQuery;
  48. chkUseSPForDetail.Checked = selectedEntry.UseSPForDetailQuery;
  49. txtDetailQuery.Text = selectedEntry.DetailQuery;
  50. optEWG.Checked = selectedEntry.ValueReturnCheckSequence == CollectorAgentReturnValueCheckSequence.EWG;
  51. optGWE.Checked = selectedEntry.ValueReturnCheckSequence == CollectorAgentReturnValueCheckSequence.GWE;
  52. cboReturnType.SelectedIndex = (int)selectedEntry.ValueReturnType;
  53. cboSuccessMatchType.SelectedIndex = (int)selectedEntry.SuccessMatchType;
  54. txtGoodValueOrMacro.Text = selectedEntry.SuccessValueOrMacro;
  55. cboWarningMatchType.SelectedIndex = (int)selectedEntry.WarningMatchType;
  56. txtWarningValueOrMacro.Text = selectedEntry.WarningValueOrMacro;
  57. cboErrorMatchType.SelectedIndex = (int)selectedEntry.ErrorMatchType;
  58. txtErrorValueOrMacro.Text = selectedEntry.ErrorValueOrMacro;
  59. SetDataSourceSelection();
  60. }
  61. catch (Exception ex)
  62. {
  63. MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  64. }
  65. }
  66. #endregion
  67. #region Control events
  68. private void optSqlServer_CheckedChanged(object sender, EventArgs e)
  69. {
  70. SetDataSourceSelection();
  71. }
  72. private void optOLEDb_CheckedChanged(object sender, EventArgs e)
  73. {
  74. SetDataSourceSelection();
  75. }
  76. private void chkIntegratedSec_CheckedChanged(object sender, EventArgs e)
  77. {
  78. txtUserName.Enabled = !chkIntegratedSec.Checked;
  79. txtUserName.ReadOnly = chkIntegratedSec.Checked;
  80. txtPassword.Enabled = !chkIntegratedSec.Checked;
  81. txtPassword.ReadOnly = chkIntegratedSec.Checked;
  82. }
  83. #endregion
  84. #region Private methods
  85. private void SetDataSourceSelection()
  86. {
  87. if (optSqlServer.Checked)
  88. {
  89. OLEDBDataSourcePanel.Visible = false;
  90. OLEDBDataSourcePanel.Dock = DockStyle.Top;
  91. dataSourceExtrasPanel.Dock = DockStyle.Fill;
  92. sqlServerPanel.Visible = true;
  93. }
  94. else
  95. {
  96. sqlServerPanel.Visible = false;
  97. dataSourceExtrasPanel.Dock = DockStyle.Bottom;
  98. OLEDBDataSourcePanel.Dock = DockStyle.Fill;
  99. OLEDBDataSourcePanel.Visible = true;
  100. }
  101. CheckOKEnabled();
  102. }
  103. private void CheckOKEnabled()
  104. {
  105. cmdOK.Enabled = txtName.Text.Trim().Length > 0 &&
  106. txtStateQuery.Text.Trim().Length > 0 &&
  107. txtDetailQuery.Text.Trim().Length > 0 &&
  108. (
  109. (optSqlServer.Checked && txtServer.Text.Trim().Length > 0 && txtDatabase.Text.Trim().Length > 0) ||
  110. (optOLEDb.Checked && txtConnectionString.Text.Trim().Length > 0)
  111. ) &&
  112. txtGoodValueOrMacro.Text.Trim().Length > 0 &&
  113. txtWarningValueOrMacro.Text.Trim().Length > 0 &&
  114. txtErrorValueOrMacro.Text.Trim().Length > 0;
  115. cmdTest.Enabled = cmdOK.Enabled;
  116. }
  117. #endregion
  118. #region Links
  119. private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
  120. {
  121. try
  122. {
  123. System.Diagnostics.Process p = new System.Diagnostics.Process();
  124. p.StartInfo = new System.Diagnostics.ProcessStartInfo("http://www.connectionstrings.com/");
  125. p.Start();
  126. }
  127. catch (Exception ex)
  128. {
  129. MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  130. }
  131. }
  132. private void linkLabelQueryTips_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
  133. {
  134. try
  135. {
  136. System.Diagnostics.Process p = new System.Diagnostics.Process();
  137. p.StartInfo = new System.Diagnostics.ProcessStartInfo("https://quickmon.codeplex.com/wikipage?title=Ole%20Db%20Query%20Collector%20query%20syntax%20Tips");
  138. p.Start();
  139. }
  140. catch (Exception ex)
  141. {
  142. MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  143. }
  144. }
  145. #endregion
  146. #region Change tracking
  147. private void txtName_TextChanged(object sender, EventArgs e)
  148. {
  149. CheckOKEnabled();
  150. }
  151. private void txtServer_TextChanged(object sender, EventArgs e)
  152. {
  153. CheckOKEnabled();
  154. }
  155. private void txtDatabase_TextChanged(object sender, EventArgs e)
  156. {
  157. CheckOKEnabled();
  158. }
  159. private void txtConnectionString_TextChanged(object sender, EventArgs e)
  160. {
  161. CheckOKEnabled();
  162. }
  163. private void txtStateQuery_TextChanged(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)
  164. {
  165. CheckOKEnabled();
  166. }
  167. private void txtDetailQuery_TextChangedDelayed(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)
  168. {
  169. CheckOKEnabled();
  170. }
  171. #endregion
  172. #region Button events
  173. private void cmdOK_Click(object sender, EventArgs e)
  174. {
  175. SqlQueryCollectorEntry selectedEntry;
  176. if (SelectedEntry == null)
  177. SelectedEntry = new SqlQueryCollectorEntry() { DataSourceType = Collectors.DataSourceType.SqlServer };
  178. selectedEntry = (SqlQueryCollectorEntry)SelectedEntry;
  179. selectedEntry.Name = txtName.Text;
  180. selectedEntry.DataSourceType = optOLEDb.Checked ? DataSourceType.OLEDB : DataSourceType.SqlServer;
  181. selectedEntry.Server = txtServer.Text;
  182. selectedEntry.Database = txtDatabase.Text;
  183. selectedEntry.IntegratedSecurity = chkIntegratedSec.Checked;
  184. selectedEntry.UserName = txtUserName.Text;
  185. selectedEntry.Password = txtPassword.Text;
  186. selectedEntry.ConnectionString = txtConnectionString.Text;
  187. selectedEntry.ApplicationName = txtApplicationName.Text;
  188. selectedEntry.CmndTimeOut = (int)numericUpDownCmndTimeOut.Value;
  189. selectedEntry.UsePersistentConnection = chkUsePersistentConnection.Checked;
  190. selectedEntry.UseSPForStateQuery = chkUseSPForState.Checked;
  191. selectedEntry.StateQuery = txtStateQuery.Text;
  192. selectedEntry.UseSPForDetailQuery = chkUseSPForDetail.Checked;
  193. selectedEntry.DetailQuery = txtDetailQuery.Text;
  194. selectedEntry.ValueReturnCheckSequence = optEWG.Checked ? CollectorAgentReturnValueCheckSequence.EWG : CollectorAgentReturnValueCheckSequence.GWE;
  195. selectedEntry.ValueReturnType = (DataBaseQueryValueReturnType)cboReturnType.SelectedIndex;
  196. selectedEntry.SuccessMatchType = (CollectorAgentReturnValueCompareMatchType)cboSuccessMatchType.SelectedIndex;
  197. selectedEntry.SuccessValueOrMacro = txtGoodValueOrMacro.Text;
  198. selectedEntry.WarningMatchType = (CollectorAgentReturnValueCompareMatchType)cboWarningMatchType.SelectedIndex;
  199. selectedEntry.WarningValueOrMacro = txtWarningValueOrMacro.Text;
  200. selectedEntry.ErrorMatchType = (CollectorAgentReturnValueCompareMatchType)cboErrorMatchType.SelectedIndex;
  201. selectedEntry.ErrorValueOrMacro = txtErrorValueOrMacro.Text;
  202. SelectedEntry = selectedEntry;
  203. DialogResult = DialogResult.OK;
  204. Close();
  205. }
  206. private void cmdTest_Click(object sender, EventArgs e)
  207. {
  208. string lastStep = "Initialize values";
  209. try
  210. {
  211. Cursor.Current = Cursors.WaitCursor;
  212. SqlQueryCollectorEntry testEntry = new SqlQueryCollectorEntry();
  213. testEntry.Name = txtName.Text;
  214. testEntry.DataSourceType = optOLEDb.Checked ? DataSourceType.OLEDB : DataSourceType.SqlServer;
  215. testEntry.Server = txtServer.Text;
  216. testEntry.Database = txtDatabase.Text;
  217. testEntry.IntegratedSecurity = chkIntegratedSec.Checked;
  218. testEntry.UserName = txtUserName.Text;
  219. testEntry.Password = txtPassword.Text;
  220. testEntry.ConnectionString = txtConnectionString.Text;
  221. testEntry.ApplicationName = txtApplicationName.Text;
  222. testEntry.CmndTimeOut = (int)numericUpDownCmndTimeOut.Value;
  223. testEntry.UsePersistentConnection = chkUsePersistentConnection.Checked;
  224. testEntry.UseSPForStateQuery = chkUseSPForState.Checked;
  225. testEntry.StateQuery = txtStateQuery.Text;
  226. testEntry.UseSPForDetailQuery = chkUseSPForDetail.Checked;
  227. testEntry.DetailQuery = txtDetailQuery.Text;
  228. testEntry.ValueReturnCheckSequence = optEWG.Checked ? CollectorAgentReturnValueCheckSequence.EWG : CollectorAgentReturnValueCheckSequence.GWE;
  229. testEntry.ValueReturnType = (DataBaseQueryValueReturnType)cboReturnType.SelectedIndex;
  230. testEntry.SuccessMatchType = (CollectorAgentReturnValueCompareMatchType)cboSuccessMatchType.SelectedIndex;
  231. testEntry.SuccessValueOrMacro = txtGoodValueOrMacro.Text;
  232. testEntry.WarningMatchType = (CollectorAgentReturnValueCompareMatchType)cboWarningMatchType.SelectedIndex;
  233. testEntry.WarningValueOrMacro = txtWarningValueOrMacro.Text;
  234. testEntry.ErrorMatchType = (CollectorAgentReturnValueCompareMatchType)cboErrorMatchType.SelectedIndex;
  235. testEntry.ErrorValueOrMacro = txtErrorValueOrMacro.Text;
  236. lastStep = "Run state query";
  237. object returnValue = testEntry.GetStateQueryValue();
  238. lastStep = "Run detail query";
  239. DataTable dt = testEntry.GetDetailQueryDataTable();
  240. lastStep = "Run detail query - Getting column names";
  241. List<DataColumn> columns = new List<DataColumn>();
  242. columns.AddRange((from DataColumn c in dt.Columns
  243. select c).ToArray());
  244. MessageBox.Show(string.Format("Success!\r\nState value return: {0}\r\nDetail row count: {1}\r\nDetail columns returned: {2}", returnValue, dt.Rows.Count, columns.ToCSVString()), "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);
  245. }
  246. catch (Exception ex)
  247. {
  248. MessageBox.Show(string.Format("Failed!\r\nLast step: {0}\r\n{1}", lastStep, ex.Message), "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  249. }
  250. finally
  251. {
  252. Cursor.Current = Cursors.Default;
  253. }
  254. }
  255. private void cmdBuildConnStr_Click(object sender, EventArgs e)
  256. {
  257. ConnectionStringBuilder csb = new ConnectionStringBuilder();
  258. csb.ConnectionString = txtConnectionString.Text;
  259. if (csb.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  260. {
  261. txtConnectionString.Text = csb.ConnectionString;
  262. }
  263. }
  264. #endregion
  265. }
  266. }