'completeTestInfo' reloaded when only the procedure changes (and not wmTypeID), usefull for iPerlSpecial, ver. 2.18.1174

This commit is contained in:
Milan Hanajik
2019-03-21 15:36:42 +01:00
parent c855a18c61
commit b8c4f35b1a
2 changed files with 30 additions and 14 deletions
@@ -9,6 +9,7 @@ using log4net;
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Config; using Config;
using Config.Entities; using Config.Entities;
using System.Text;
namespace TBF.BenchControl.Output.DB.SensusOracle namespace TBF.BenchControl.Output.DB.SensusOracle
{ {
@@ -61,6 +62,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
/// ///
int wmTypeId; int wmTypeId;
int wmTypeRevision; int wmTypeRevision;
string procedureSignature;
IList<SensusTestInfo> oracleTestInfo; /// Raw incomplete test info from Oracle DB (or null) IList<SensusTestInfo> oracleTestInfo; /// Raw incomplete test info from Oracle DB (or null)
SensusTestInfo[] completeTestInfo; /// Complete TBF test info obtained as the best match (never null when oracleTestInfo != null) SensusTestInfo[] completeTestInfo; /// Complete TBF test info obtained as the best match (never null when oracleTestInfo != null)
@@ -330,19 +332,26 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
try try
{ {
if (oracleTestInfo == null || (wmTypeId == 0) || (wmTypeId != wm.WaterMeterData.WMTypeId)) IList<string> wmTestNames = new List<string>();
StringBuilder procedureSignatureSB = new StringBuilder();
foreach (var mtr in wm.MeterTestRslts)
{
wmTestNames.Add(mtr.Name());
procedureSignatureSB.Append(mtr.Name());
procedureSignatureSB.Append("~");
}
if (oracleTestInfo == null || (wmTypeId == 0) || (wmTypeId != wm.WaterMeterData.WMTypeId) || (procedureSignature != procedureSignatureSB.ToString()))
{ {
int wmTR; int wmTR;
IList<SensusTestInfo> rti = GetOracleTestInfo(conn, wm.WaterMeterData.WMTypeId, out wmTR); IList<SensusTestInfo> rti = GetOracleTestInfo(conn, wm.WaterMeterData.WMTypeId, out wmTR);
if (rti != null) if (rti != null)
{ {
IList<string> wmTestNames = new List<string>(); /// All 5 updated together
foreach (var mtr in wm.MeterTestRslts) wmTestNames.Add(mtr.Name());
/// All 4 updated together
wmTypeId = wm.WaterMeterData.WMTypeId; wmTypeId = wm.WaterMeterData.WMTypeId;
wmTypeRevision = wmTR; wmTypeRevision = wmTR;
procedureSignature = procedureSignatureSB.ToString();
oracleTestInfo = rti; oracleTestInfo = rti;
completeTestInfo = SensusTestInfo.GetBestMatch(rti, wmTestNames); completeTestInfo = SensusTestInfo.GetBestMatch(rti, wmTestNames);
@@ -682,21 +691,28 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
/// <param name="b">Batch</param> /// <param name="b">Batch</param>
void SaveBatchData(OracleConnection conn, Results.Entities.Batch b) void SaveBatchData(OracleConnection conn, Results.Entities.Batch b)
{ {
if ((wmTypeId != b.WaterMeters[0].WaterMeterData.WMTypeId) || (oracleTestInfo == null) || (wmTypeRevision == 0)) IList<string> wmTestNames = new List<string>();
StringBuilder procedureSignatureSB = new StringBuilder();
foreach (var tr in b.TestRslts)
{
wmTestNames.Add(tr.Name());
procedureSignatureSB.Append(tr.Name());
procedureSignatureSB.Append("~");
}
if ((oracleTestInfo == null) || (wmTypeId != b.WaterMeters[0].WaterMeterData.WMTypeId) || (wmTypeRevision == 0) || (procedureSignature != procedureSignatureSB.ToString()))
{ {
int wmTR = 0; int wmTR = 0;
IList<SensusTestInfo> ti = GetOracleTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, out wmTR); IList<SensusTestInfo> ti = GetOracleTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, out wmTR);
if (ti != null) if (ti != null)
{ {
IList<string> wmTestNames = new List<string>(); /// All 5 updated together
foreach (var tr in b.TestRslts) wmTestNames.Add(tr.Name());
/// All 4 updated together
oracleTestInfo = ti;
completeTestInfo = SensusTestInfo.GetBestMatch(oracleTestInfo, wmTestNames);
wmTypeId = b.WaterMeters[0].WaterMeterData.WMTypeId; wmTypeId = b.WaterMeters[0].WaterMeterData.WMTypeId;
wmTypeRevision = wmTR; wmTypeRevision = wmTR;
procedureSignature = procedureSignatureSB.ToString();
oracleTestInfo = ti;
completeTestInfo = SensusTestInfo.GetBestMatch(oracleTestInfo, wmTestNames);
foreach (var cti in completeTestInfo) foreach (var cti in completeTestInfo)
{ {
+2 -2
View File
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("2.18.1173.0")] [assembly: AssemblyVersion("2.18.1174.0")]
[assembly: AssemblyFileVersion("2.18.1173.0")] [assembly: AssemblyFileVersion("2.18.1174.0")]