Exemple #1
0
        public void FullClassBuilding()
        {
            var cb = new DelimitedClassBuilder("Customers", ",");

            cb.IgnoreFirstLines = 1;
            cb.IgnoreEmptyLines = true;

            cb.AddField("Field1", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.QuoteMode      = QuoteMode.AlwaysQuoted;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("Field2", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Field3", typeof(int));

            engine = new FileHelperEngine(cb.CreateRecordClass());

            DataTable dt = engine.ReadFileAsDT(TestCommon.GetPath("Good", "Test2.txt"));

            Assert.AreEqual(4, dt.Rows.Count);
            Assert.AreEqual(4, engine.TotalRecords);
            Assert.AreEqual(0, engine.ErrorManager.ErrorCount);

            Assert.AreEqual("Field1", dt.Columns[0].ColumnName);
            Assert.AreEqual("Field2", dt.Columns[1].ColumnName);
            Assert.AreEqual("Field3", dt.Columns[2].ColumnName);

            Assert.AreEqual("Hola", dt.Rows[0][1]);
            Assert.AreEqual(DateTime.Today, dt.Rows[2][0]);
        }
Exemple #2
0
        public void SaveLoadXmlFileDelimited2()
        {
            var cb = new DelimitedClassBuilder("Customers", ",");

            cb.IgnoreFirstLines = 1;
            cb.IgnoreEmptyLines = true;

            cb.AddField("Field1", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.QuoteMode      = QuoteMode.AlwaysQuoted;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("FieldTwo", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Field333", typeof(int));

            cb.SaveToXml(@"runtime.xml");

            engine = new FileHelperEngine(ClassBuilder.ClassFromXmlFile("runtime.xml"));

            Assert.AreEqual("Customers", engine.RecordType.Name);
            Assert.AreEqual(3, engine.RecordType.GetFields().Length);
            Assert.AreEqual("Field1", engine.RecordType.GetFields()[0].Name);
        }
Exemple #3
0
        public void TestingNameAndTypes()
        {
            var cb = new DelimitedClassBuilder("Customers", ",");

            cb.IgnoreFirstLines = 1;
            cb.IgnoreEmptyLines = true;

            cb.AddField("Field1", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.QuoteMode      = QuoteMode.AlwaysQuoted;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("Field2", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Field3", typeof(int));

            engine = new FileHelperEngine(cb.CreateRecordClass());

            DataTable dt = engine.ReadFileAsDT(TestCommon.GetPath("Good", "Test2.txt"));

            Assert.AreEqual("Field1", dt.Columns[0].ColumnName);
            Assert.AreEqual(typeof(DateTime), dt.Columns[0].DataType);

            Assert.AreEqual("Field2", dt.Columns[1].ColumnName);
            Assert.AreEqual(typeof(string), dt.Columns[1].DataType);

            Assert.AreEqual("Field3", dt.Columns[2].ColumnName);
            Assert.AreEqual(typeof(int), dt.Columns[2].DataType);
        }
Exemple #4
0
        public void RunTimeEmptyGuidProperties()
        {
            var builder = new DelimitedClassBuilder("EntityWithGuid", "\t");

            builder.AddField("Name", typeof(string));
            builder.AddField("Id", typeof(Guid));
            builder.LastField.FieldNullValue = Guid.Empty;

            var engine = new FileHelperEngine(builder.CreateRecordClass())
            {
                Options =
                {
                    IgnoreFirstLines = 1
                }
            };

            const string inputValue = @"Name	Id
first	
second	";

            var records = engine.ReadString(inputValue);

            Check.That(records.Length).IsEqualTo(2);

            dynamic record = records[0];

            Check.That(((Guid)record.Id)).IsEqualTo(Guid.Empty);
            Check.That(((string)record.Name)).IsEqualTo("first");

            record = records[1];
            Check.That(((Guid)record.Id)).IsEqualTo(Guid.Empty);
            Check.That(((string)record.Name)).IsEqualTo("second");
        }
Exemple #5
0
        static void RunTimeRecords()
        {
            Console.WriteLine("Run Time Records now =) ...");
            Console.WriteLine();

            DelimitedClassBuilder cb = new DelimitedClassBuilder("Customer", ",");

            cb.AddField("CustId", typeof(Int32));
            cb.AddField("Name", typeof(string));
            cb.AddField("Balance", typeof(Decimal));
            cb.AddField("AddedDate", typeof(DateTime));
            cb.LastField.Converter.Kind = ConverterKind.Date;
            cb.LastField.Converter.Arg1 = "ddMMyyyy";


            // Estas dos lineas son el uso de la librería
            FileHelperEngine engine = new FileHelperEngine(cb.CreateRecordClass());

            DataTable dt = engine.ReadFileAsDT(@"..\Data\CustomersDelimited.txt");

            // Aqui es donde ustedes agregan su código
            foreach (DataRow dr in dt.Rows)
            {
                Console.WriteLine("Customer: " + dr[0].ToString() + " - " + dr[1].ToString());
            }
        }
Exemple #6
0
        public void RunTimeNullableFields()
        {
            DelimitedClassBuilder cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.AddField("Field1", "int?");
            cb.AddField("Field2", typeof(int?));
            cb.AddField("Field3", "Nullable<int>");
            cb.AddField("Field4", typeof(Nullable <int>));
        }
Exemple #7
0
        public ReadUsersFromFileDynamic()
        {
            var userRecordClassBuilder = new DelimitedClassBuilder("UserRecord", "\t");

            userRecordClassBuilder.IgnoreFirstLines = 1;
            userRecordClassBuilder.AddField("Id", typeof(Int32));
            userRecordClassBuilder.AddField("Name", typeof(String));
            userRecordClassBuilder.AddField("Email", typeof(String));
            _tblClass = userRecordClassBuilder.CreateRecordClass();
        }
Exemple #8
0
        public void RunTimeGenerics()
        {
            DelimitedClassBuilder cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.AddField("Field2", typeof(Dictionary <int, List <string> >));
            cb.AddField("Field1", "List<int>");
            cb.AddField("Field2", typeof(List <int>));
            cb.AddField("Field3", "Nullable<int>");
            cb.AddField("Field4", typeof(Nullable <int>));
        }
        public void RunTimeMultimpleInstances()
        {
            var cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.AddField("Field1", "int?");
            cb.AddField("Field2", typeof(int?));
            cb.AddField("Field3", "Nullable<int>");
            cb.AddField("Field4", typeof(Nullable <int>));

            cb.CreateRecordClass();
            cb.CreateRecordClass();
        }
        public void RunTimeGenerics()
        {
            var cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.AddField("Field2", typeof(Dictionary <int, List <string> >));
            cb.AddField("Field1", "System.Collections.Generic.List<int>");
            cb.AddField("Field7", typeof(List <int>));
            cb.AddField("Field3", "Nullable<int>");
            cb.AddField("Field4", typeof(Nullable <int>));

            cb.CreateRecordClass();
        }
Exemple #11
0
        public static FileHelperAsyncEngine Create(InputContext context)
        {
            var identifier = Utility.Identifier(context.Entity.OutputTableName(context.Process.Name));
            var delimiter  = string.IsNullOrEmpty(context.Connection.Delimiter) ? "," : context.Connection.Delimiter;

            var builder = new DelimitedClassBuilder(identifier)
            {
                IgnoreEmptyLines = true,
                Delimiter        = delimiter,
                IgnoreFirstLines = context.Connection.Start
            };

            foreach (var field in context.InputFields)
            {
                var fieldBuilder = builder.AddField(field.FieldName(), typeof(string));
                fieldBuilder.FieldQuoted   = true;
                fieldBuilder.QuoteChar     = context.Connection.TextQualifier;
                fieldBuilder.QuoteMode     = QuoteMode.OptionalForBoth;
                fieldBuilder.FieldOptional = field.Optional;
            }

            FileHelpers.ErrorMode errorMode;
            Enum.TryParse(context.Connection.ErrorMode, true, out errorMode);

            var engine = new FileHelperAsyncEngine(builder.CreateRecordClass());

            engine.ErrorManager.ErrorMode  = errorMode;
            engine.ErrorManager.ErrorLimit = context.Connection.ErrorLimit;

            return(engine);
        }
Exemple #12
0
        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();
        }
Exemple #13
0
        public DelimitedFileReader(InputContext context, IRowFactory rowFactory, IRowCondition rowCondition)
        {
            _context      = context;
            _rowFactory   = rowFactory;
            _rowCondition = rowCondition;

            var identifier = Utility.Identifier(context.Entity.OutputTableName(context.Process.Name));

            _builder = new DelimitedClassBuilder(identifier)
            {
                IgnoreEmptyLines = true,
                Delimiter        = context.Connection.Delimiter,
                IgnoreFirstLines = context.Connection.Start
            };

            _fileInfo = new FileInfo(_context.Connection.File);

            foreach (var field in context.InputFields)
            {
                var fieldBuilder = _builder.AddField(field.FieldName(), typeof(string));
                fieldBuilder.FieldQuoted   = true;
                fieldBuilder.QuoteChar     = _context.Connection.TextQualifier;
                fieldBuilder.QuoteMode     = QuoteMode.OptionalForRead;
                fieldBuilder.FieldOptional = field.Optional;
            }
        }
Exemple #14
0
        public void ReadAsDataTable1()
        {
            DelimitedClassBuilder cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.IgnoreEmptyLines   = true;
            cb.GenerateProperties = true;

            cb.AddField("FirstName", typeof(string));
            cb.LastField.TrimMode    = FileHelpers.TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("LastName", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("StreetNumber", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("StreetAddress", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("Unit", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("City", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("State", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("Zip", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            var engine = new FileHelperEngine(cb.CreateRecordClass());

            string source = "Alex & Jen,Bouquet,1815,Bell Rd,, Batavia,OH,45103" + Environment.NewLine +
                            "Mark & Lisa K ,Arlinghaus,1817,Bell Rd,, Batavia,OH,45103" + Environment.NewLine +
                            "Ed & Karen S ,Craycraft,1819,Bell Rd,, Batavia,OH,45103" + Environment.NewLine;

            DataTable contactData = engine.ReadStringAsDT(source);

            Assert.AreEqual(3, contactData.Rows.Count);
            Assert.AreEqual(8, contactData.Columns.Count);

            Assert.AreEqual("Alex & Jen", contactData.Rows[0][0].ToString());
            Assert.AreEqual("Mark & Lisa K", contactData.Rows[1][0].ToString());

            // new DelimitedClassBuilder("", ",");
        }
Exemple #15
0
        // DELIMITED

        private void CreateDelimiterOptions(string[][] sampleData, List <RecordFormatInfo> res, char delimiter = '\0')
        {
            var delimiters = new List <DelimiterInfo>();

            if (delimiter == '\0')
            {
                delimiters = GetDelimiters(sampleData);
            }
            else
            {
                delimiters.Add(GetDelimiterInfo(sampleData, delimiter));
            }

            foreach (var info in delimiters)
            {
                var format = new RecordFormatInfo {
                    mConfidence = (int)((1 - info.Deviation) * 100)
                };
                AdjustConfidence(format, info);
                var fileHasHeaders = false;
                if (FileHasHeaders.HasValue)
                {
                    fileHasHeaders = FileHasHeaders.Value;
                }
                else
                {
                    fileHasHeaders = DetectIfContainsHeaders(info, sampleData);
                }
                var builder = new DelimitedClassBuilder("AutoDetectedClass", info.Delimiter.ToString())
                {
                    IgnoreFirstLines = fileHasHeaders
                        ? 1
                        : 0
                };

                var firstLineSplitted = sampleData[0][0].Split(info.Delimiter);
                for (int i = 0; i < info.Max + 1; i++)
                {
                    string name = "Field " + (i + 1).ToString().PadLeft(3, '0');
                    if (fileHasHeaders && i < firstLineSplitted.Length)
                    {
                        name = firstLineSplitted[i];
                    }

                    var f = builder.AddField(StringHelper.ToValidIdentifier(name));
                    if (i > info.Min)
                    {
                        f.FieldOptional = true;
                    }
                }

                format.mClassBuilder = builder;

                res.Add(format);
            }
        }
        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();
        }
Exemple #17
0
        public void ReadAsDataTableWithCustomConverter()
        {
            var fields = new[] {
                "FirstName",
                "LastName",
                "StreetNumber",
                "StreetAddress",
                "Unit",
                "City",
                "State",
            };
            var cb = new DelimitedClassBuilder("ImportContact", ",");

            // Add assembly reference
            cb.AdditionalReferences.Add(typeof(MyCustomConverter).Assembly);

            foreach (var f in fields)
            {
                cb.AddField(f, typeof(string));
                cb.LastField.TrimMode    = TrimMode.Both;
                cb.LastField.FieldQuoted = false;
            }

            cb.AddField("Zip", typeof(int?));
            cb.LastField.Converter.TypeName = "FileHelpers.Tests.Dynamic.DelimitedClassBuilderTests.MyCustomConverter";

            mEngine = new FileHelperEngine(cb.CreateRecordClass());

            string source = "Alex & Jen,Bouquet,1815,Bell Rd,, Batavia,OH,45103" + Environment.NewLine +
                            "Mark & Lisa K ,Arlinghaus,1817,Bell Rd,, Batavia,OH,NaN" + Environment.NewLine +
                            "Ed & Karen S ,Craycraft,1819,Bell Rd,, Batavia,OH,45103" + Environment.NewLine;

            var contactData = mEngine.ReadString(source);

            Assert.AreEqual(3, contactData.Length);
            var zip = mEngine.RecordType.GetFields()[7];

            Assert.AreEqual("Zip", zip.Name);
            Assert.IsNull(zip.GetValue(contactData[1]));
            Assert.AreEqual((decimal)45103, zip.GetValue(contactData[2]));
        }
Exemple #18
0
        public void ReadAsDataTable2()
        {
            DelimitedClassBuilder cb = new DelimitedClassBuilder("ImportContact", ",");

            cb.IgnoreEmptyLines   = true;
            cb.GenerateProperties = true;

            cb.AddField("FirstName", typeof(string));
            cb.LastField.TrimMode    = FileHelpers.TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("LastName", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("StreetNumber", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("StreetAddress", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("Unit", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("City", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("State", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            cb.AddField("Zip", typeof(string));
            cb.LastField.TrimMode    = TrimMode.Both;
            cb.LastField.FieldQuoted = false;

            var engine = new FileHelperEngine(cb.CreateRecordClass());

            DataTable contactData = engine.ReadFileAsDT(TestCommon.GetPath("Good", "ReadAsDataTable.txt"));

            Assert.AreEqual(3, contactData.Rows.Count);
            Assert.AreEqual(8, contactData.Columns.Count);

            Assert.AreEqual("Alex & Jen", contactData.Rows[0][0].ToString());
            Assert.AreEqual("Mark & Lisa K", contactData.Rows[1][0].ToString());

            // new DelimitedClassBuilder("", ",");
        }
Exemple #19
0
        public static FileHelperAsyncEngine Create(OutputContext context)
        {
            var delimiter = string.IsNullOrEmpty(context.Connection.Delimiter) ? "," : context.Connection.Delimiter;

            var builder = new DelimitedClassBuilder(Utility.Identifier(context.Entity.OutputTableName(context.Process.Name)))
            {
                IgnoreEmptyLines = true,
                Delimiter        = delimiter,
                IgnoreFirstLines = 0
            };

            foreach (var field in context.OutputFields)
            {
                var fieldBuilder = builder.AddField(field.FieldName(), typeof(string));
                fieldBuilder.FieldQuoted   = true;
                fieldBuilder.QuoteChar     = context.Connection.TextQualifier;
                fieldBuilder.QuoteMode     = QuoteMode.OptionalForBoth;
                fieldBuilder.FieldOptional = field.Optional;
            }

            FileHelpers.ErrorMode errorMode;
            Enum.TryParse(context.Connection.ErrorMode, true, out errorMode);

            FileHelperAsyncEngine engine;

            if (context.Connection.Header == Constants.DefaultSetting)
            {
                var headerText = string.Join(delimiter, context.OutputFields.Select(f => f.Label.Replace(delimiter, " ")));
                engine = new FileHelperAsyncEngine(builder.CreateRecordClass())
                {
                    ErrorMode  = errorMode,
                    HeaderText = headerText,
                    FooterText = context.Connection.Footer
                };
            }
            else
            {
                engine = new FileHelperAsyncEngine(builder.CreateRecordClass())
                {
                    ErrorMode = errorMode
                };
                if (context.Connection.Header != string.Empty)
                {
                    engine.HeaderText = context.Connection.Header;
                }
                if (context.Connection.Footer != string.Empty)
                {
                    engine.FooterText = context.Connection.Footer;
                }
            }

            return(engine);
        }
Exemple #20
0
        private Type GetDynamicMasterType()
        {
            var masterCb = new DelimitedClassBuilder("CustomDynamicType", ";");

            //masterCb.IgnoreFirstLines = 1;
            masterCb.IgnoreEmptyLines = true;

            masterCb.AddField("Code", typeof(string));

            masterCb.AddField("Field1", typeof(DateTime));
            masterCb.LastField.TrimMode       = TrimMode.Both;
            masterCb.LastField.QuoteMode      = QuoteMode.AlwaysQuoted;
            masterCb.LastField.FieldNullValue = DateTime.Today;

            masterCb.AddField("Field2", typeof(string));
            masterCb.LastField.FieldQuoted = true;
            masterCb.LastField.QuoteChar   = '"';

            masterCb.AddField("Field3", typeof(int));
            return(masterCb.CreateRecordClass());
        }
        private DelimitedClassBuilder ExamineGridForColumnOrder(string delimiter)
        {
            DelimitedClassBuilder classBuilder = new DelimitedClassBuilder("ProposedOrders", delimiter);

            foreach (Column column in grid.VisibleColumns.Where(column => column.Visible && column.FieldName != "ErrorString"))
            {
                classBuilder.AddField(column.FieldName, typeof(string));
                classBuilder.LastField.TrimMode    = TrimMode.Both;
                classBuilder.LastField.FieldQuoted = true;
            }
            return(classBuilder);
        }
Exemple #22
0
        public void LoopingFields()
        {
            var cb = new DelimitedClassBuilder("MyClass", ",");

            string[] lst = { "fieldOne", "fieldTwo", "fieldThree" };

            for (int i = 0; i < lst.Length; i++)
            {
                cb.AddField(lst[i].ToString(), typeof(string));
            }

            var engineTemp = new FileHelperEngine(cb.CreateRecordClass());
        }
Exemple #23
0
        public void SaveLoadXmlOptionsString()
        {
            var cbOrig = new DelimitedClassBuilder("Customers", ",");

            cbOrig.AddField("Field1", typeof(DateTime));
            cbOrig.AddField("FieldTwo", typeof(string));

            cbOrig.RecordCondition.Condition = RecordCondition.ExcludeIfMatchRegex;
            cbOrig.RecordCondition.Selector  = @"\w*";

            cbOrig.IgnoreCommentedLines.CommentMarker = "//";
            cbOrig.IgnoreCommentedLines.InAnyPlace    = false;

            cbOrig.IgnoreEmptyLines = true;
            cbOrig.IgnoreFirstLines = 123;
            cbOrig.IgnoreLastLines  = 456;

            cbOrig.SealedClass = false;
            string xml = cbOrig.SaveToXmlString();

            cbOrig = null;

            ClassBuilder cb2 = ClassBuilder.LoadFromXmlString(xml);

            Assert.AreEqual("Customers", cb2.ClassName);
            Assert.AreEqual(2, cb2.FieldCount);
            Assert.AreEqual("Field1", cb2.Fields[0].FieldName);

            Assert.AreEqual(RecordCondition.ExcludeIfMatchRegex, cb2.RecordCondition.Condition);
            Assert.AreEqual(@"\w*", cb2.RecordCondition.Selector);

            Assert.AreEqual("//", cb2.IgnoreCommentedLines.CommentMarker);
            Assert.AreEqual(false, cb2.IgnoreCommentedLines.InAnyPlace);
            Assert.AreEqual(false, cb2.SealedClass);

            Assert.AreEqual(true, cb2.IgnoreEmptyLines);
            Assert.AreEqual(123, cb2.IgnoreFirstLines);
            Assert.AreEqual(456, cb2.IgnoreLastLines);
        }
Exemple #24
0
        private void ClassBuilder(int ignoreLines, IDictionary <int, string> fieldNames, char[] separator)
        {
            var builder = new DelimitedClassBuilder("UserRecord", separator[0].ToString())
            {
                IgnoreFirstLines = ignoreLines
            };


            foreach (var field in fieldNames.OrderBy(x => x.Key))
            {
                builder.AddField(field.Value, typeof(string));
            }

            InputType = builder.CreateRecordClass();
        }
Exemple #25
0
        public void SaveLoadXmlFileDelimited()
        {
            var cb = new DelimitedClassBuilder("Customers", ",");

            cb.IgnoreFirstLines = 1;
            cb.IgnoreEmptyLines = true;

            cb.AddField("Field1", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.QuoteMode      = QuoteMode.AlwaysQuoted;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("FieldTwo", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Field333", typeof(int));

            cb.SaveToXml(@"runtime.xml");

            var loaded = (DelimitedClassBuilder)ClassBuilder.LoadFromXml(@"runtime.xml");

            Assert.AreEqual("Field1", loaded.FieldByIndex(0).FieldName);
            Assert.AreEqual("FieldTwo", loaded.FieldByIndex(1).FieldName);
            Assert.AreEqual("Field333", loaded.FieldByIndex(2).FieldName);

            Assert.AreEqual("System.DateTime", loaded.FieldByIndex(0).FieldType);
            Assert.AreEqual("System.String", loaded.FieldByIndex(1).FieldType);
            Assert.AreEqual("System.Int32", loaded.FieldByIndex(2).FieldType);

            Assert.AreEqual(QuoteMode.AlwaysQuoted, loaded.FieldByIndex(0).QuoteMode);
            Assert.AreEqual(false, loaded.FieldByIndex(0).FieldQuoted);

            Assert.AreEqual('"', loaded.FieldByIndex(1).QuoteChar);
            Assert.AreEqual(true, loaded.FieldByIndex(1).FieldQuoted);
        }
        private static void Main(string[] args)
        {
            var cb = new DelimitedClassBuilder("Customer", ",");

            cb.AddField("SomeField", typeof(String));
            cb.LastField.Converter.TypeName = typeof(OtherNameSpace.MyConverter).ToString();

            Type recordClass = cb.CreateRecordClass();

            var engine  = new FileHelperEngine(recordClass);
            var records = engine.ReadStringAsDT("aaa");

            Assert.AreEqual("aaa", records.Rows[0].Field <string>(0));

            Console.WriteLine("All OK");
            Console.ReadKey();
        }
        public DelimitedFileWriter(OutputContext context, string fileName = null)
        {
            _context  = context;
            _fileName = fileName;
            _builder  = new DelimitedClassBuilder(Utility.Identifier(context.Entity.OutputTableName(context.Process.Name)))
            {
                IgnoreEmptyLines = true,
                Delimiter        = context.Connection.Delimiter,
                IgnoreFirstLines = 0
            };

            foreach (var field in context.OutputFields)
            {
                var fieldBuilder = _builder.AddField(field.FieldName(), typeof(string));
                fieldBuilder.FieldQuoted   = true;
                fieldBuilder.QuoteChar     = context.Connection.TextQualifier;
                fieldBuilder.QuoteMode     = QuoteMode.OptionalForBoth;
                fieldBuilder.FieldOptional = field.Optional;
            }
        }
Exemple #28
0
 protected override void AddFields(DelimitedClassBuilder cb)
 {
     cb.AddField("ProgramName", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ProgramUrl", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("CatalogName", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("LastUpdated", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Name", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Keywords", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Description", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Sku", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Manufacturer", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ManufacturerId", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Upc", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Isbn", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Currency", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("SalePrice", typeof(string));
     cb.LastField.FieldNullValue = null;
     cb.LastField.FieldOptional  = true;
     cb.AddField("Price", typeof(string));
     cb.LastField.FieldNullValue = null;
     cb.LastField.FieldOptional  = true;
     cb.AddField("RetailPrice", typeof(string));
     cb.LastField.FieldNullValue = null;
     cb.LastField.FieldOptional  = true;
     cb.AddField("FromPrice", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("BuyUrl", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ImpressionUrl", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ImageUrl", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Gender", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ThirdPartyId", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("ThirdPartyCategory", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Author", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Artist", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Title", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Publisher", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Label", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Format", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Special", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Gift", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("PromotionalText", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("StartDate", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("EndDate", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("OffLine", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("OnLine", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("InStock", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Condition", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("Warranty", typeof(string));
     cb.LastField.FieldOptional = true;
     cb.AddField("StandardShippingCost", typeof(string));
     cb.LastField.FieldOptional = true;
 }
        private DelimitedClassBuilder CreateClassBuilder(char separationChar, bool haveHeader)
        {
            DelimitedClassBuilder cb = new DelimitedClassBuilder("TmpPriceImport", separationChar.ToString());

            if (haveHeader)
            {
                cb.IgnoreFirstLines = 1;
            }
            cb.AddField("CodGrundfos", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("CodProv", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Modelo", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Descripcion", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Proveedor", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Frecuencia", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("TP");
            cb.LastField.FieldType      = "Nullable < System.Decimal >";
            cb.LastField.FieldNullValue = null;
            cb.LastField.FieldOptional  = true;
            cb.LastField.Converter.Kind = ConverterKind.AnyDecimal;
            cb.AddField("MonedaTP", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("GRP");
            cb.LastField.FieldType      = "Nullable < System.Decimal >";
            cb.LastField.FieldNullValue = null;
            cb.LastField.FieldOptional  = true;
            cb.LastField.Converter.Kind = ConverterKind.AnyDecimal;
            cb.AddField("MonedaGRP", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("PL");
            cb.LastField.FieldType      = "Nullable < System.Decimal >";
            cb.LastField.FieldNullValue = null;
            cb.LastField.FieldOptional  = true;
            cb.LastField.Converter.Kind = ConverterKind.AnyDecimal;
            cb.AddField("MonedaPL", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Familia", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Tipo", typeof(string));
            cb.LastField.FieldOptional = true;
            cb.AddField("Linea", typeof(string));
            cb.LastField.FieldOptional = true;

            cb.IgnoreEmptyLines = true;

            return(cb);
        }
Exemple #30
0
        private static void Main(string[] args)
        {
            /*var provider = new ExcelStorage(typeof(RaRecord)) {
             *  StartRow = 2,
             *  StartColumn = 1,
             *  SheetName = "Sheet2",
             *  FileName = "test.xlsx"
             * };*/

            //Dynamic Records
            var cb = new DelimitedClassBuilder("Customer", "|")
            {
                IgnoreFirstLines = 1,
                IgnoreEmptyLines = true
            };

            cb.AddField("BirthDate", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("Name", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Age", typeof(int));

            var providerWithDynamicRecord = new ExcelNPOIStorage(cb.CreateRecordClass())
            {
                FileName = Directory.GetCurrentDirectory() + @"\testDynamicRecords.xlsx"
            };

            providerWithDynamicRecord.StartRow    = 1;
            providerWithDynamicRecord.StartColumn = 1;

            dynamic dynamicRecord = Activator.CreateInstance(providerWithDynamicRecord.RecordType);

            dynamicRecord.Name      = "Jonh";
            dynamicRecord.Age       = 1;
            dynamicRecord.BirthDate = DateTime.Now;

            var valuesList = new List <dynamic>
            {
                dynamicRecord,
                dynamicRecord
            };

            var columnsHeaders = ((System.Reflection.TypeInfo)(dynamicRecord.GetType())).DeclaredFields.Select(x => x.Name).ToList();

            providerWithDynamicRecord.ColumnsHeaders = columnsHeaders;
            providerWithDynamicRecord.InsertRecords(valuesList.ToArray());

            //General export of excel with date time columns
            var provider = new ExcelNPOIStorage(typeof(RaRecord))
            {
                FileName = Directory.GetCurrentDirectory() + @"\test.xlsx"
            };

            provider.StartRow    = 0;
            provider.StartColumn = 0;

            var records = new List <RaRecord>();

            records.Add(new RaRecord()
            {
                Level     = 123.123m,
                Name      = "Dickie",
                Startdate = DateTime.Now
            });

            var values = new List <int>
            {
                1,
                2,
                3
            };

            records.Add(new RaRecord()
            {
                Level     = null,
                Name      = "Bavo",
                Project   = "too many",
                Startdate = DateTime.Now,
                ListOfIds = string.Join(",", values.Select(n => n.ToString(CultureInfo.InvariantCulture)).ToArray())
            });

            provider.HeaderRows = 4;

            provider.InsertRecords(records.ToArray());

            var res = (RaRecord[])provider.ExtractRecords();
        }