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 FluentNHibernate; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; using Results; using Results.Entities; using Statistics.Resources; using Statistics.UserControls; namespace Statistics { public partial class StatisticsDlg : Form { static string[] testBenchNames = new string[] { "WR10", "WR11", "WR13", "WR14", "WR15", "PT7" }; /// #if false static string[] connectionStrings = new string[] { "SERVER=10.42.128.197; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR10 "SERVER=10.42.128.98; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR11 "SERVER=10.42.128.152; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR13 "SERVER=10.42.128.143; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR14 "SERVER=10.42.128.63; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR15 "" /// PT7 }; #else static string[] connectionStrings = new string[] { "SERVER=localhost; DATABASE=st-wr10-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR10 "SERVER=localhost; DATABASE=st-wr11-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR11 "SERVER=localhost; DATABASE=st-wr13-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR13 "SERVER=localhost; DATABASE=st-wr14-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR14 "SERVER=localhost; DATABASE=st-wr15-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR15 "" /// PT7 }; #endif /// static ISessionFactory[] sessionFactories = new ISessionFactory[6]; public StatisticsDlg() { InitializeComponent(); ManageCheckGroupBox(timePeriodCheckBox, timePeriodGroupBox); for (MidId midId = 0; midId < MidId.Count; midId++) { int i = (int)midId; midsTabControl.TabPages[i].Text = midId.ToString(); (midsTabControl.TabPages[i].Controls[0] as MidOrWaterMetersCtrl).MidId = midId; (midsTabControl.TabPages[i].Controls[0] as MidOrWaterMetersCtrl).Parent = this; } midsTabControl.TabPages[0].Text = Strings.Water_meters; Localize(); } void Localize() { Text = Strings.Statistics; timePeriodCheckBox.Text = Strings.Time_period; fromLabel1.Text = Strings.From; toLabel1.Text = Strings.To; } private void StatisticsDlg_Load(object sender, EventArgs e) { for (int i = 0; i < testBenchNames.Length; i++) { if ((i < connectionStrings.Length) && !string.IsNullOrEmpty(connectionStrings[i])) { sessionFactories[i] = null; try { sessionFactories[i] = Fluently.Configure() .Database(MySQLConfiguration.Standard.ConnectionString(connectionStrings[i])) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) .BuildSessionFactory(); } catch (Exception) { MessageBox.Show(string.Format("Cannot open one of database of {0}", testBenchNames[i]), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } } void BuildSchema(NHibernate.Cfg.Configuration config) { /// This NHibernate tool takes a configuration with mapping info and exports a database schema new NHibernate.Tool.hbm2ddl.SchemaExport(config).SetOutputFile("db_schema"); } private void ManageCheckGroupBox(CheckBox chk, GroupBox grp) { /// Make sure the CheckBox isn't in the GroupBox. This will only happen the first time. if (chk.Parent == grp) { grp.Parent.Controls.Add(chk); /// Reparent the CheckBox so it's not in the GroupBox. chk.Location = new Point(chk.Left + grp.Left, chk.Top + grp.Top); /// Adjust the CheckBox's location. chk.BringToFront(); /// Move the CheckBox to the top of the stacking order. } /// Enable or disable the GroupBox. grp.Enabled = chk.Checked; } private void timePeriodCheckBox_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(timePeriodCheckBox, timePeriodGroupBox); } public void UpdateRequest(int benchId, MidId midId) { if (benchId >= sessionFactories.Length || sessionFactories[benchId] == null || (midId == MidId.WaterMeters)) { if (midId == MidId.WaterMeters) { MessageBox.Show("Loading statistics of water meters is not implemented yet"); } else { MessageBox.Show(string.Format("Cannot load statistics of {0}", (benchId < testBenchNames.Length) ? testBenchNames[benchId] : "XY")); } return; } try { ISession session = sessionFactories[benchId].OpenSession(); var listOfComponentsWithFlowmeter = session.QueryOver() .Where(x => (x.Flowmeter == midId.ToString())) .List(); IList testRslts = new List(); foreach (var cmpnts in listOfComponentsWithFlowmeter) { var listOfRslts = session.QueryOver() .Where(x => ((x.EndTime >= dateTimeFromPicker.Value) && (x.EndTime <= dateTimeToPicker.Value))) .And(x => (x.Components == cmpnts)) .List(); foreach (var tr in listOfRslts) testRslts.Add(tr); } session.Close(); } catch (Exception exc) { MessageBox.Show(string.Format("Error loading statistics of {0}\r\n{1}", (benchId < testBenchNames.Length) ? testBenchNames[benchId] : "XY", exc.Message)); } } } }