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")]