private string GetQIValue(ListViewItem lvi, OLEDBQueryInstance queryInstance)
        {
            string results = "";

            try
            {
                object         value        = queryInstance.RunQuery();
                CollectorState currentstate = queryInstance.GetState(value);

                results = FormatUtils.N(value, "[null]");
                if (currentstate == CollectorState.Error)
                {
                    lvi.ImageIndex = 3;
                }
                else if (currentstate == CollectorState.Warning)
                {
                    lvi.ImageIndex = 2;
                }
                else
                {
                    lvi.ImageIndex = 1;
                }
            }
            catch (Exception ex)
            {
                results = ex.Message;
            }
            return(results);
        }
예제 #2
0
        public void ReadConfiguration(string configurationString)
        {
            XmlDocument config = new XmlDocument();

            config.LoadXml(configurationString);
            XmlElement root = config.DocumentElement;

            Entries.Clear();
            foreach (XmlElement queryNode in root.SelectNodes("queries/query"))
            {
                OLEDBQueryInstance queryEntry = new OLEDBQueryInstance();
                queryEntry.Name                    = queryNode.ReadXmlElementAttr("name", "");
                queryEntry.ConnectionString        = queryNode.ReadXmlElementAttr("connectionString", "");
                queryEntry.CmndTimeOut             = int.Parse(queryNode.ReadXmlElementAttr("cmndTimeOut", "60"));
                queryEntry.UsePersistentConnection = bool.Parse(queryNode.ReadXmlElementAttr("usePersistentConnection", "False"));

                XmlNode summaryQueryNode = queryNode.SelectSingleNode("summaryQuery");
                queryEntry.UseSPForSummary       = bool.Parse(summaryQueryNode.ReadXmlElementAttr("useSP", "False"));
                queryEntry.ReturnValueIsNumber   = bool.Parse(summaryQueryNode.ReadXmlElementAttr("returnValueIsNumber", "True"));
                queryEntry.ReturnValueInverted   = bool.Parse(summaryQueryNode.ReadXmlElementAttr("returnValueInverted", "False"));
                queryEntry.WarningValue          = summaryQueryNode.ReadXmlElementAttr("warningValue", "1");
                queryEntry.ErrorValue            = summaryQueryNode.ReadXmlElementAttr("errorValue", "2");
                queryEntry.SuccessValue          = summaryQueryNode.ReadXmlElementAttr("successValue", "[any]");
                queryEntry.UseRowCountAsValue    = bool.Parse(summaryQueryNode.ReadXmlElementAttr("useRowCountAsValue", "False"));
                queryEntry.UseExecuteTimeAsValue = bool.Parse(summaryQueryNode.ReadXmlElementAttr("useExecuteTimeAsValue", "False"));
                queryEntry.SummaryQuery          = summaryQueryNode.InnerText;

                XmlNode detailQueryNode = queryNode.SelectSingleNode("detailQuery");
                queryEntry.UseSPForDetail = bool.Parse(detailQueryNode.ReadXmlElementAttr("useSP", "False"));
                queryEntry.DetailQuery    = detailQueryNode.InnerText;
                Entries.Add(queryEntry);
            }
        }
예제 #3
0
        private void cmdOK_Click(object sender, EventArgs e)
        {
            if (DoValidate())
            {
                OLEDBQueryInstance selectedEntry;
                if (SelectedEntry != null)
                {
                    selectedEntry = (OLEDBQueryInstance)SelectedEntry;
                }
                else
                {
                    selectedEntry = new OLEDBQueryInstance();
                    SelectedEntry = selectedEntry;
                }

                if (selectedEntry != null)
                {
                    selectedEntry.Name             = txtName.Text;
                    selectedEntry.ConnectionString = txtConnectionString.Text;
                    selectedEntry.CmndTimeOut      = (int)numericUpDownCmndTimeOut.Value;
                    selectedEntry.UseSPForSummary  = chkUseSPForSummary.Checked;
                    selectedEntry.SummaryQuery     = txtStateQuery.Text;
                    if (cboReturnType.SelectedIndex == 0)
                    {
                        selectedEntry.ReturnValueIsNumber   = false;
                        selectedEntry.UseRowCountAsValue    = false;
                        selectedEntry.UseExecuteTimeAsValue = false;
                    }
                    else
                    {
                        selectedEntry.ReturnValueIsNumber = true;
                        if (cboReturnType.SelectedIndex == 2)
                        {
                            selectedEntry.UseRowCountAsValue = true;
                        }
                        else if (cboReturnType.SelectedIndex == 3)
                        {
                            selectedEntry.UseExecuteTimeAsValue = true;
                            chkReturnValueNotInverted.Checked   = true;
                        }
                    }
                    selectedEntry.ReturnValueInverted     = !chkReturnValueNotInverted.Checked;
                    selectedEntry.SuccessValue            = cboSuccessValue.Text;
                    selectedEntry.WarningValue            = cboWarningValue.Text;
                    selectedEntry.ErrorValue              = cboErrorValue.Text;
                    selectedEntry.UseSPForDetail          = chkUseSPForDetail.Checked;
                    selectedEntry.DetailQuery             = txtDetailQuery.Text;
                    selectedEntry.UsePersistentConnection = chkUsePersistentConnection.Checked;
                    DialogResult = System.Windows.Forms.DialogResult.OK;
                    Close();
                }
            }
        }
 private void editSQLQuerylocalCopyToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (lvwResults.SelectedItems.Count > 0)
     {
         bool autoRefreshTemp = refreshTimer.Enabled;
         refreshTimer.Enabled = false;
         OLEDBQueryInstance queryInstance   = (OLEDBQueryInstance)lvwResults.SelectedItems[0].Tag;
         EditOLEDBQuery     editDetailQuery = new EditOLEDBQuery();
         editDetailQuery.SelectedQueryInstance = queryInstance;
         if (editDetailQuery.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             lvwResults.SelectedItems[0].Tag = editDetailQuery.SelectedQueryInstance;
         }
         refreshTimer.Enabled = autoRefreshTemp;
     }
 }
 public override void RefreshDisplayData()
 {
     try
     {
         lvwResults.BeginUpdate();
         Cursor.Current = Cursors.WaitCursor;
         foreach (ListViewItem lvi in lvwResults.Items)
         {
             OLEDBQueryInstance queryInstance = (OLEDBQueryInstance)lvi.Tag;
             lvi.SubItems[1].Text = GetQIValue(lvi, queryInstance);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Refresh", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     finally
     {
         Cursor.Current = Cursors.Default;
         lvwResults.EndUpdate();
     }
     LoadDetailView();
     base.RefreshDisplayData();
 }
        private void LoadDetailView()
        {
            lvwDetails.BeginUpdate();
            lvwDetails.Items.Clear();
            lvwDetails.Columns.Clear();
            if (lvwResults.SelectedItems.Count >= 1 && lvwResults.SelectedItems[0].Tag is OLEDBQueryInstance)
            {
                OLEDBQueryInstance queryInstance = (OLEDBQueryInstance)lvwResults.SelectedItems[0].Tag;
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
                    DataSet ds = queryInstance.RunDetailQuery();
                    foreach (DataColumn currentDataColumn in ds.Tables[0].Columns)
                    {
                        ColumnHeader newColumn = new ColumnHeader();
                        newColumn.Tag  = currentDataColumn;
                        newColumn.Text = currentDataColumn.Caption;

                        if ((currentDataColumn.DataType == typeof(UInt64)) || (currentDataColumn.DataType == typeof(UInt32)) || (currentDataColumn.DataType == typeof(UInt16)) ||
                            (currentDataColumn.DataType == typeof(Int64)) || (currentDataColumn.DataType == typeof(Int32)) || (currentDataColumn.DataType == typeof(Int16)))
                        {
                            newColumn.TextAlign = HorizontalAlignment.Right;
                        }
                        else
                        {
                            newColumn.TextAlign = HorizontalAlignment.Left;
                        }
                        lvwDetails.Columns.Add(newColumn);
                    }
                    foreach (DataRow r in ds.Tables[0].Rows)
                    {
                        ListViewItem lvi = new ListViewItem(FormatUtils.N(r[0], "[Null]"));
                        for (int i = 1; i < lvwDetails.Columns.Count; i++)
                        {
                            lvi.SubItems.Add(FormatUtils.N(r[i], "[Null]"));
                        }
                        lvwDetails.Items.Add(lvi);
                    }
                    //try
                    {
                        lvwDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                    }
                    //catch { }
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("Cannot access a disposed object"))
                    {
                        timerSelectItem.Enabled = false;
                    }
                    else
                    {
                        MessageBox.Show(ex.Message, "View details", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
            lvwDetails.EndUpdate();
            ExportButtonVisible = lvwResults.SelectedItems.Count > 0;
        }
예제 #7
0
        private void cmdTest_Click(object sender, EventArgs e)
        {
            if (DoValidate())
            {
                string lastStep = "Initialize values";
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
                    OLEDBQueryInstance testQueryInstance = new OLEDBQueryInstance();
                    testQueryInstance.Name             = txtName.Text;
                    testQueryInstance.ConnectionString = txtConnectionString.Text;
                    testQueryInstance.CmndTimeOut      = (int)numericUpDownCmndTimeOut.Value;
                    testQueryInstance.UseSPForSummary  = chkUseSPForSummary.Checked;
                    testQueryInstance.SummaryQuery     = txtStateQuery.Text;
                    if (cboReturnType.SelectedIndex == 0)
                    {
                        testQueryInstance.ReturnValueIsNumber   = false;
                        testQueryInstance.UseRowCountAsValue    = false;
                        testQueryInstance.UseExecuteTimeAsValue = false;
                    }
                    else
                    {
                        testQueryInstance.ReturnValueIsNumber = true;
                        if (cboReturnType.SelectedIndex == 2)
                        {
                            testQueryInstance.UseRowCountAsValue = true;
                        }
                        else if (cboReturnType.SelectedIndex == 3)
                        {
                            testQueryInstance.UseExecuteTimeAsValue = true;
                            chkReturnValueNotInverted.Checked       = true;
                        }
                    }
                    testQueryInstance.ReturnValueInverted = !chkReturnValueNotInverted.Checked;
                    testQueryInstance.SuccessValue        = cboSuccessValue.Text;
                    testQueryInstance.WarningValue        = cboWarningValue.Text;
                    testQueryInstance.ErrorValue          = cboErrorValue.Text;
                    testQueryInstance.UseSPForDetail      = chkUseSPForDetail.Checked;
                    testQueryInstance.DetailQuery         = txtDetailQuery.Text;

                    lastStep = "Run summary query";
                    object returnValue = testQueryInstance.RunQuery();
                    if (!testQueryInstance.UseRowCountAsValue && !testQueryInstance.UseExecuteTimeAsValue && !returnValue.IsNumber())
                    {
                        throw new Exception(string.Format("Return value is not an integer!\r\nValue returned: {0}", returnValue));
                    }

                    //testing detail query
                    List <DataColumn> columns = new List <DataColumn>();
                    lastStep = "Testing detail query";
                    DataSet ds = testQueryInstance.RunDetailQuery();
                    lastStep = "Testing detail query - Getting column names";
                    columns.AddRange((from DataColumn c in ds.Tables[0].Columns
                                      select c).ToArray());

                    MessageBox.Show(string.Format("Success!\r\nSummary value return: {0}\r\nDetail row count: {1}\r\nDetail columns returned: {2}", returnValue, ds.Tables[0].Rows.Count, columns.ToCSVString()), "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Failed!\r\nLast step: {0}\r\n{1}", lastStep, ex.Message), "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
        }