using DataPROWin7.DataModel; using DTS.Common.Enums.DBExport; using DTS.Common.Events; using DTS.Common.Import.Interfaces; using DTS.Common.Interface.Groups.GroupList; using DTS.Common.ISO; using DTS.Common.SharedResource.Strings; using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using System.Xml; namespace DTS.Common.Import.XML { public class XMLParseDASList : XMLParseBase { public XMLParseDASList(XmlElement root, double importedVersion, Func isCancelled = null) : base(root, importedVersion, isCancelled) { _dasIdMapping.Clear(); } public IImportNotification ImportNotification { get; set; } public List ParseDASList(XmlElement root) { List dasList = new List(); var invalidDAS = new List(); foreach (var node in root.ChildNodes) { if (IsCancelled()) { return dasList; } if (node is XmlElement) { var isoHardware = DASHardware.ReadXML(node as XmlElement); if (Enum.IsDefined(typeof(DTS.Common.Enums.Hardware.HardwareTypes), isoHardware.DASType)) { dasList.Add(new DASHardware(isoHardware)); } else { invalidDAS.Add(isoHardware.SerialNumber); } } } if (invalidDAS.Any()) { //??? } return dasList; } private XmlElement ConvertDASList(List dasList) { _writer.WriteStartElement(TopLevelFields.DASList.ToString()); var count = -2; //Start the normalization at -2, since channels have a DASId of -1 if unassigned (FB 13544) foreach (var h in dasList) { _dasIdMapping[h.DASId] = count; h.SetDASId(count); count--; _writer.Flush(); h.WriteXML(ref _writer); _writer.Flush(); } _writer.WriteEndElement(); return GetXmlElement(); } public override void Parse(ref ImportObject importObject) { ImportNotification?.SetStatus(new ImportStatus { PossibleStatus = Enums.PossibleStatus.Reading, ExtraStatus = Enums.ImportExtraStatus.ReadingHardware }); var dasList = ParseDASList(_root); var newRoot = ConvertDASList(dasList); importObject.AddHardwareList(ParseDASList(newRoot)); } } }