public DelimitedMultiEngineTests() { var factory = new DelimitedFileEngineFactory(); var types = new System.Collections.Generic.List <Type>() { typeof(Record1), typeof(Record2) }; engine = factory.GetEngine(types.AsEnumerable <Type>(), s => { if (String.IsNullOrEmpty(s) || s.Length < 1) { return(null); } switch (s[0]) { case 'S': return(typeof(Record1)); case 'D': return(typeof(Record2)); default: return(null); } } ); }
public void WriteAllRecordsWithMapping() { var records = new List<CustomObject> { new CustomObject { GuidColumn = new Guid("f96a1c66-4777-4642-86fa-703098065f5f"), IntColumn = 1, StringColumn = "one", CustomTypeColumn = new CustomType { First = 1, Second = 2, Third = 3, }, }, new CustomObject { GuidColumn = new Guid("06776ed9-d33f-470f-bd3f-8db842356330"), IntColumn = 2, StringColumn = "two", CustomTypeColumn = new CustomType { First = 4, Second = 5, Third = 6, }, }, }; Benchmark.This("CsvWriter.WriteRecords", () => { using (var memoryStream = new MemoryStream()) using (var streamWriter = new StreamWriter(memoryStream)) using (var writer = new CsvWriter(streamWriter)) { writer.Configuration.RegisterClassMap<CsvHelperMappingForCustomObject>(); writer.WriteRecords(records); streamWriter.Flush(); } }) .Against.This("FlatFileEngine.Write", () => { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream()) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); flatFile.Write(stream, records); } }) .WithWarmup(1000) .For(10000) .Iterations() .PrintComparison(); }
public void WriteAllRecordsWithMapping() { var records = new List <CustomObject> { new CustomObject { GuidColumn = new Guid("f96a1c66-4777-4642-86fa-703098065f5f"), IntColumn = 1, StringColumn = "one", CustomTypeColumn = new CustomType { First = 1, Second = 2, Third = 3, }, }, new CustomObject { GuidColumn = new Guid("06776ed9-d33f-470f-bd3f-8db842356330"), IntColumn = 2, StringColumn = "two", CustomTypeColumn = new CustomType { First = 4, Second = 5, Third = 6, }, }, }; Benchmark.This("CsvWriter.WriteRecords", () => { using (var memoryStream = new MemoryStream()) using (var streamWriter = new StreamWriter(memoryStream)) using (var writer = new CsvWriter(streamWriter)) { writer.Configuration.RegisterClassMap <CsvHelperMappingForCustomObject>(); writer.WriteRecords(records); streamWriter.Flush(); } }) .Against.This("FlatFileEngine.Write", () => { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream()) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); flatFile.Write(stream, records); } }) .WithWarmup(1000) .For(10000) .Iterations() .PrintComparison(); }
private static IFlatFileEngine GetFlatFileEngine <T>() where T : class, new() { var factory = new DelimitedFileEngineFactory(); MethodInfo method = typeof(FlatFileEngineFactoryExtensions).GetMethod("GetEngine"); MethodInfo generic = method.MakeGenericMethod(typeof(T)); return(generic.Invoke(factory, new object[] { factory, null }) as IFlatFileEngine); }
public IList <IrisRecord> Read(Stream stream) { var layout = new IrisRecordLayout(); var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); var records = flatFile.Read <IrisRecord>(stream).ToList(); return(records); }
/// <summary> /// Gets the engine. /// </summary> /// <param name="engineFactory">The engine factory.</param> /// <param name="recordTypes">The record types.</param> /// <param name="typeSelectorFunc">The type selector function.</param> /// <param name="handleEntryReadError">The handle entry read error.</param> /// <returns>IFlatFileMultiEngine.</returns> public static IFlatFileMultiEngine GetEngine( this DelimitedFileEngineFactory engineFactory, IEnumerable <Type> recordTypes, Func <string, Type> typeSelectorFunc, Func <string, Exception, bool> handleEntryReadError = null) { var descriptorProvider = new DelimitedLayoutDescriptorProvider(); var descriptors = recordTypes.Select(type => descriptorProvider.GetDescriptor(type)).ToList(); return(engineFactory.GetEngine(descriptors, typeSelectorFunc, handleEntryReadError)); }
public void FlatFile() { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(sampleText))) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); var objects = flatFile.Read <CustomObject>(stream).ToArray(); } }
public void FlatFile() { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream()) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); flatFile.Write(stream, records); } }
/// <summary> /// Gets a file engine. /// </summary> /// <param name="engineFactory">The engine factory.</param> /// <param name="recordTypes">The record types.</param> /// <param name="typeSelectorFunc">The type selector function.</param> /// <param name="handleEntryReadError">The error handler.</param> /// <param name="masterDetailStrategy">Determines how master-detail record relationships are handled.</param> /// <returns>IFlatFileMultiEngine.</returns> public static IFlatFileMultiEngine GetEngine( this DelimitedFileEngineFactory engineFactory, IEnumerable <Type> recordTypes, Func <string, int, Type> typeSelectorFunc, FileReadErrorHandler?handleEntryReadError = null, IMasterDetailStrategy?masterDetailStrategy = null) { var descriptorProvider = new DelimitedLayoutDescriptorProvider(); var descriptors = recordTypes.Select(type => descriptorProvider.GetDescriptor(type)).ToList(); return(engineFactory.GetEngine(descriptors, typeSelectorFunc, handleEntryReadError, masterDetailStrategy)); }
public byte[] GenerateEventFlatFile(ICollection <EventViewModelReadOnly> eventVM) { byte[] result; var layout = new LayoutFactory(); var factory = new DelimitedFileEngineFactory(); using (var stream = new MemoryStream()) { var flatFile = factory.GetEngine(layout); flatFile.Write <ReportEventModel>(stream, ReportEventModel.FromVM(eventVM)); result = stream.ToArray(); } return(result); }
public async Task Run( [BlobTrigger("scalability/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, [Queue("scalabilityqueue", Connection = "AzureWebJobsStorage")] IAsyncCollector <ImportEntity> queueCollector, ILogger log) { log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); var layout = new ImportDelimeterLayout(); var factory = new DelimitedFileEngineFactory(); using (var stream = myBlob) { var flatFile = factory.GetEngine(layout); var records = flatFile.Read <ImportEntity>(stream); foreach (var item in records) { await queueCollector.AddAsync(item); } } }
public void ReadAllRecordsWithMapping() { const string fileContent = @"String Column,Int Column,Guid Column,Custom Type Column one,1,f96a1c66-4777-4642-86fa-703098065f5f,1|2|3 two,2,06776ed9-d33f-470f-bd3f-8db842356330,4|5|6 "; Benchmark.This("CsvWriter.WriteRecords", () => { using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent))) using (var streamReader = new StreamReader(memoryStream)) using (var reader = new CsvReader(streamReader, CultureInfo.CurrentCulture)) { var context = new CsvContext(reader); context.RegisterClassMap <CsvHelperMappingForCustomObject>(); var objects = reader.GetRecords <CustomObject>().ToArray(); } }) .Against.This("FlatFileEngine.Write", () => { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent))) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); var objects = flatFile.Read <CustomObject>(stream).ToArray(); } }) .WithWarmup(1000) .For(10000) .Iterations() .PrintComparison(); }
public void ReadAllRecordsWithMapping() { const string fileContent = @"String Column,Int Column,Guid Column,Custom Type Column one,1,f96a1c66-4777-4642-86fa-703098065f5f,1|2|3 two,2,06776ed9-d33f-470f-bd3f-8db842356330,4|5|6 "; Benchmark.This("CsvWriter.WriteRecords", () => { using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent))) using (var streamReader = new StreamReader(memoryStream)) using (var reader = new CsvReader(streamReader)) { reader.Configuration.RegisterClassMap<CsvHelperMappingForCustomObject>(); var objects = reader.GetRecords<CustomObject>().ToArray(); } }) .Against.This("FlatFileEngine.Write", () => { var layout = new FlatFileMappingForCustomObject(); using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent))) { var factory = new DelimitedFileEngineFactory(); var flatFile = factory.GetEngine(layout); var objects = flatFile.Read<CustomObject>(stream).ToArray(); } }) .WithWarmup(1000) .For(10000) .Iterations() .PrintComparison(); }