internal static DelimitedClassBuilder LoadXmlInternal(XmlDocument document) { DelimitedClassBuilder res; var del = document.ChildNodes[0].Attributes[0].Value; var className = document.ChildNodes.Item(0).SelectNodes("/DelimitedClass/ClassName").Item(0).InnerText; res = new DelimitedClassBuilder(className, del); // // while(reader.mReader.EOF == false) // { // reader.ReadToNextElement(); //// if (reader.mReader.LocalName == "IgnoreEmptyLines") // } return(res); }
protected virtual void PrepareType(Entity entity) { var builder = new DelimitedClassBuilder("Tfl" + entity.OutputName()) { IgnoreEmptyLines = true, Delimiter = _connection.Delimiter.ToString(CultureInfo.InvariantCulture), IgnoreFirstLines = 0 }; foreach (var f in _fileFields) { var field = new DelimitedFieldBuilder(f.Identifier, f.SystemType); if (f.SimpleType.Equals("datetime")) { field.Converter.Kind = ConverterKind.Date; field.Converter.Arg1 = _connection.DateFormat; } if (f.SimpleType.Equals("guid")) { field.Converter.TypeName = "Transformalize.Operations.Load.GuidConverter"; } if (f.SimpleType.Equals("byte[]") || f.SimpleType.Equals("rowversion")) { field.Converter.TypeName = "Transformalize.Operations.Load.ByteArrayConverter"; } if (_isCsv) { field.FieldQuoted = true; field.QuoteChar = '"'; field.QuoteMode = QuoteMode.OptionalForBoth; field.QuoteMultiline = MultilineMode.NotAllow; } builder.AddField(field); } Type = builder.CreateRecordClass(); }
public override IEnumerable<Row> Execute(IEnumerable<Row> rows) { var cb = new DelimitedClassBuilder("Tfl" + _entity.OutputName()) { IgnoreEmptyLines = true, Delimiter = _delimiter.ToString(CultureInfo.InvariantCulture), IgnoreFirstLines = _ignoreFirstLines }; foreach (var field in _fields) { if (field.IsQuoted()) { cb.AddField(new DelimitedFieldBuilder(field.Identifier, typeof(string)) { FieldQuoted = true, QuoteChar = field.QuotedWith, QuoteMode = QuoteMode.OptionalForRead, FieldOptional = field.Optional }); } else { cb.AddField(new DelimitedFieldBuilder(field.Identifier, typeof(string)) { FieldOptional = field.Optional }); } } Logger.Info("Reading Delimited {0}", _name); var conversionMap = Common.GetObjectConversionMap(); if (_top > 0) { using (var file = new FluentFile(cb.CreateRecordClass()).From(_fullName).OnError(_errorMode)) { foreach (var row in from object obj in file select Row.FromObject(obj)) { if (_counter == 0) { try { ProcessRow(row, _fields, _fullName, conversionMap); } catch (Exception ex) { if (!_warned) { Logger.EntityWarn(_entity.Alias, "First row from '{0}' failed to process. You may have headers. If so, set start=\"2\" on connection. Note: start is 1-based. {0}", _name, ex.Message); _warned = true; } } } else { ProcessRow(row, _fields, _fullName, conversionMap); } if (_counter < _top) { yield return row; } else { yield break; } } Interlocked.Increment(ref _counter); HandleErrors(file); } } else { using (var file = new FluentFile(cb.CreateRecordClass()).From(_fullName).OnError(_errorMode)) { foreach (var row in from object obj in file select Row.FromObject(obj)) { if (_counter == 0) { try { ProcessRow(row, _fields, _fullName, conversionMap); } catch (Exception ex) { Logger.EntityWarn(_entity.Alias, "First row failed to process. You may have headers. If so, set start-index=\"2\" on connection. {0}", ex.Message); } } else { ProcessRow(row, _fields, _fullName, conversionMap); } yield return row; Interlocked.Increment(ref _counter); } HandleErrors(file); } } }
internal static DelimitedClassBuilder LoadXmlInternal(XmlDocument document) { DelimitedClassBuilder res; var del = document.ChildNodes[0].Attributes[0].Value; var className = document.ChildNodes.Item(0).SelectNodes("/DelimitedClass/ClassName").Item(0).InnerText; res = new DelimitedClassBuilder(className, del); // // while(reader.mReader.EOF == false) // { // reader.ReadToNextElement(); //// if (reader.mReader.LocalName == "IgnoreEmptyLines") // } return res; }
/// <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); }
protected override void PrepareType(Entity entity) { var builder = new DelimitedClassBuilder("Tfl" + entity.OutputName()) { IgnoreEmptyLines = true, Delimiter = " ", IgnoreFirstLines = 0 }; builder.AddField(_htmlField, typeof(string)); Type = builder.CreateRecordClass(); }