diff --git a/Config/Config.csproj b/Config/Config.csproj index 4fc3c9933..3981b9192 100644 --- a/Config/Config.csproj +++ b/Config/Config.csproj @@ -39,6 +39,9 @@ ..\packages\Iesi.Collections.3.2.0.4000\lib\Net35\Iesi.Collections.dll + + ..\packages\log4net.2.0.2\lib\net40-full\log4net.dll + ..\packages\MySql.Data.6.6.5\lib\net20\MySql.Data.dll diff --git a/Config/Entities/Test.cs b/Config/Entities/Test.cs index 5a1c705cb..033e21ad4 100644 --- a/Config/Entities/Test.cs +++ b/Config/Entities/Test.cs @@ -17,6 +17,8 @@ namespace Config.Entities public virtual string Name { get; set; } public virtual int Part { get; set; } /// Part=0 ... test of all WM-s /// Part>0 ... part of a set of tests with the same Name: subset of WM-s is given by MetersPath + public virtual bool Publish { get; set; } + public virtual bool Evaluate { get; set; } public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h] public virtual float Qto { get; set; } /// Water flow high limit in [m3/h] public virtual float Volume { get; set; } /// Test volume (target) in [l] @@ -57,6 +59,8 @@ namespace Config.Entities /// /// Default values /// + Publish = true; + Evaluate = true; Repeats = 1; Emptying = false; Zeroing = false; @@ -85,6 +89,8 @@ namespace Config.Entities Test result = new Test(Name, ItemNr, Procedure); result.Part = Part; + result.Publish = Publish; + result.Evaluate = Evaluate; result.Qfrom = Qfrom; result.Qto = Qto; result.Volume = Volume; diff --git a/Config/Mappings/TestMap.cs b/Config/Mappings/TestMap.cs index 87cedb80f..439fb8f92 100644 --- a/Config/Mappings/TestMap.cs +++ b/Config/Mappings/TestMap.cs @@ -15,6 +15,8 @@ namespace Config.Mappings Map(x => x.ItemNr); Map(x => x.Name); Map(x => x.Part); + Map(x => x.Publish); + Map(x => x.Evaluate); Map(x => x.Qfrom); Map(x => x.Qto); Map(x => x.Volume); diff --git a/Results/DB.cs b/Results/DB.cs index d9339eadc..a9f63e1ea 100644 --- a/Results/DB.cs +++ b/Results/DB.cs @@ -2,8 +2,10 @@ /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; +using System.Collections.Generic; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; +using log4net; using NHibernate; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; @@ -12,6 +14,8 @@ namespace Results { public static class DB { + static readonly ILog log = LogManager.GetLogger(typeof(DB)); + /// Session factory for all regular sessions, not for CreateEmptyResultsDB(). public static ISessionFactory SessionFactory; @@ -62,7 +66,7 @@ namespace Results break; } - cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf()); + cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf()); if (createDB) { @@ -154,5 +158,27 @@ namespace Results return true; } - } + + + /// + /// Shared data + /// + public static IList TestDataList; + public static IList ComponentsList; + public static IList WaterMeterDataList; + + + /// + /// Loads shared data from the database + /// + /// Throws NHibernate exceptions + public static void LoadSharedData() + { + ISession session = DB.CreateSession(); + + TestDataList = session.CreateQuery("FROM TestData").List(); + ComponentsList = session.CreateQuery("FROM Components").List(); + WaterMeterDataList = session.CreateQuery("FROM WaterMeterData").List(); + } + } } diff --git a/Results/Data.cs b/Results/Data.cs new file mode 100644 index 000000000..aaa1a26ee --- /dev/null +++ b/Results/Data.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Results.Entities; + +namespace Results +{ + public class Data + { + public int WMPositionsCount; + + public Batch Batch; + public IList TestRslts; + public IList MeterTestRslts; + + public WaterMeter[] WaterMeters; + + public IDictionary TestRsltsMap; + public IDictionary MeterTestRsltsMap; + + public Data() + { + TestRsltsMap = new Dictionary(); + MeterTestRsltsMap = new Dictionary(); + } + + public static Data NewFromProcedure(Config.Entities.Procedure procedure, + WaterMeterData[] waterMeterDatas, + int batchNr, + int benchId, + string programVer, + string user) + { + Data d = new Data(); + + d.WMPositionsCount = waterMeterDatas.Length; + d.Batch = new Batch() + { + BenchId = benchId, + BatchNr = batchNr, + ProgramVersion = programVer, + UserName = user, + ProcedureName = procedure.Name, + ProcedureRevision = procedure.Revision, + StartTime = DateTime.Now + }; + foreach (var t in procedure.Tests) + { + } + + d.WaterMeters = new WaterMeter[d.WMPositionsCount]; + for (int i = 0; i < d.WMPositionsCount; i++) + { + if (waterMeterDatas[i] != null) + { + d.WaterMeters[i] = new WaterMeter(d.Batch, waterMeterDatas[i]); + } + } + + foreach (var t in procedure.Tests) + { + if (t.Publish) + { + d.Batch.Tests.Add(new TestData(t)); + + for (int i = 0; i < d.WMPositionsCount; i++) + { + if (d.WaterMeters[i] != null) + { + if (procedure.MetersKind == Config.Entities.MetersKind.Single) + { + //d.WaterMeters[i].MeterTestRslts.Add( + } + //else + //{ + //} + } + } + } + } + return d; + } + + /// + /// Adds non-null water meters from the array to a Batch water meters list. + /// This method should be used when results are prepared and + /// all disabled water meters are deleted. + /// + public void AddWaterMetersToBatch() + { + for (int i = 0; i < WMPositionsCount; i++) + { + if (WaterMeters[i] != null) Batch.WaterMeters.Add(WaterMeters[i]); + } + } + } +} diff --git a/Results/DataDeposit.cs b/Results/DataDeposit.cs deleted file mode 100644 index a24660188..000000000 --- a/Results/DataDeposit.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Results -{ - public class DataDeposit - { - } -} diff --git a/Results/Entities/TestData.cs b/Results/Entities/TestData.cs index 6e15c55c3..08ca0005d 100644 --- a/Results/Entities/TestData.cs +++ b/Results/Entities/TestData.cs @@ -31,7 +31,7 @@ namespace Results.Entities Method = string.Empty; } - public TestData(Config.Entities.Test test, bool evaluate) + public TestData(Config.Entities.Test test) : this() { Name = test.Name; @@ -44,7 +44,7 @@ namespace Results.Entities ErrLimLo = (double)test.ErrLimLo; ErrLimHi = (double)test.ErrLimHi; Uncertainty = (double)test.Uncertainty; - Evaluate = evaluate; + Evaluate = test.Evaluate; } public virtual bool Equals(TestData td) diff --git a/Results/Entities/WaterMeter.cs b/Results/Entities/WaterMeter.cs index a9810771e..f12556896 100644 --- a/Results/Entities/WaterMeter.cs +++ b/Results/Entities/WaterMeter.cs @@ -77,10 +77,11 @@ namespace Results.Entities /// /// Constructor used to construct WaterMeterResults from the first meter test result /// - public WaterMeter(MeterTestResult meterTestResult, int benchId) + public WaterMeter(Batch batch, WaterMeterData waterMeterData) : this() { - /// TODO + Batch = batch; + WaterMeterData = waterMeterData; } /// diff --git a/Results/Results.csproj b/Results/Results.csproj index ee2d9a9ab..1620303a6 100644 --- a/Results/Results.csproj +++ b/Results/Results.csproj @@ -38,6 +38,9 @@ ..\packages\Iesi.Collections.3.2.0.4000\lib\Net35\Iesi.Collections.dll + + ..\packages\log4net.2.0.2\lib\net40-full\log4net.dll + ..\packages\MySql.Data.6.6.5\lib\net20\MySql.Data.dll @@ -53,7 +56,7 @@ - + diff --git a/ResultsBrowser/DataDeposit.cs b/ResultsBrowser/DataDeposit.cs index d7c83ca59..cbe8c2249 100644 --- a/ResultsBrowser/DataDeposit.cs +++ b/ResultsBrowser/DataDeposit.cs @@ -71,7 +71,7 @@ namespace ResultsBrowser { if (!waterMetersCreated) { - foreach (var mtr in tr.Meters) wmResults.Add(new Results.Entities.WaterMeter(mtr, 5)); + //foreach (var mtr in tr.Meters) wmResults.Add(new Results.Entities.WaterMeter(mtr, 5)); waterMetersCreated = true; } else diff --git a/TestBenchFramework/ProcedureDlg.cs b/TestBenchFramework/ProcedureDlg.cs index c9b71f019..7d1aeb133 100644 --- a/TestBenchFramework/ProcedureDlg.cs +++ b/TestBenchFramework/ProcedureDlg.cs @@ -520,7 +520,10 @@ namespace TBF Qto, ErrLimLo, ErrLimHi, + Uncertainty, Filter, + Publish, + Evaluate, Mtrlgy2ClmnCount } @@ -534,11 +537,22 @@ namespace TBF metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_to_m3h, Width = 80 }); metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_neg_pct_chdr, Width = 100 }); metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_pos_pct_chdr, Width = 100 }); + metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Uncertainty_pct_chdr, Width = 100 }); metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = "Filter", Width = 80 }); /// Strings.Tol_red_pct_chdr + metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Publish, Width = 80 }); + metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Evaluate, Width = 80 }); //metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Red_type_chdr, Width = 80 }); //metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Err_cor_neg_pct_chdr, Width = 90 }); //metrology2ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Err_cor_pos_pct_chdr, Width = 90 }); + ComboBox yesNo1CBox = new ComboBox(); /// control for Publish + yesNo1CBox.Items.Add(Strings.yes); + yesNo1CBox.Items.Add(Strings.no); + + ComboBox yesNo2CBox = new ComboBox(); /// control for Evaluate + yesNo2CBox.Items.Add(Strings.yes); + yesNo2CBox.Items.Add(Strings.no); + metrology2Editors = new Control[] { new TextBox(), /// Name @@ -547,7 +561,10 @@ namespace TBF new TextBox(), /// Qto new TextBox(), /// Err.Lim. - new TextBox(), /// Err.Lim. + + new TextBox(), /// Uncertainty new TextBox(), /// Filter + yesNo1CBox, /// Publish + yesNo2CBox, /// Evaluate }; foreach (var ctrl in metrology2Editors) @@ -730,8 +747,10 @@ namespace TBF /// lviMetrlg2.SubItems.Add(test.ErrLimLo.ToString()); lviMetrlg2.SubItems.Add(test.ErrLimHi.ToString()); - lviMetrlg2.SubItems.Add(test.TolerRed.ToString()); - lviMetrlg2.SubItems.Add(test.RedType.ToString()); + lviMetrlg2.SubItems.Add(test.Uncertainty.ToString()); + lviMetrlg2.SubItems.Add(test.TolerRed.ToString()); + lviMetrlg2.SubItems.Add(test.Publish ? Strings.yes : Strings.no); + lviMetrlg2.SubItems.Add(test.Evaluate ? Strings.yes : Strings.no); metrology2ListViewEx.Items.Add(lviMetrlg2); @@ -818,8 +837,15 @@ namespace TBF float tmp; if (Utils.TryParseSFloat(lvi.SubItems[(int)Mtrlgy2Clmn.ErrLimLo].Text, out tmp)) entity.ErrLimLo = tmp; if (Utils.TryParseSFloat(lvi.SubItems[(int)Mtrlgy2Clmn.ErrLimHi].Text, out tmp)) entity.ErrLimHi = tmp; - if (Utils.TryParseUFloat(lvi.SubItems[(int)Mtrlgy2Clmn.Filter].Text, out tmp)) entity.TolerRed = (double)tmp; - } + if (Utils.TryParseUFloat(lvi.SubItems[(int)Mtrlgy2Clmn.Uncertainty].Text, out tmp)) entity.Uncertainty = tmp; + if (Utils.TryParseUFloat(lvi.SubItems[(int)Mtrlgy2Clmn.Filter].Text, out tmp)) entity.TolerRed = (double)tmp; + + if (lvi.SubItems[(int)Mtrlgy2Clmn.Publish].Text.Equals(Strings.yes)) entity.Publish = true; + else if (lvi.SubItems[(int)Mtrlgy2Clmn.Publish].Text.Equals(Strings.no)) entity.Publish = false; + + if (lvi.SubItems[(int)Mtrlgy2Clmn.Evaluate].Text.Equals(Strings.yes)) entity.Evaluate = true; + else if (lvi.SubItems[(int)Mtrlgy2Clmn.Evaluate].Text.Equals(Strings.no)) entity.Evaluate = false; + } } void UpdateFromProcessTab() diff --git a/TestBenchFramework/Program.cs b/TestBenchFramework/Program.cs index 5569100b8..1e295ff58 100644 --- a/TestBenchFramework/Program.cs +++ b/TestBenchFramework/Program.cs @@ -227,6 +227,7 @@ namespace TBF Results.DB.DbType = Config.Data.CurrentBench.WaterMetersDBSettings.DbType; Results.DB.ConnectionString = Config.Data.CurrentBench.WaterMetersDBSettings.ConnectionString; + Results.DB.LoadSharedData(); retryLogin = false; break; diff --git a/TestBenchFramework/Resources/Strings.Designer.cs b/TestBenchFramework/Resources/Strings.Designer.cs index bae79ee3f..a29c2058b 100644 --- a/TestBenchFramework/Resources/Strings.Designer.cs +++ b/TestBenchFramework/Resources/Strings.Designer.cs @@ -2952,6 +2952,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Uncertainty [%]. + /// + internal static string Uncertainty_pct_chdr { + get { + return ResourceManager.GetString("Uncertainty_pct_chdr", resourceCulture); + } + } + /// /// Looks up a localized string similar to Unhandled error occured in . /// diff --git a/TestBenchFramework/Resources/Strings.de.resx b/TestBenchFramework/Resources/Strings.de.resx index 4a7764f56..3bddb0f44 100644 --- a/TestBenchFramework/Resources/Strings.de.resx +++ b/TestBenchFramework/Resources/Strings.de.resx @@ -999,4 +999,7 @@ Prüfung {0} bearbeitet + + Unsicherheit [%] + \ No newline at end of file diff --git a/TestBenchFramework/Resources/Strings.resx b/TestBenchFramework/Resources/Strings.resx index b432172f7..c1eef19a3 100644 --- a/TestBenchFramework/Resources/Strings.resx +++ b/TestBenchFramework/Resources/Strings.resx @@ -1165,4 +1165,7 @@ Results + + Uncertainty [%] + \ No newline at end of file