init
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using DTS.Slice.Users;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace DTS.Common.Import
|
||||
{
|
||||
public class DTSXMLParseImport : IParseImport
|
||||
{
|
||||
|
||||
private ImportObject _importObject;
|
||||
private readonly Func<bool> _isCancelled;
|
||||
private readonly IImportNotification _importNotification;
|
||||
private readonly bool _skipNormalizing;
|
||||
public List<IUIItems> UIItems { get; set; }
|
||||
public DTSXMLParseImport(ImportObject importObject, IImportNotification importNotification, Func<bool> isCancelled = null, bool skipNormalizing = false)
|
||||
{
|
||||
_isCancelled = isCancelled;
|
||||
_importObject = importObject;
|
||||
_importNotification = importNotification;
|
||||
_skipNormalizing = skipNormalizing;
|
||||
}
|
||||
public ImportObject Parse(IEnumerable<string> importFiles)
|
||||
{
|
||||
XMLParseProcessor parseProcesser = new XMLParseProcessor(_importObject, _importNotification, importFiles, _isCancelled, _skipNormalizing);
|
||||
parseProcesser.UIItems = UIItems;
|
||||
_importObject = parseProcesser.Process();
|
||||
AssignLinkedDASSerials(ref _importObject);
|
||||
return _importObject;
|
||||
}
|
||||
|
||||
private void AssignLinkedDASSerials(ref ImportObject importObject)
|
||||
{
|
||||
foreach (var h in importObject.Hardware())
|
||||
{
|
||||
if (!h.IsPseudoRack()) continue;
|
||||
var matches = from hw in importObject.Hardware() where hw.ParentDAS == h.SerialNumber select hw.SerialNumber;
|
||||
var enumerable = matches as string[] ?? matches.ToArray();
|
||||
if (enumerable.Any())
|
||||
{
|
||||
h.LinkedDASSerials = enumerable.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
using DTS.Common.Enums.DBExport;
|
||||
using DTS.Common.Import.Interfaces;
|
||||
using DTS.Common.Import.XML;
|
||||
using DTS.Common.Utils;
|
||||
using DTS.Slice.Users;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
|
||||
namespace DTS.Common.Import
|
||||
{
|
||||
public static class XmlParserFactory
|
||||
{
|
||||
public static List<IUIItems> UIItems { get; set; }
|
||||
private static Func<bool> _isCancelled;
|
||||
public static IImportNotification ImportNotification { get; set; }
|
||||
private static List<IParseVariant> LessThan20XMLVersion(XmlElement node, double importVersion)
|
||||
{
|
||||
List<IParseVariant> parseVariants = new List<IParseVariant>();
|
||||
//FB 36879 prevent exception if there is no node to process
|
||||
if (node == null || node.ChildNodes == null)
|
||||
{
|
||||
return parseVariants;
|
||||
}
|
||||
foreach (var childNode in node.ChildNodes)
|
||||
{
|
||||
if (childNode is XmlElement)
|
||||
{
|
||||
var root = childNode as XmlElement;
|
||||
var name = root.Name;
|
||||
if (Enum.TryParse(name, out TopLevelFields field))
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case TopLevelFields.CustomChannels:
|
||||
var xmlCustomChannels = new XMLParseMMECustomChannels(root, importVersion, _isCancelled);
|
||||
parseVariants.Add(xmlCustomChannels);
|
||||
break;
|
||||
case TopLevelFields.CustomMainLocs:
|
||||
var xmlCustomMainLocs = new XMLParseMMECustomMainLocations(root, importVersion, _isCancelled);
|
||||
parseVariants.Add(xmlCustomMainLocs);
|
||||
break;
|
||||
case TopLevelFields.DASList:
|
||||
var xmlParseDasList = new XMLParseDASList(root, importVersion, _isCancelled);
|
||||
parseVariants.Add(new XMLPre20ParseDASList(root, importVersion, xmlParseDasList, _isCancelled));
|
||||
break;
|
||||
case TopLevelFields.Sensors:
|
||||
var xmlParseSensors = new XMLParseSensors(root, importVersion, _isCancelled);
|
||||
xmlParseSensors.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(new XMLPre20ParseSensors(root, importVersion, xmlParseSensors, _isCancelled));
|
||||
break;
|
||||
case TopLevelFields.Calibrations:
|
||||
var xmlParseCalibrations = new XMLParseCalibrations(root, importVersion, _isCancelled);
|
||||
xmlParseCalibrations.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(new XMLPre20ParseCalibrations(root, importVersion, xmlParseCalibrations, _isCancelled));
|
||||
break;
|
||||
case TopLevelFields.GroupTemplates:
|
||||
var xmlParseGroupTemplates = new XMLParseGroupTemplates(root, importVersion, null, _isCancelled);
|
||||
parseVariants.Add(new XMLPre20ParseGroupTemplates(root, importVersion, xmlParseGroupTemplates, _isCancelled));
|
||||
break;
|
||||
case TopLevelFields.Groups:
|
||||
var xmlParseGroups = new XMLParseGroups(root, importVersion);
|
||||
xmlParseGroups.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(new XMLPre20ParseGroups(root, importVersion, null, xmlParseGroups, _isCancelled));
|
||||
break;
|
||||
case TopLevelFields.TestSetups:
|
||||
var xmlParseTestSetups = new XMLParseTestSetups(root, importVersion, _isCancelled);
|
||||
xmlParseTestSetups.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(new XMLPre20ParseTestSetups(root, importVersion, DTS.Common.Enums.IsoViewMode.ISOOnly, xmlParseTestSetups, _isCancelled));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return parseVariants;
|
||||
}
|
||||
|
||||
|
||||
private static List<IParseVariant> GreaterOrEqual20XMLVersion(XmlElement node, double importVersion)
|
||||
{
|
||||
List<IParseVariant> parseVariants = new List<IParseVariant>();
|
||||
foreach (var childNode in node.ChildNodes)
|
||||
{
|
||||
if (childNode is XmlElement)
|
||||
{
|
||||
var root = childNode as XmlElement;
|
||||
var name = root.Name;
|
||||
if (Enum.TryParse(name, out TopLevelFields field))
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
|
||||
case TopLevelFields.LabDetails:
|
||||
var xmlParseLab = new XMLParseLabDetails(root, importVersion, _isCancelled);
|
||||
xmlParseLab.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseLab);
|
||||
break;
|
||||
case TopLevelFields.CustomerDetails:
|
||||
var xmlParseCustomer = new XMLParseCustomerDetails(root, importVersion, _isCancelled);
|
||||
xmlParseCustomer.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseCustomer);
|
||||
break;
|
||||
case TopLevelFields.TestEngineerDetails:
|
||||
var xmlParseTestEngineer = new XMLParseTestEngineerDetails(root, importVersion, _isCancelled);
|
||||
xmlParseTestEngineer.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseTestEngineer);
|
||||
break;
|
||||
case TopLevelFields.DASList:
|
||||
var xmlParseDasList = new XMLParseDASList(root, importVersion, _isCancelled);
|
||||
xmlParseDasList.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseDasList);
|
||||
break;
|
||||
case TopLevelFields.Sensors:
|
||||
var xmlParseSensors = new XMLParseSensors(root, importVersion, _isCancelled);
|
||||
xmlParseSensors.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseSensors);
|
||||
break;
|
||||
case TopLevelFields.Calibrations:
|
||||
var xmlParseCalibrations = new XMLParseCalibrations(root, importVersion, _isCancelled);
|
||||
xmlParseCalibrations.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseCalibrations);
|
||||
break;
|
||||
case TopLevelFields.GroupTemplates:
|
||||
var xmlParseGroupTemplates = new XMLParseGroupTemplates(root, importVersion, null, _isCancelled);
|
||||
parseVariants.Add(xmlParseGroupTemplates);
|
||||
break;
|
||||
case TopLevelFields.Groups:
|
||||
var xmlParseGroups = new XMLParseGroups(root, importVersion, _isCancelled);
|
||||
xmlParseGroups.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseGroups);
|
||||
break;
|
||||
case TopLevelFields.TestSetups:
|
||||
var xmlParseTestSetups = new XMLParseTestSetups(root, importVersion, _isCancelled);
|
||||
xmlParseTestSetups.ImportNotification = ImportNotification;
|
||||
parseVariants.Add(xmlParseTestSetups);
|
||||
break;
|
||||
case TopLevelFields.Users:
|
||||
var xmlParseUsers = new XMLParseUsers(root, importVersion, UIItems, _isCancelled);
|
||||
parseVariants.Add(xmlParseUsers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return parseVariants;
|
||||
}
|
||||
|
||||
public static IEnumerable<IParseVariant> CreateXMLParsers(string fileName, IImportNotification importNotification, Func<bool> isCanceled)
|
||||
{
|
||||
double importVersion = -1;
|
||||
_isCancelled = isCanceled;
|
||||
ImportNotification = importNotification;
|
||||
var node = FileUtils.GetImportXmlNode(fileName, null, out importVersion);
|
||||
|
||||
if (importVersion < FileUtils.DataPRO20XmlVersion)
|
||||
{
|
||||
return LessThan20XMLVersion(node, importVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GreaterOrEqual20XMLVersion(node, importVersion);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user