diff --git a/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs b/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs index 9efc85b22..1c50b552d 100644 --- a/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs +++ b/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs @@ -37,8 +37,7 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger /// Results to print /// Results.Entities.Batch batch; - - StreamWriter logger; /// Logs specified by LU + string fileName; public Writer() {} @@ -95,22 +94,21 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger public IOperation WriteResultsOp(Results.Entities.Batch batch) { if (currentOp != CurrentOp.None) + { throw new Exception("Sequence error"); - else - currentOp = CurrentOp.WriteResults; + } this.batch = batch; - - string fname = GetLogFileName(batch.StartTime); + currentOp = CurrentOp.WriteResults; try { - logger = new StreamWriter(System.IO.File.Create(fname)); + fileName = GetLogFileName(batch.StartTime); } catch { - logger = null; - log.ErrorFormat("Was not able to open LU log file {0}", fname); + fileName = string.Empty; + log.Error("Unable to create IperlLogger file name"); } return this; @@ -129,17 +127,24 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger { if (currentOp == CurrentOp.WriteResults) { - if (!opCompleted) + if (batch.WaterMeters.Count == 0) return Event.ResultsWritten; + + if (!opCompleted && !string.IsNullOrEmpty(fileName)) { - if (batch.WaterMeters.Count == 0) return Event.ResultsWritten; - try + log.WarnFormat("{0} : Going to write Iperl Log to file {1}", Name, fileName); + + using (TextWriter logger = new StreamWriter(System.IO.File.Create(fileName))) { - WriteLogsToDisk(logger, batch); - log.WarnFormat("Batch {0} written by {1}", batch.BatchNr, Name); - } - catch (Exception) - { - log.ErrorFormat("Error writing batch {0} by {1}", batch.BatchNr, Name); + try + { + WriteLogsToDisk(logger, batch); + log.WarnFormat("{0} : Batch {1} written OK", Name, batch.BatchNr); + } + catch + { + anyError = true; + log.WarnFormat("{0} : Failed to write batch {1}", Name, batch.BatchNr); + } } opCompleted = true; @@ -163,18 +168,20 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger } - public Retv WriteLogsToDisk(StreamWriter logger, Results.Entities.Batch batch) + public Retv WriteLogsToDisk(TextWriter logger, Results.Entities.Batch batch) { #if TURA_IPERL || TURA_SPECIAL - if (logger == null) - { - return Retv.Error; /// No logger - } - - + /// Obtain one representative water meter data Results.Entities.WaterMeter wm0 = null; - foreach (var m in batch.WaterMeters) if (m != null) { wm0 = m; break; } + foreach (var m in batch.WaterMeters) + { + if (m != null) + { + wm0 = m; + break; + } + } if (wm0 == null) { return Retv.Error; /// Not a single watermeter in the batch @@ -186,7 +193,15 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger { return Retv.Error; /// No test infos } - + else + { + log.Info("test infos:"); + foreach (var ti in testInfos) + { + log.InfoFormat("ID_WZTyp={0} Rev_WZTyp={1} PruefungsNr={2} Str={3} QBezeichnung={4} Range={5} TbfTestName={6}", + wm0.WaterMeterData.WMTypeId, wm0.WMTypeRevision, ti.PruefungsNr, ti.PruefungsNrStr, ti.QBezeichnung, ti.Range, ti.TestName); + } + } Results.Entities.WaterMeterData wmData = wm0.WaterMeterData; @@ -202,12 +217,13 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger { totalTestTime += wm0trs[j].TargetTime(); } - else if (!string.IsNullOrEmpty(testInfos[j].TestName)) - { - return Retv.Error; /// Missing test result for one of specified tests - } + //else if (!string.IsNullOrEmpty(testInfos[j].TestName)) + //{ + // return Retv.Error; /// Missing test result for one of specified tests + //} } + try { logger.WriteLine("[Wasserzähler-Daten]"); @@ -441,7 +457,7 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger } - void WriteOneToDisk(StreamWriter logger, string id, Results.Entities.TestRslt tr) + void WriteOneToDisk(TextWriter logger, string id, Results.Entities.TestRslt tr) { logger.WriteLine(string.Format("Prüfvolumen{0}={1}", id, Config.Units.ConvertTo(Unit.l, tr.TestData.TargetVolume).ToString(Program.AltCulture))); logger.WriteLine(string.Format("Prüfmasse{0}={1}", id, 0)); /// 3,72610