Replace CntrlComparison with LeafGasComparison
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using LeafWeb.Core.Entities;
|
||||
using LeafWeb.Core.Utility;
|
||||
|
||||
namespace LeafWeb.Core.Parsers
|
||||
{
|
||||
public class LeafGasComparisonParser : CsvParserBase
|
||||
{
|
||||
public LeafGasComparisonParser(FileSystemInfo csvFile) : base(csvFile)
|
||||
{
|
||||
}
|
||||
|
||||
public LeafGasComparisonParser(byte[] fileContents) : base(fileContents)
|
||||
{
|
||||
}
|
||||
|
||||
public LeafGasComparison[] Parse()
|
||||
{
|
||||
var fittingTitles = GetNextCsvRowValues();
|
||||
if (fittingTitles == null)
|
||||
throw new ParseException($"Could not read data header row on line number {CsvReader.Row}");
|
||||
var fitUnits = GetNextCsvRowValues();
|
||||
if (fitUnits == null)
|
||||
throw new ParseException($"Could not read data units row on line number {CsvReader.Row}");
|
||||
|
||||
return ParseLeafGasComparisonSet(fittingTitles).ToArray();
|
||||
}
|
||||
|
||||
private IEnumerable<LeafGasComparison> ParseLeafGasComparisonSet(string[] fittingTitles)
|
||||
{
|
||||
var endOfFile = false;
|
||||
while (!endOfFile)
|
||||
{
|
||||
// First Section
|
||||
var fittingValues = new List<string[]>();
|
||||
string[] photosyntheticTitles;
|
||||
while (true)
|
||||
{
|
||||
var values = GetNextCsvRowValues();
|
||||
if (CsvReader.IsRecordEmpty())
|
||||
throw new ParseException($"Encountered empty line while readding fitting info on line {CsvReader.Row}");
|
||||
if (values == null) // end of file
|
||||
yield break;
|
||||
if (ParsedObjectFactory<LeafGasComparisonPhotosyntheticInfo>.IsPropertiesTitlesMatch(values))
|
||||
{
|
||||
photosyntheticTitles = values;
|
||||
break;
|
||||
}
|
||||
fittingValues.Add(values);
|
||||
}
|
||||
|
||||
var photosyntheticValues = new List<string[]>();
|
||||
while (true)
|
||||
{
|
||||
var values = GetNextCsvRowValues();
|
||||
if (CsvReader.IsRecordEmpty()) // end of set
|
||||
break;
|
||||
if (values == null)
|
||||
{
|
||||
endOfFile = true;
|
||||
break;
|
||||
}
|
||||
photosyntheticValues.Add(values);
|
||||
}
|
||||
|
||||
var fittingInfo =
|
||||
ParsedObjectFactory<LeafGasComparisonFittingInfo>
|
||||
.Create(fittingTitles, fittingValues.ToArray());
|
||||
var photosyntheticInfo =
|
||||
ParsedObjectFactory<LeafGasComparisonPhotosyntheticInfo>
|
||||
.Create(photosyntheticTitles, photosyntheticValues.ToArray());
|
||||
|
||||
yield return new LeafGasComparison
|
||||
{
|
||||
FittingInfo = fittingInfo,
|
||||
PhotosyntheticInfo = photosyntheticInfo
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user