Files

95 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Xml;
using Config.Entities;
using log4net;
namespace TBF.Rig.Output.Printers.GroupPrinting.Single
{
public class PrinterDef
{
static readonly ILog log = LogManager.GetLogger(typeof(PrinterCfgCtrl));
public String Name { get; set; }
public String ObjName { get; set; }
public override bool Equals(object obj)
{
if (obj == null || !(obj is PrinterDef))
{
return false;
}
return Name.Equals(((PrinterDef)obj).Name) &&
ObjName.Equals(((PrinterDef)obj).ObjName);
}
public override string ToString()
{
return $"{Name}:{ObjName}";
}
public Component toComponent(IList<Component> components)
{
foreach (Component component in components)
{
if (component.Name.Equals(Name) && component.ClassName.Equals(ObjName))
{
return component;
}
}
return null;
}
public static PrinterDef fromString(string formated)
{
try
{
PrinterDef printerDef = new PrinterDef();
string[] spliteStrings = formated.Split(':');
printerDef.Name = spliteStrings[0];
printerDef.ObjName = spliteStrings[1];
return printerDef;
}
catch (Exception e)
{
log.Error(e.StackTrace);
}
return null;
}
public static List<PrinterDef> fromParametersString(string parameters)
{
List<PrinterDef> printerDefs = new List<PrinterDef>();
// we have group printer
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(parameters);
XmlNodeList printerCfg = xmlDocument.GetElementsByTagName("ItemsToPrint");
// Extract the text content of each <string> element within ItemsToPrint
List<string> itemsToPrint = new List<string>();
foreach (XmlNode itemNode in printerCfg)
{
// Process each "ItemsToPrint" element here
foreach (XmlNode itemToPrint in itemNode.ChildNodes)
{
if (itemToPrint.NodeType == XmlNodeType.Element && itemToPrint.Name == "string")
{
printerDefs.Add(PrinterDef.fromString(itemToPrint.InnerText));
}
}
}
return printerDefs;
}
public static PrinterDef fromComponent(Component component)
{
PrinterDef printerDef = new PrinterDef();
printerDef.Name = component.Name;
printerDef.ObjName = component.ClassName;
return printerDef;
}
}
}