Adding EF initialization

This commit is contained in:
2016-01-29 11:25:44 -05:00
parent 37a7a24436
commit 68a77366e9
25 changed files with 2534 additions and 29 deletions
+8 -5
View File
@@ -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()
+41
View File
@@ -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();
}
}
}
}