private ITokenizer GetTokenizer <T>(Resources.FileSize fileSize) where T : class, ITokenizer { return((ITokenizer)Activator.CreateInstance(typeof(T), new object[] { Resources.GetStream(fileSize), new TokenizerSettings( new byte[] { (byte)'\n', (byte)'\r' }, new byte[] { (byte)Resources.GetSeperator(fileSize) }, Encoding.UTF8, true) })); }
private CsvReader GetCsvHelperReader(Resources.FileSize fileSize) { var config = new CsvHelper.Configuration.Configuration() { Delimiter = Resources.GetSeperator(fileSize).ToString(), BadDataFound = (data) => Debug.WriteLine($"Bad Data Found: {data}") }; var stream = new StreamReader(Resources.GetStream(fileSize)); return(new CsvReader(stream, config)); }
private IDisposable GetTokenizer(ParsingMethod method, Resources.FileSize fileSize) { switch (method) { case ParsingMethod.CsvHelper: return(GetCsvHelperReader(fileSize)); case ParsingMethod.Pipeline: return(GetPipelineTokenizer(fileSize)); case ParsingMethod.StreamReader: return(GetStreamReaderTokenizer(fileSize)); case ParsingMethod.MemoryManaged: return(GetMemoryManagedTokenizer(fileSize)); default: throw new InvalidOperationException(); } }
public async Task <object> Parse(ParsingMethod method, Resources.FileSize fileSize) { switch (method) { case ParsingMethod.CsvHelper: { var reader = (CsvReader)Open(method, fileSize); int count = 0; while (await reader.ReadAsync()) { count++; Debug.WriteLine(reader.ToString()); } Debug.WriteLine($"Read {count} rows"); return(reader); } default: { var tokenizer = (ITokenizer)GetTokenizer(method, fileSize); Debug.WriteLine($"Reading file, size = {fileSize}"); ISection row; int count = 0; while (true) { row = await tokenizer.GetNextAsync(); if (row == null) { break; } count++; } Debug.WriteLine($"Read {count} rows"); return(tokenizer); } } }
public IDisposable Open(ParsingMethod method, Resources.FileSize fileSize) { return(GetTokenizer(method, fileSize)); }
private ITokenizer GetMemoryManagedTokenizer(Resources.FileSize fileSize) { return(GetTokenizer <MemoryManagedTokenizer>(fileSize)); }
private ITokenizer GetStreamReaderTokenizer(Resources.FileSize fileSize) { return(new StreamReaderTokenizer(new StreamReader(Resources.GetStream(fileSize)), disposeStream: true)); }
private ITokenizer GetPipelineTokenizer(Resources.FileSize fileSize) { return(GetTokenizer <PipelineStreamTokenizer>(fileSize)); }