Refactorization : BenchControl -> Rig
This commit is contained in:
@@ -0,0 +1,211 @@
|
||||
///
|
||||
/// Copyright (c) 2017-2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing.Printing;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using Results.Output.Printers.Enhanced;
|
||||
using log4net;
|
||||
|
||||
namespace TBF.Rig.Output.Printers.Enhanced
|
||||
{
|
||||
public class Printer : ComponentBase, IOperation, GenericDevices.IResultsPrinter
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(Printer));
|
||||
public override string ToString() { return string.Format("Output.Printers.Enhanced({0})", Cfg.ToString(1)); }
|
||||
|
||||
readonly PrinterCfg printerCfg;
|
||||
|
||||
public bool SupressPrinting { get { return printerCfg.SupressPrinting; } }
|
||||
|
||||
/// <summary> Data to print </summary>
|
||||
Results.Entities.Batch batch;
|
||||
|
||||
///
|
||||
/// Items to print
|
||||
///
|
||||
string header;
|
||||
IList<Results.WMeterRsltItemSpec> commonItems;
|
||||
IList<Results.WMeterRsltItemSpec> testItems;
|
||||
string footer;
|
||||
|
||||
|
||||
public Printer() { }
|
||||
|
||||
public Printer(Generic.IComponentCfg cfg)
|
||||
: base(cfg)
|
||||
{
|
||||
printerCfg = cfg as PrinterCfg;
|
||||
ApplyConfig();
|
||||
log.Warn(this.ToString());
|
||||
}
|
||||
|
||||
|
||||
void ApplyConfig()
|
||||
{
|
||||
header = string.IsNullOrEmpty(printerCfg.Header) ? string.Empty : printerCfg.Header.Replace("~", Environment.NewLine);
|
||||
commonItems = Results.WMeterRsltItemSpec.FromStrArray(printerCfg.CommonItems);
|
||||
testItems = Results.WMeterRsltItemSpec.FromStrArray(printerCfg.SelectedItems); /// TestID info will be overwritten later on
|
||||
footer = string.IsNullOrEmpty(printerCfg.Footer) ? string.Empty : printerCfg.Footer.Replace("~", Environment.NewLine);
|
||||
}
|
||||
|
||||
|
||||
#region Configuration Change Handling
|
||||
|
||||
public static void OnCfgChange(object sender, CfgChangeArgs args)
|
||||
{
|
||||
if (CfgChangeHandler == null) return;
|
||||
try { CfgChangeHandler(sender, args); }
|
||||
catch (Exception e) { log.Error("CfgChangeHandler(...) failed", e); }
|
||||
}
|
||||
|
||||
public static event EventHandler<CfgChangeArgs> CfgChangeHandler;
|
||||
|
||||
public override void StartChangeHandler()
|
||||
{
|
||||
CfgChangeHandler += delegate(object sender, CfgChangeArgs args)
|
||||
{
|
||||
PrinterCfg newCfg = args.Cfg as PrinterCfg;
|
||||
if (newCfg != null && newCfg.Name.Equals(Name))
|
||||
{
|
||||
if (args.Command == CfgChangeCmd.CfgChange)
|
||||
{
|
||||
printerCfg.PageOrientation = newCfg.PageOrientation;
|
||||
printerCfg.Template = newCfg.Template;
|
||||
printerCfg.TopMargin = newCfg.TopMargin;
|
||||
printerCfg.BottomMargin = newCfg.BottomMargin;
|
||||
printerCfg.LeftMargin = newCfg.LeftMargin;
|
||||
|
||||
printerCfg.TitFntFml = newCfg.TitFntFml;
|
||||
printerCfg.TitFntSz = newCfg.TitFntSz;
|
||||
printerCfg.TitFntSty = newCfg.TitFntSty;
|
||||
printerCfg.HdrFntFml = newCfg.HdrFntFml;
|
||||
printerCfg.HdrFntSz = newCfg.HdrFntSz;
|
||||
printerCfg.HdrFntSty = newCfg.HdrFntSty;
|
||||
printerCfg.BodyFntFml = newCfg.BodyFntFml;
|
||||
printerCfg.BodyFntSz = newCfg.BodyFntSz;
|
||||
printerCfg.BodyFntSty = newCfg.BodyFntSty;
|
||||
printerCfg.FooterFntFml = newCfg.FooterFntFml;
|
||||
printerCfg.FooterFntSz = newCfg.FooterFntSz;
|
||||
printerCfg.FooterFntSty = newCfg.FooterFntSty;
|
||||
|
||||
printerCfg.GoodOnly = newCfg.GoodOnly;
|
||||
printerCfg.SupressPrinting = newCfg.SupressPrinting;
|
||||
printerCfg.Culture = newCfg.Culture;
|
||||
printerCfg.CommonItems = newCfg.CommonItems;
|
||||
printerCfg.SelectedItems = newCfg.SelectedItems;
|
||||
printerCfg.Header = newCfg.Header;
|
||||
printerCfg.Footer = newCfg.Footer;
|
||||
|
||||
printerCfg.DocName = newCfg.DocName;
|
||||
printerCfg.NrOfCopies = newCfg.NrOfCopies;
|
||||
|
||||
printerCfg.BarcodeType = newCfg.BarcodeType;
|
||||
printerCfg.BarcodeWidth = newCfg.BarcodeWidth;
|
||||
printerCfg.BarcodeHeight = newCfg.BarcodeHeight;
|
||||
|
||||
ApplyConfig();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endregion Configuration Change Handling
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Prints the test cycle results, Events: Event.ResultsPrinted
|
||||
/// </summary>
|
||||
/// <param name="batch">Batch results to print</param>
|
||||
/// <returns>Reference to the operation</returns>
|
||||
public IOperation ProcessResultsOp(Results.Entities.Batch batch)
|
||||
{
|
||||
this.batch = batch;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
CultureInfo oriCulture = Thread.CurrentThread.CurrentCulture;
|
||||
|
||||
if (printerCfg.Culture != Culture.system)
|
||||
{
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo(printerCfg.Culture.ToString());
|
||||
}
|
||||
|
||||
string documentName;
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(printerCfg.DocName)) throw (new Exception());
|
||||
documentName = string.Format(printerCfg.DocName, batch.StartTime, batch.EndTime, batch.BatchNr);
|
||||
}
|
||||
catch
|
||||
{
|
||||
documentName = string.Format("{0:yyyyMMdd-HHmm}", batch.EndTime);
|
||||
}
|
||||
|
||||
PrintResults(batch, documentName);
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = oriCulture;
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>Event.ResultsPrinted</returns>
|
||||
public Event Run()
|
||||
{
|
||||
return Event.ResultsPrinted;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void PrintResults(Results.Entities.Batch batch, string documentName)
|
||||
{
|
||||
if (batch.WaterMeters.Count > 0)
|
||||
{
|
||||
EnhancedPrinterCfg cfg = new EnhancedPrinterCfg
|
||||
{
|
||||
PageOrientation = printerCfg.PageOrientation,
|
||||
Template = printerCfg.Template,
|
||||
TopMargin = printerCfg.TopMargin,
|
||||
BottomMargin = printerCfg.BottomMargin,
|
||||
LeftMargin = printerCfg.LeftMargin,
|
||||
TitFntFml = printerCfg.TitFntFml,
|
||||
TitFntSz = printerCfg.TitFntSz,
|
||||
TitFntSty = printerCfg.TitFntSty,
|
||||
HdrFntFml = printerCfg.HdrFntFml,
|
||||
HdrFntSz = printerCfg.HdrFntSz,
|
||||
HdrFntSty = printerCfg.HdrFntSty,
|
||||
BodyFntFml = printerCfg.BodyFntFml,
|
||||
BodyFntSz = printerCfg.BodyFntSz,
|
||||
BodyFntSty = printerCfg.BodyFntSty,
|
||||
FooterFntFml = printerCfg.FooterFntFml,
|
||||
FooterFntSz = printerCfg.FooterFntSz,
|
||||
FooterFntSty = printerCfg.FooterFntSty,
|
||||
GoodOnly = printerCfg.GoodOnly,
|
||||
SupressPrinting = printerCfg.SupressPrinting,
|
||||
CultureInfo = (printerCfg.Culture == Culture.system) ? Thread.CurrentThread.CurrentCulture : new CultureInfo(printerCfg.Culture.ToString()),
|
||||
Header = printerCfg.Header,
|
||||
CommonItems = printerCfg.CommonItems,
|
||||
TestItems = printerCfg.SelectedItems,
|
||||
Footer = printerCfg.Footer,
|
||||
BarcodeType = printerCfg.BarcodeType,
|
||||
BarcodeWidth = printerCfg.BarcodeWidth,
|
||||
BarcodeHeight = printerCfg.BarcodeHeight,
|
||||
};
|
||||
|
||||
for (int i = 1; i <= printerCfg.NrOfCopies; i++)
|
||||
{
|
||||
string docName = string.Format(((printerCfg.NrOfCopies == 1) ? "{0}" : "{0}-{1}"), documentName, i);
|
||||
new Results.Output.Printers.Enhanced.EnhancedPrintDocument(batch, cfg, docName).Print();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user