From e4e8c97cfd4647da7329c99624000504a68a077c Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Fri, 18 Dec 2015 19:05:13 +0100 Subject: [PATCH] SensusOracleDatabase code cleanup, version 2.0.168 --- .../BenchControl/DB/SensusOracle/Database.cs | 182 +++++++++++------- TestBenchFramework/Properties/AssemblyInfo.cs | 4 +- 2 files changed, 114 insertions(+), 72 deletions(-) diff --git a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs index 98e427e5e..bee34ef6c 100644 --- a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs +++ b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs @@ -13,6 +13,12 @@ using TBF.Resources; namespace TBF.BenchControl.DB.SensusOracle { + enum Retv + { + OK, + Error, + } + public class Database : ComponentBase, IOperation, GenericDevices.IResultsWriter, Generic.IDevice { private static readonly ILog log = LogManager.GetLogger(typeof(Database)); @@ -218,17 +224,45 @@ namespace TBF.BenchControl.DB.SensusOracle /// Start this operation public void Start() { - batchDataSaved = false; + } - if (writer == null) return; + /// Run this operation + /// Event.ResultsWritten or Event.Error + public Event Run() + { + bool anyError = false; + if (WriteResultsToDisk() == Retv.Error) anyError = true; + if (WriteResultsToDatabase() == Retv.Error) anyError = true; - ///---------- - /// Header - ///---------- - writer.WriteLine(unsortedResults[0].ProtocolTitle); - writer.WriteLine(string.Empty); + if (anyError) + { + return Event.Error; + } + else + { + return Event.ResultsWritten; + } + } - string[] leftColumn = new string[] + /// Stop this operation + public void Stop() + { + } + + + Retv WriteResultsToDisk() + { + if (writer == null) return Retv.Error; + + try + { + ///---------- + /// Header + ///---------- + writer.WriteLine(unsortedResults[0].ProtocolTitle); + writer.WriteLine(string.Empty); + + string[] leftColumn = new string[] { "Batch number: ", "Date and time: ", @@ -239,7 +273,7 @@ namespace TBF.BenchControl.DB.SensusOracle "Ambient humidity: ", }; - string[] rightColumn = new string[] + string[] rightColumn = new string[] { unsortedResults[0].BatchNr.ToString(), //dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(), @@ -255,62 +289,82 @@ namespace TBF.BenchControl.DB.SensusOracle unsortedResults[0].AmbientHumiAve.ToString("F0") + " %", }; - /// Determine max. left column width in characters - int maxLen = 0; - foreach (var s in leftColumn) if (s.Length > maxLen) maxLen = s.Length; + /// Determine max. left column width in characters + int maxLen = 0; + foreach (var s in leftColumn) if (s.Length > maxLen) maxLen = s.Length; - /// Write aligned columns - for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++) - { - writer.Write(leftColumn[i]); - writer.Write(new string(' ', maxLen - leftColumn[i].Length + 3)); - writer.WriteLine(rightColumn[i]); - } - writer.WriteLine(string.Empty); - - /// Write text body to a disk file - if (combined) - { - for (int wmNr = 0; wmNr < Config.Data.CompoundWMsCount; wmNr++) WriteCombinedWM(wmNr + 1); /// wmNr is 0-based - } - else - { - for (int wmNr = 0; wmNr < Config.Data.WMsCount; wmNr++) /// wmNr is 0-based - { - if (!unsortedResults[0].Meters[wmNr].Disabled) - { - IList results = Utils.GetSortedTestResults(procedure, unsortedResults, Utils.PartNr(wmNr + 1, combined)); - WriteSingleWM(wmNr, wmNr + 1, results); - } - } - } - - /// Close the file - writer.Close(); - writer = null; - - - ///--------------------------------- - /// Write results to the database - ///-------------------------------- - if (!combined) - { - /// Open the Oracle database - conn.Open(); - - for (int wmNr = 0; wmNr < Config.Data.WMsCount; wmNr++) /// wmNr is 0-based + /// Write aligned columns + for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++) { - WaterMeters.iPerl.WaterMeter wMtr = (waterMeters != null && waterMeters.Count > wmNr) ? waterMeters[wmNr] as WaterMeters.iPerl.WaterMeter : null; - if (!unsortedResults[0].Meters[wmNr].Disabled && wMtr != null) + writer.Write(leftColumn[i]); + writer.Write(new string(' ', maxLen - leftColumn[i].Length + 3)); + writer.WriteLine(rightColumn[i]); + } + writer.WriteLine(string.Empty); + + /// Write text body to a disk file + if (combined) + { + for (int wmNr = 0; wmNr < Config.Data.CompoundWMsCount; wmNr++) WriteCombinedWM(wmNr + 1); /// wmNr is 0-based + } + else + { + for (int wmNr = 0; wmNr < Config.Data.WMsCount; wmNr++) /// wmNr is 0-based { - IList results = Utils.GetSortedTestResults(procedure, unsortedResults, Utils.PartNr(wmNr + 1, combined)); - SaveSingleWM2DB(wmNr, wMtr, results); + if (!unsortedResults[0].Meters[wmNr].Disabled) + { + IList results = Utils.GetSortedTestResults(procedure, unsortedResults, Utils.PartNr(wmNr + 1, combined)); + WriteSingleWM(wmNr, wmNr + 1, results); + } } } - /// Close the Oracle database - conn.Close(); + /// Close the file + writer.Close(); + writer = null; } + catch (Exception exc) + { + log.ErrorFormat("Results not saved to disk: {0}", exc.Message); + return Retv.Error; + } + + return Retv.OK; /// OK + } + + + Retv WriteResultsToDatabase() + { + batchDataSaved = false; + + if (!combined) + { + try + { + /// Open the Oracle database + conn.Open(); + + for (int wmNr = 0; wmNr < Config.Data.WMsCount; wmNr++) /// wmNr is 0-based + { + WaterMeters.iPerl.WaterMeter wMtr = (waterMeters != null && waterMeters.Count > wmNr) ? waterMeters[wmNr] as WaterMeters.iPerl.WaterMeter : null; + if (!unsortedResults[0].Meters[wmNr].Disabled && wMtr != null) + { + IList results = Utils.GetSortedTestResults(procedure, unsortedResults, Utils.PartNr(wmNr + 1, combined)); + SaveSingleWM2DB(wmNr, wMtr, results); + } + } + + /// Close the Oracle database + conn.Close(); + } + catch (Exception exc) + { + log.ErrorFormat("Results not writen to ORACLE database: {0}", exc.Message); + return Retv.Error; + } + } + + return Retv.OK; } @@ -788,17 +842,5 @@ namespace TBF.BenchControl.DB.SensusOracle writer.WriteLine(string.Empty); } - - /// Run this operation - /// Event.ResultsWritten - public Event Run() - { - return Event.ResultsWritten; - } - - /// Stop this operation - public void Stop() - { - } } } diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index eab2b4241..ade4468d6 100644 --- a/TestBenchFramework/Properties/AssemblyInfo.cs +++ b/TestBenchFramework/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.0.167.1")] -[assembly: AssemblyFileVersion("2.0.167.1")] +[assembly: AssemblyVersion("2.0.168.1")] +[assembly: AssemblyFileVersion("2.0.168.1")]