Beispiel #1
0
        public static void Write(this XmlPortTableElement xmlPortTableElement, CSideWriter writer)
        {
            var relevantProperties = xmlPortTableElement.Properties.Where(p => p.HasValue);

            WriteDeclaration(xmlPortTableElement.ID, xmlPortTableElement.NodeName, xmlPortTableElement.IndentationLevel, "Element", "Table", relevantProperties.Any(), writer);
            relevantProperties.Write(PropertiesStyle.Field, writer);
            writer.Write(IndentationAfterLastTrigger(relevantProperties));
            writer.WriteLine("}");
            writer.Unindent();
            writer.InnerWriter.WriteLine();
        }
        protected override IEnumerable <XmlPortNode> CreateItems()
        {
            var xmlPortTableElement = new XmlPortTableElement(Name, GetIndentation(), ID);

            xmlPortTableElement.Properties.AutoReplace = NullableBooleanFromSwitch(nameof(AutoReplace));
            xmlPortTableElement.Properties.AutoSave    = NullableBooleanFromSwitch(nameof(AutoSave));
            xmlPortTableElement.Properties.AutoUpdate  = NullableBooleanFromSwitch(nameof(AutoUpdate));
            xmlPortTableElement.Properties.CalcFields.AddRange(CalcFields);
            xmlPortTableElement.Properties.LinkTable            = LinkTable;
            xmlPortTableElement.Properties.LinkTableForceInsert = NullableBooleanFromSwitch(nameof(LinkTableForceInsert));
            xmlPortTableElement.Properties.MaxOccurs            = MaxOccurs;
            xmlPortTableElement.Properties.MinOccurs            = MinOccurs;
            xmlPortTableElement.Properties.NamespacePrefix      = NamespacePrefix;
            xmlPortTableElement.Properties.OnAfterGetRecord.Set(OnAfterGetRecord);
            xmlPortTableElement.Properties.OnAfterInitRecord.Set(OnAfterInitRecord);
            xmlPortTableElement.Properties.OnAfterInsertRecord.Set(OnAfterInsertRecord);
            xmlPortTableElement.Properties.OnAfterModifyRecord.Set(OnAfterModifyRecord);
            xmlPortTableElement.Properties.OnBeforeInsertRecord.Set(OnBeforeInsertRecord);
            xmlPortTableElement.Properties.OnBeforeModifyRecord.Set(OnBeforeModifyRecord);
            xmlPortTableElement.Properties.OnPreXMLItem.Set(OnPreXMLItem);
            xmlPortTableElement.Properties.ReqFilterFields.AddRange(ReqFilterFields);
            xmlPortTableElement.Properties.SourceTable           = SourceTable;
            xmlPortTableElement.Properties.SourceTableView.Key   = SourceTableViewKey;
            xmlPortTableElement.Properties.SourceTableView.Order = SourceTableViewOrder;
            xmlPortTableElement.Properties.Temporary             = NullableBooleanFromSwitch(nameof(Temporary));
            xmlPortTableElement.Properties.VariableName          = VariableName;
            xmlPortTableElement.Properties.Width = Width;

            yield return(xmlPortTableElement);

            if (ChildNodes != null)
            {
                var variables = new List <PSVariable>()
                {
                    new PSVariable("NodeIndentation", GetIndentation() + 1)
                };
                var childNodes = ChildNodes.InvokeWithContext(null, variables).Select(c => c.BaseObject);

                xmlPortTableElement.Properties.LinkFields.AddRange(childNodes.OfType <LinkField>());
                xmlPortTableElement.Properties.SourceTableView.TableFilter.AddRange(childNodes.OfType <TableFilterLine>());


                foreach (var childNode in childNodes.OfType <XmlPortNode>())
                {
                    yield return(childNode);
                }
            }
        }