Ejemplo n.º 1
0
        public FileFixedExtract(AbstractConnection connection, Entity entity, int top = 0) {
            var fileInfo = new FileInfo(connection.File);

            _entity = entity;
            _top = top;
            _fields = _entity.Fields.WithInput().ToArray();
            _fullName = fileInfo.FullName;
            _name = fileInfo.Name;
            _errorMode = connection.ErrorMode;
            int ignoreFirstLines = connection.Start - 1;

            _classBuilder = new FixedLengthClassBuilder("Tfl" + _entity.Alias) {
                IgnoreEmptyLines = true,
                IgnoreFirstLines = ignoreFirstLines
            };
            foreach (var field in _fields) {
                var length = field.Length.Equals("max", IC) ? int.MaxValue : Convert.ToInt32(field.Length.Equals(string.Empty) ? "64" : field.Length);
                var builder = new FixedFieldBuilder(field.Alias, length, typeof(string)) {
                    FieldNullValue = new String(' ', length)
                };
                _classBuilder.AddField(builder);
            }

        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Loads and return a ClassBuilder inheritor that has been saved with the SaveToXml method
        /// </summary>
        /// <param name="filename">A file name with the ClassBuilder difinition.</param>
        /// <returns>A new instance of a ClassBuilder inheritor.</returns>
        public static ClassBuilder LoadFromXml(string filename)
        {
            ClassBuilder res = null;

            var document = new XmlDocument();

            document.Load(filename);

            var classtype = document.ChildNodes[0].LocalName;

            if (classtype == "DelimitedClass")
            {
                res = DelimitedClassBuilder.LoadXmlInternal(document);
            }
            else
            {
                res = FixedLengthClassBuilder.LoadXmlInternal(document);
            }

            XmlNode node = document.ChildNodes.Item(0)["IgnoreLastLines"];

            if (node != null)
            {
                res.IgnoreLastLines = int.Parse(node.InnerText);
            }

            node = document.ChildNodes.Item(0)["IgnoreFirstLines"];
            if (node != null)
            {
                res.IgnoreFirstLines = int.Parse(node.InnerText);
            }

            node = document.ChildNodes.Item(0)["IgnoreEmptyLines"];
            if (node != null)
            {
                res.IgnoreEmptyLines = true;
            }

            node = document.ChildNodes.Item(0)["CommentMarker"];
            if (node != null)
            {
                res.IgnoreCommentedLines.CommentMarker = node.InnerText;
            }

            node = document.ChildNodes.Item(0)["CommentInAnyPlace"];
            if (node != null)
            {
                res.IgnoreCommentedLines.InAnyPlace = bool.Parse(node.InnerText.ToLower());
            }

            node            = document.ChildNodes.Item(0)["SealedClass"];
            res.SealedClass = node != null;

            node = document.ChildNodes.Item(0)["Namespace"];
            if (node != null)
            {
                res.Namespace = node.InnerText;
            }

            node = document.ChildNodes.Item(0)["Visibility"];
            if (node != null)
            {
                res.Visibility = (NetVisibility)Enum.Parse(typeof(NetVisibility), node.InnerText);
            }
            ;

            node = document.ChildNodes.Item(0)["RecordCondition"];
            if (node != null)
            {
                res.RecordCondition.Condition = (RecordCondition)Enum.Parse(typeof(RecordCondition), node.InnerText);
            }
            ;

            node = document.ChildNodes.Item(0)["RecordConditionSelector"];
            if (node != null)
            {
                res.RecordCondition.Selector = node.InnerText;
            }

            res.ReadClassElements(document);

            node = document.ChildNodes.Item(0)["Fields"];
            XmlNodeList nodes;

            if (classtype == "DelimitedClass")
            {
                nodes = node.SelectNodes("/DelimitedClass/Fields/Field");
            }
            else
            {
                nodes = node.SelectNodes("/FixedLengthClass/Fields/Field");
            }

            foreach (XmlNode n in nodes)
            {
                res.ReadField(n);
            }

            return(res);
        }