using DTS.Common.Enums.DBExport; using DTS.Common.Enums.Sensors; using DTS.Common.Import.Interfaces; using DTS.Common.Interface; using DTS.Common.Utils; using DTS.SensorDB; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace DTS.Common.Import.XML { public class XMLParseCalibrations : XMLParseBase { public XMLParseCalibrations(XmlElement root, double importedVersion, Func isCancelled = null) : base(root, importedVersion, isCancelled) { } public IImportNotification ImportNotification { get; set; } public override void Parse(ref ImportObject importObject) { ImportNotification?.SetStatus(new ImportStatus { PossibleStatus = Enums.PossibleStatus.Reading, ExtraStatus = Enums.ImportExtraStatus.ReadingCalibrations }); var scs = ParseCalibrations(_root); var newRoot = ConvertCalibrations(scs); importObject.AddCalibrations(ParseCalibrations(newRoot)); } public XmlElement ConvertCalibrations(IEnumerable calibrations) { _writer.WriteStartElement(TopLevelFields.Calibrations.ToString()); foreach (var c in calibrations) { _writer.Flush(); c.WriteXML(ref _writer); _writer.Flush(); } _writer.WriteEndElement(); return GetXmlElement(); } public IEnumerable ParseCalibrations(XmlElement root) { List scs = new List(); if (_importedVersion >= FileUtils.DataPROPre20XmlVersion) { foreach (var node in root.ChildNodes) { if (IsCancelled()) { return scs; } if (node is XmlElement) { var sc = new SensorCalibration(); sc.ReadXML(node as XmlElement); scs.Add(sc); } } } if (_importedVersion == 1.0D) { foreach (var node in root.ChildNodes) { if (IsCancelled()) { return scs; } if (node is XmlElement) { var sc = new SensorCalibration(); sc.ReadXML(node as XmlElement); sc.Records.Records[0].AtCapacity = false; if (sc.NonLinear) { sc.Records.Records[0].SensitivityUnits = SensorConstants.SensUnits.NONE; } else if (sc.IsProportional) { sc.Records.Records[0].SensitivityUnits = SensorConstants.SensUnits.mVperVperEU; } else { sc.Records.Records[0].SensitivityUnits = SensorConstants.SensUnits.mVperEU; } scs.Add(sc); } } } return scs; } } }