using DTS.Common.Import.Interfaces; using DTS.Common.SharedResource.Strings; 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 XMLParseGroupTemplates : XMLParseBase { private ISO.ISO13499FileDb _iSO13499FileDb; public XMLParseGroupTemplates(XmlElement root, double importedVersion, ISO.ISO13499FileDb iSO13499FileDb, Func isCancelled = null) : base(root, importedVersion, isCancelled) { _iSO13499FileDb = iSO13499FileDb; } public override void Parse(ref ImportObject importObject) { var groupTemplates = ParseGroupTemplates(ref importObject, _root); importObject.AddGroupTemplates(groupTemplates); } public IEnumerable ParseGroupTemplates(ref ImportObject importObject, XmlElement root) { List groupTemplates = new List(); var importChannels = new Dictionary(); foreach (var channel in importObject.CustomChannels()) { if (IsCancelled()) { return groupTemplates; } importChannels[channel.Id] = channel; } foreach (var node in root.ChildNodes) { if (IsCancelled()) { return groupTemplates; } if (!(node is XmlElement)) continue; var template = DataPROWin7.DataModel.TestObjectTemplate.ReadXML(node as XmlElement, importChannels); template.Embedded = template.SysBuilt || template.Embedded; // If this is an old Dynamic Group or a new Added Group, by definition it's embedded. if (template.SysBuilt) { template.OriginalTemplateName = template.TemplateName; } groupTemplates.Add(new DataPROWin7.DataModel.TestObjectTemplate(template, ref _iSO13499FileDb, importObject.TestObjects()?.ToList())); if (null == groupTemplates.Last().TestObject) { //FB8790 - TestSetup with a custom ISO testobject that is not available in the export file has an ambiguous error message. throw new NotSupportedException(string.Format(StringResources.ImportTestSetup_ISOTestObjectNotFoundInImportFile, template.TemplateNameOrOriginalTemplateName, template.TestObject)); } } return groupTemplates; } } }