private static IEnumerable<LinkField> LinkFields(XmlPortNode xmlPortNode) { switch (xmlPortNode) { case XmlPortTableElement e: return e.Properties.LinkFields; case XmlPortTableAttribute a: return a.Properties.LinkFields; default: return Enumerable.Empty<LinkField>(); } }
private static IEnumerable<TableFilterLine> SourceTableViewFilter(XmlPortNode xmlPortNode) { switch (xmlPortNode) { case XmlPortTableElement e: return e.Properties.SourceTableView.TableFilter; case XmlPortTableAttribute a: return a.Properties.SourceTableView.TableFilter; default: return Enumerable.Empty<TableFilterLine>(); } }
public static void Write(this XmlPortNode xmlPortNode, CSideWriter writer) { TypeSwitch.Do( xmlPortNode, TypeSwitch.Case <XmlPortTextElement>(n => n.Write(writer)), TypeSwitch.Case <XmlPortTextAttribute>(n => n.Write(writer)), TypeSwitch.Case <XmlPortTableElement>(n => n.Write(writer)), TypeSwitch.Case <XmlPortTableAttribute>(n => n.Write(writer)), TypeSwitch.Case <XmlPortFieldElement>(n => n.Write(writer)), TypeSwitch.Case <XmlPortFieldAttribute>(n => n.Write(writer)) ); }
public static IEnumerable<ParameterBase> ToParameters(this XmlPortNode xmlPortNode) { yield return new SimpleParameter("ID", xmlPortNode.ID); yield return new SimpleParameter("Name", xmlPortNode.NodeName); foreach (var parameter in xmlPortNode.AllProperties.WithAValue.SelectMany(p => p.ToParameters())) { yield return parameter; } yield return new ScriptBlockParameter( "ChildNodes", xmlPortNode.Children.Select(n=>n.ToInvocation()).Cast<Statement>() .Concat(SourceTableViewFilter(xmlPortNode).Select(f=>f.ToInvocation()).Cast<Statement>()) .Concat(LinkFields(xmlPortNode).Select(l=> l.ToInvocation()).Cast<Statement>()) ); }
public static Invocation ToInvocation(this XmlPortNode xmlPortNode) => new Invocation($"New-CBreezeXmlPort{xmlPortNode.SourceType}{xmlPortNode.NodeType}", xmlPortNode.ToParameters());