Adding EF initialization
This commit is contained in:
@@ -7,19 +7,22 @@ namespace LeafWeb.Core.Parsers
|
||||
{
|
||||
public class CsvParserBase : IDisposable
|
||||
{
|
||||
protected readonly FileSystemInfo CsvFile;
|
||||
private readonly StreamReader _reader;
|
||||
protected readonly CsvReader CsvReader;
|
||||
|
||||
protected CsvParserBase(FileSystemInfo csvFile)
|
||||
{
|
||||
CsvFile = csvFile;
|
||||
_reader = OpenCsv(csvFile);
|
||||
var csvConfiguration = new CsvConfiguration { HasHeaderRecord = false, IgnoreBlankLines = false, IgnoreReadingExceptions = true};
|
||||
CsvReader = new CsvReader(_reader, csvConfiguration);
|
||||
}
|
||||
|
||||
internal static StreamReader OpenCsv(FileSystemInfo csvFile)
|
||||
{
|
||||
if (!csvFile.Exists)
|
||||
throw new FileNotFoundException($"Cannot find file '{csvFile.Name}'");
|
||||
|
||||
_reader = File.OpenText(csvFile.FullName);
|
||||
var csvConfiguration = new CsvConfiguration { HasHeaderRecord = false, IgnoreBlankLines = false, IgnoreReadingExceptions = true};
|
||||
CsvReader = new CsvReader(_reader, csvConfiguration);
|
||||
return File.OpenText(csvFile.FullName);
|
||||
}
|
||||
|
||||
protected string[] GetNextCsvRowValues()
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using CsvHelper;
|
||||
using CsvHelper.Configuration;
|
||||
using LeafWeb.Core.Models;
|
||||
|
||||
namespace LeafWeb.Core.Parsers
|
||||
{
|
||||
public class FluxnetSiteCsvParser
|
||||
{
|
||||
private readonly FileSystemInfo _csvFile;
|
||||
|
||||
private sealed class FluxnetSiteMap : CsvClassMap<FluxnetSite>
|
||||
{
|
||||
public FluxnetSiteMap()
|
||||
{
|
||||
Map(m => m.FluxnetId);
|
||||
Map(m => m.SiteName);
|
||||
Map(m => m.Country);
|
||||
Map(m => m.LandUnit).Name("land_unit");
|
||||
}
|
||||
}
|
||||
|
||||
public FluxnetSiteCsvParser(FileSystemInfo csvFile)
|
||||
{
|
||||
_csvFile = csvFile;
|
||||
}
|
||||
|
||||
public IList<FluxnetSite> Parse()
|
||||
{
|
||||
using (var reader = CsvParserBase.OpenCsv(_csvFile))
|
||||
{
|
||||
var csvConfiguration = new CsvConfiguration {IsHeaderCaseSensitive = false};
|
||||
csvConfiguration.RegisterClassMap<FluxnetSiteMap>();
|
||||
var csvReader = new CsvReader(reader, csvConfiguration);
|
||||
return csvReader.GetRecords<FluxnetSite>().ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user