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); } }
/// <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); }