static void ConfigFirstApproachReadAsTypedRecords() { ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration(); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 8) { FieldType = typeof(int) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 8, 10) { FieldType = typeof(string) }); EmployeeRecSimple row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader, config).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void CodeFirstWithDeclarativeApproach() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <CreditBalanceRecord>(reader)) { writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } //using (var stream = new MemoryStream()) //using (var reader = new StreamReader(stream)) //using (var writer = new StreamWriter(stream)) //{ // writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); // writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); // writer.Flush(); // stream.Position = 0; // foreach (var item in new ChoFixedLengthReader<CreditBalanceRecord>(reader)) // { // Console.WriteLine(item.ToStringEx()); // } //} }
static void DynamicApproach() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader(reader) .WithFirstLineHeader() .WithField("Account", 0, 8, fieldType: typeof(int)) .WithField("LastName", 8, 16) .WithField("FirstName", 24, 16) .WithField("Balance", 40, 12, fieldType: typeof(double)) .WithField("CreditLimit", 52, 14, fieldType: typeof(double)) .WithField("AccountCreated", 66, 16, fieldType: typeof(DateTime)) .WithField("Rating", 82, 7)) { writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); writer.WriteLine("102 Tom Mark 9315.45 15000.00 12/17/2000 A "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void LoadTextTest() { string txt = "Id Name \r\n1 Carl \r\n2 Mark "; foreach (var e in ChoFixedLengthReader.LoadText(txt).WithFirstLineHeader()) { Console.WriteLine(e.ToStringEx()); } }
static void MultiLineTest() { object row = null; using (var parser = new ChoFixedLengthReader("Emp.csv").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10, true)) { while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void MultiLineTest() { object row = null; using (var parser = new ChoFixedLengthReader("Emp.txt").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10)) { parser.Configuration.MayContainEOLInData = true; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void Test1() { string txt = @"Filip Malýn Male 1218-02-1994 Božena Němcová Female1804-02-1820 Jan Žižka Male 0719-09-1360 Che Guevara Male 2714-06-1928 AntoinedeSaint-ExupéryMale 1529-06-1900"; foreach (var rec in ChoFixedLengthReader <Person> .LoadText(txt)) { Console.WriteLine(rec.Dump()); } }
static void POCODataTableTest() { using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <CreditBalanceRecord>(reader)) { writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); writer.Flush(); stream.Position = 0; var dt = parser.AsDataTable(); } }
static void DefaultValueUsedViaConfigFirstApproach() { ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration(); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 3) { FieldType = typeof(int) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 3, 5) { FieldType = typeof(string) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("JoinedDate", 8, 10) { FieldType = typeof(DateTime), DefaultValue = "10/10/2010" }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Salary", 18, 10) { FieldType = typeof(ChoCurrency) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("IsActive", 28, 1) { FieldType = typeof(bool) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Status", 29, 1) { FieldType = typeof(char) }); config.ErrorMode = ChoErrorMode.ReportAndContinue; ExpandoObject row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader(reader, config)) { writer.WriteLine("001Carl 08/12/2016100,000 0F"); writer.WriteLine("002MarkS13/01/2010500,000 1C"); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void QuickLoad() { using (var r = new ChoFixedLengthReader("accounts.txt") .WithField("AC", 0, 8, fieldType: typeof(int)) ) { //r.RecordLoadError += (o, e) => //{ // Console.WriteLine(e.Exception.Message); // e.Handled = true; //}; foreach (var rec in r) { Console.WriteLine("{0}", rec.AC); } } }
static void Test2() { string txt = @"ID Name 1 Mark 2 Tom "; foreach (var rec in ChoFixedLengthReader <Emp1> .LoadText(txt) //.WithRecordLength(15) //.WithField("ID", startIndex: 0, size: 5) //.WithField("Name1", startIndex: 5, size: 10) .WithFirstLineHeader(true) //.WithHeaderLineAt(2, false) ) { Console.WriteLine(rec.Dump()); } }
static void QuickLoad() { using (var r = new ChoFixedLengthReader("accounts.txt").WithFirstLineHeader() .Configure(c => c.MaxScanRows = 2) ) { //r.RecordLoadError += (o, e) => //{ // Console.WriteLine(e.Exception.Message); // e.Handled = true; //}; foreach (dynamic rec in r) { Console.WriteLine("{0}", rec.Dump()); } } }
static void DefaultValueUsedViaCodeFirstApproach() { EmployeeRecSimple row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader)) { writer.WriteLine("001Carl 08/12/2016$100,000 0F"); writer.WriteLine("002MarkS01/01/2010$500,000 1C"); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void QuickTest() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecWithCurrency>(reader).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void CodeFirstWithDeclarativeApproachRead() { EmployeeRec row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRec>(reader).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
public static void AABillingTest() { using (var p = new ChoFixedLengthReader("AABilling.txt") .WithRecordSelector(0, 1, null, typeof(AABillingDetailRecord), typeof(AABillingTrailerRecord), typeof(AABillingHeaderRecord)) //.WithCustomRecordSelector((l) => //{ // Tuple<long, string> kvp = l as Tuple<long, string>; // if (kvp.Item2.StartsWith("H")) // return typeof(AABillingHeaderRecord); // else if (kvp.Item2.StartsWith("T")) // return typeof(AABillingTrailerRecord); // else // return typeof(AABillingDetailRecord); //}) ) { foreach (var rec in p) { Console.WriteLine(ChoUtility.Dump(rec)); } } }
static void QuickLoad() { for (int i = 0; i < 5; i++) { Stopwatch sw = Stopwatch.StartNew(); using (var r = new ChoFixedLengthReader("accounts.txt") //.WithFirstLineHeader() //.Configure(c => c.MaxScanRows = 2) ) { //r.RecordLoadError += (o, e) => //{ // Console.WriteLine(e.Exception.Message); // e.Handled = true; //}; foreach (dynamic rec in r) { //Console.WriteLine("{0}", rec.Dump()); } } sw.Stop(); Console.WriteLine(sw.Elapsed.TotalSeconds); } }
static void QuickDataTableTest() { var dt = new ChoFixedLengthReader("accounts.txt").AsDataTable(); }