using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using NHibernate; using Results.Entities; using ResultsBrowser.Filters; using ResultsBrowser.Resources; namespace ResultsBrowser { public partial class ResultsBrowserWnd : Form { IList filters; public ResultsBrowserWnd() { InitializeComponent(); filters = new List(); } private void ResultsBrowserWnd_Load(object sender, EventArgs e) { Localize(); RedrawTestBenches(); checkBox1.Checked = true; } void RedrawTestBenches() { checkBox1.Text = Program.LocalSettings.Bench1; checkBox2.Text = Program.LocalSettings.Bench2; checkBox3.Text = Program.LocalSettings.Bench3; checkBox1.Visible = !string.IsNullOrEmpty(checkBox1.Text); checkBox2.Visible = !string.IsNullOrEmpty(checkBox2.Text); checkBox3.Visible = !string.IsNullOrEmpty(checkBox3.Text); } void Localize() { Text = "Results Browser"; /// or Statistics filtersGroupBox.Text = "Filters"; resultsGroupBox.Text = "Query results"; settingsBtn.Text = "Settings"; addFilterBtn.Text = "Add filter"; loadQueryBtn.Text = "Load query"; saveQueryBtn.Text = "Save query"; testBenchesGroupBox.Text = "Test benches"; executeQueryBtn.Text = "Execute query"; } private void settingsBtn_Click(object sender, EventArgs e) { if (new Forms.DatabaseSettingsDlg().ShowDialog() == DialogResult.OK) { RedrawTestBenches(); } } private void addFilterBtn_Click(object sender, EventArgs e) { Forms.AddFilterDlg dlg = new Forms.AddFilterDlg(); if (dlg.ShowDialog() == DialogResult.OK && dlg.SelectedFilterName != null) { Filters.IFilter filter = Factory.GetFilter(dlg.SelectedFilterName); filters.Add(filter); filtersFlowLayoutPanel.Controls.Add(filter.GetFilterUI()); } } private void loadQueryBtn_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { FiltersConfig filtersConfig = FiltersConfig.Load(dlg.FileName); filters.Clear(); filtersFlowLayoutPanel.Controls.Clear(); /// for (int i = 0; i < filtersConfig.FiltersCount; i++) { Filters.IFilter filter = Factory.LoadFilter(filtersConfig.FilterName[i], filtersConfig.FilterData[i]); filters.Add(filter); filtersFlowLayoutPanel.Controls.Add(filter.GetFilterUI()); } } } private void saveQueryBtn_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); FiltersConfig filtersConfig = new FiltersConfig(filters.Count); try { for (int i = 0; i < filters.Count; i++) { filtersConfig.FilterName[i] = filters[i].GetThisFilterName(); sb.Clear(); filters[i].UI2Data(); filters[i].Save(sb); filtersConfig.FilterData[i] = sb.ToString(); } } catch (Exception exc) { MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } SaveFileDialog dlg = new SaveFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { filtersConfig.Save(dlg.FileName); } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { } private void checkBox2_CheckedChanged(object sender, EventArgs e) { } private void checkBox3_CheckedChanged(object sender, EventArgs e) { } private void executeQueryBtn_Click(object sender, EventArgs e) { try { foreach (var filter in filters) filter.UI2Data(); /// Update filter data IList waterMeters = null; IList waterMeters2; Results.DB.ConnectionString = checkBox1.Checked ? Program.LocalSettings.ConnectionString1 : (checkBox2.Checked ? Program.LocalSettings.ConnectionString2 : (checkBox3.Checked ? Program.LocalSettings.ConnectionString3 : Program.LocalSettings.ConnectionString1)); ISession[] sessions = new ISession[] { Results.DB.CreateSession() }; foreach (var filter in filters) { waterMeters2 = filter.ExecuteQuery(sessions, waterMeters); waterMeters = waterMeters2; } resultsListBox.Items.Clear(); foreach (var wm in waterMeters) resultsListBox.Items.Add(wm.ToString()); } catch (Exception exc) { MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } } }