Update CsvHelper from 2.14 to 12.2.1

This commit is contained in:
2019-11-20 21:45:44 -05:00
parent 5dabdb3039
commit aa14c362f7
6 changed files with 46 additions and 36 deletions
+14 -7
View File
@@ -15,18 +15,25 @@ namespace LeafWeb.Core.Parsers
protected CsvParserBase(FileSystemInfo csvFile)
{
_reader = OpenCsv(csvFile);
var csvConfiguration = new CsvConfiguration { HasHeaderRecord = false, IgnoreBlankLines = false, IgnoreReadingExceptions = true};
CsvReader = new CsvReader(_reader, csvConfiguration);
}
CsvReader = InitCsvReader(_reader);
}
protected CsvParserBase(byte[] fileContents)
{
_memoryStream = new MemoryStream(fileContents);
_reader = new StreamReader(_memoryStream);
var csvConfiguration = new CsvConfiguration { HasHeaderRecord = false, IgnoreBlankLines = false, IgnoreReadingExceptions = true };
CsvReader = new CsvReader(_reader, csvConfiguration);
}
CsvReader = InitCsvReader(_reader);
}
private static CsvReader InitCsvReader(StreamReader reader)
{
var csvReader = new CsvReader(reader);
csvReader.Configuration.HasHeaderRecord = false;
csvReader.Configuration.IgnoreBlankLines = false;
csvReader.Configuration.ReadingExceptionOccurred = exception => false;
return csvReader;
}
internal static StreamReader OpenCsv(FileSystemInfo csvFile)
{
@@ -42,7 +49,7 @@ namespace LeafWeb.Core.Parsers
if (!CsvReader.Read())
return null;
return CsvReader.CurrentRecord;
return CsvReader.Context.Record;
}
public void Dispose()
+4 -4
View File
@@ -11,7 +11,7 @@ namespace LeafWeb.Core.Parsers
{
private readonly FileSystemInfo _csvFile;
private sealed class FluxnetSiteMap : CsvClassMap<FluxnetSite>
private sealed class FluxnetSiteMap : ClassMap<FluxnetSite>
{
public FluxnetSiteMap()
{
@@ -31,9 +31,9 @@ namespace LeafWeb.Core.Parsers
{
using (var reader = CsvParserBase.OpenCsv(_csvFile))
{
var csvConfiguration = new CsvConfiguration {IsHeaderCaseSensitive = false};
csvConfiguration.RegisterClassMap<FluxnetSiteMap>();
var csvReader = new CsvReader(reader, csvConfiguration);
var csvReader = new CsvReader(reader);
csvReader.Configuration.PrepareHeaderForMatch = (s, i) => s.ToLowerInvariant();
csvReader.Configuration.RegisterClassMap<FluxnetSiteMap>();
return csvReader.GetRecords<FluxnetSite>().ToList();
}
}
+10 -11
View File
@@ -20,10 +20,10 @@ namespace LeafWeb.Core.Parsers
{
var fittingTitles = GetNextCsvRowValues();
if (fittingTitles == null)
throw new ParseException($"Could not read data header row on line number {CsvReader.Row}");
throw new ParseException($"Could not read data header row on line number {CsvReader.Context.Row}");
var fitUnits = GetNextCsvRowValues();
if (fitUnits == null)
throw new ParseException($"Could not read data units row on line number {CsvReader.Row}");
throw new ParseException($"Could not read data units row on line number {CsvReader.Context.Row}");
return ParseLeafGasComparisonSet(fittingTitles, matchCurveId).ToArray();
}
@@ -32,10 +32,10 @@ namespace LeafWeb.Core.Parsers
{
var fittingTitles = GetNextCsvRowValues();
if (fittingTitles == null)
throw new ParseException($"Could not read data header row on line number {CsvReader.Row}");
throw new ParseException($"Could not read data header row on line number {CsvReader.Context.Row}");
var fitUnits = GetNextCsvRowValues();
if (fitUnits == null)
throw new ParseException($"Could not read data units row on line number {CsvReader.Row}");
throw new ParseException($"Could not read data units row on line number {CsvReader.Context.Row}");
return ExtractSectionCurveIds(fittingTitles).Distinct().ToArray();
}
@@ -53,7 +53,7 @@ namespace LeafWeb.Core.Parsers
.Create(fittingTitles, new[] {values});
yield return fittingInfo[0].CurveID;
while (!CsvReader.IsRecordEmpty())
while (CsvReader.Context.Record.Length != 0)
values = GetNextCsvRowValues();
} while (values != null);
}
@@ -71,12 +71,11 @@ namespace LeafWeb.Core.Parsers
while (true)
{
var values = GetNextCsvRowValues();
if (CsvReader.IsRecordEmpty())
if (values == null) // end of file
yield break;
if (string.IsNullOrEmpty(CsvReader.Context.RawRecord))
continue;
//throw new ParseException($"Encountered empty line while reading fitting info on line {CsvReader.Row}");
if (values == null) // end of file
yield break;
if (matcher.IsPropertiesTitlesMatch(values))
if (matcher.IsPropertiesTitlesMatch(values))
{
photosyntheticTitles = values;
break;
@@ -97,7 +96,7 @@ namespace LeafWeb.Core.Parsers
while (true)
{
var values = GetNextCsvRowValues();
if (CsvReader.IsRecordEmpty()) // end of set
if (CsvReader.Context.Record.Length == 0) // end of set
break;
if (values == null)
{
+10 -10
View File
@@ -43,11 +43,11 @@ namespace LeafWeb.Core.Parsers
for (var i = 0; i < 10; i++)
{
if (!CsvReader.Read())
throw new ParseException("Could not read line number " + CsvReader.Row);
throw new ParseException("Could not read line number " + CsvReader.Context.Row);
string field;
if (!CsvReader.TryGetField(0, out field))
throw new ParseException("Could not read first field on line number " + CsvReader.Row);
throw new ParseException("Could not read first field on line number " + CsvReader.Context.Row);
items.Add(field);
}
return ParsedObjectFactory<LeafInputData>.Create(items.ToArray());
@@ -57,13 +57,13 @@ namespace LeafWeb.Core.Parsers
{
var titles = GetNextCsvRowValues();
if (titles == null)
throw new ParseException("Could not read site header row on line number " + CsvReader.Row);
throw new ParseException("Could not read site header row on line number " + CsvReader.Context.Row);
var units = GetNextCsvRowValues();
if (units == null)
throw new ParseException("Could not read site units row on line number " + CsvReader.Row);
throw new ParseException("Could not read site units row on line number " + CsvReader.Context.Row);
var values = GetNextCsvRowValues();
if (values == null)
throw new ParseException("Could not read site value row on line number " + CsvReader.Row);
throw new ParseException("Could not read site value row on line number " + CsvReader.Context.Row);
var items = new List<Tuple<string, string>>();
for (var i = 0; i < titles.Length && i < values.Length; i++)
@@ -78,13 +78,13 @@ namespace LeafWeb.Core.Parsers
{
var titles = GetNextCsvRowValues();
if (titles == null)
throw new ParseException("Could not read photosynthetic header row on line number " + CsvReader.Row);
throw new ParseException("Could not read photosynthetic header row on line number " + CsvReader.Context.Row);
var units = GetNextCsvRowValues();
if (units == null)
throw new ParseException("Could not read photosynthetic units row on line number " + CsvReader.Row);
throw new ParseException("Could not read photosynthetic units row on line number " + CsvReader.Context.Row);
var values = GetNextCsvRowValues();
if (values == null)
throw new ParseException("Could not read photosynthetic value row on line number " + CsvReader.Row);
throw new ParseException("Could not read photosynthetic value row on line number " + CsvReader.Context.Row);
var items = new List<Tuple<string, string>>();
for (var i = 0; i < titles.Length && i < values.Length; i++)
@@ -99,10 +99,10 @@ namespace LeafWeb.Core.Parsers
{
var titles = GetNextCsvRowValues();
if (titles == null)
throw new ParseException("Could not read data header row on line number " + CsvReader.Row);
throw new ParseException("Could not read data header row on line number " + CsvReader.Context.Row);
var units = GetNextCsvRowValues();
if (units == null)
throw new ParseException("Could not read data units row on line number " + CsvReader.Row);
throw new ParseException("Could not read data units row on line number " + CsvReader.Context.Row);
var valueArrays = new List<string[]>();
while (true)