using CsvHelper; using DTS.Common.Classes; using DTS.Common.Enums; using DTS.Common.Enums.Sensors; using DTS.Common.Import.Interfaces; using System; using System.Collections.Generic; using System.Linq; namespace DTS.Common.Import.Parsers.CSV { public class Version0CSVTestParser : IParseCSVTest { public int Version => 0; public void ParseVersion(CsvReader csvReader, TestSetupImportData tsid) { var tokens = CsvUtil.ReadFields(csvReader); if (null == tokens || tokens[0] != "Version") { return; } var tokens2 = CsvUtil.ReadFields(csvReader); if (null == tokens2) { return; } for (var i = 0; i < tokens.Count && i < tokens2.Count; i++) { GetValueForField(tsid, tokens, tokens2, i); } } private static double ParseDoubleValue(string val) { return double.TryParse(val, out var iTemp) ? iTemp : default(double); } private static void GetValueForField(TestSetupImportData testSetupImportData, List tokens, List tokens2, int index) { var field = CSVImportTags.GetTagForString(tokens[index]); var val = tokens2[index]; switch (field) { case CSVImportTags.Tags.PostTriggerSec: testSetupImportData.PosttriggerSeconds = ParseDoubleValue(val); break; case CSVImportTags.Tags.PreTriggerSec: { testSetupImportData.PretriggerSeconds = ParseDoubleValue(val); } break; case CSVImportTags.Tags.RecordingMode: { testSetupImportData.RecordingMode = Enum.TryParse(val, out RecordingModes mode) ? mode : default; } break; case CSVImportTags.Tags.SampleRate: { testSetupImportData.SamplesPerSecond = ParseDoubleValue(val); } break; case CSVImportTags.Tags.TestSetupDescription: testSetupImportData.Description = val; break; case CSVImportTags.Tags.TestSetupName: testSetupImportData.Name = val; break; case CSVImportTags.Tags.Version: { testSetupImportData.Version = int.TryParse(val, out var iTemp) ? iTemp : default; } break; case CSVImportTags.Tags.Tags: testSetupImportData.Tags = val.Split(';').ToList(); break; } } } }