コード例 #1
0
        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);
                }
            }
                                       );
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
ファイル: StoragePlugin.cs プロジェクト: rgodbee/werewolfbot
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /// <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));
        }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        /// <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));
        }
コード例 #10
0
        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);
        }
コード例 #11
0
ファイル: BlobLoader.cs プロジェクト: cloudgenverona/GAB2019
        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);
                }
            }
        }
コード例 #12
0
        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();
        }
コード例 #13
0
        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();
        }