using CsvHelper; using DTS.Common.Classes; using DTS.Common.Enums.Sensors; using DTS.Common.Import.Interfaces; using System.Collections.Generic; namespace DTS.Common.Import.Parsers.CSV { public class Version6CSVTestParser : IParseCSVTest { public int Version => 6; public void ParseVersion(CsvReader csvReader, TestSetupImportData tsid) { var foundHeader = false; List tokens = new List(); while (!foundHeader && csvReader.Read()) { tokens = CsvUtil.ReadFields(csvReader, false); if (null == tokens) { return; } if (0 == tokens.Count || string.IsNullOrEmpty(tokens[0])) { continue; } var field = CSVImportTags.GetTagForString(tokens[0]); var version = CSVImportTags.GetVersionForTag(field); if (version != 6) { return; } //no version 5 tokens in here ... foundHeader = true; } ReadBody(csvReader, tsid, tokens); } private static int ParseIntValue(string val) { return int.TryParse(val, out var iTemp) ? iTemp : default; } private static bool ParseBoolValue(string val) { return bool.TryParse(val, out var bTemp) ? bTemp : default; } private static void ReadBody(CsvReader csvReader, TestSetupImportData testSetupImportData, List tokens) { while (csvReader.Read()) { var tokens2 = CsvUtil.ReadFields(csvReader, false); if (null == tokens2 || 0 == tokens2.Count || string.IsNullOrWhiteSpace(tokens2[1])) { //we found a new line, we are done with this table break; } var dasSerial = string.Empty; for (var i = 0; i < tokens.Count && i < tokens2.Count; i++) { var field = CSVImportTags.GetTagForString(tokens[i]); var val = tokens2[i]; switch (field) { case CSVImportTags.Tags.DASSerial: dasSerial = val; break; case CSVImportTags.Tags.DASSampleRate: { testSetupImportData.SampleRateForDAS[dasSerial] = ParseIntValue(val); } break; case CSVImportTags.Tags.PTPDomainId: { testSetupImportData.DomainIdForDAS[dasSerial] = (uint)ParseIntValue(val); } break; case CSVImportTags.Tags.ClockMaster: { testSetupImportData.IsClockMaster[dasSerial] = ParseBoolValue(val); } break; } } } } } }