using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.CSV; using Tango.PMR.ColorLab; namespace Tango.ColorLib.LightInksTest.CLI { public class CalibrationDataCsvModel { [CsvOrder(0)] public String LiquidType { get; set; } [CsvOrder(1)] public String X { get; set; } [CsvOrder(2)] public String Y { get; set; } internal bool IsLiquidTypeNullOrEmpty() { if (String.IsNullOrWhiteSpace(LiquidType) || String.IsNullOrEmpty(LiquidType)) return true; return false; } } public class CalibrationDataSCVReader { private Dictionary _calibrationDataDictionary = null; public Dictionary CalibrationDataDictionary { get{ return _calibrationDataDictionary; } set{ _calibrationDataDictionary = value; } } private static CalibrationDataSCVReader _instance = null; public static CalibrationDataSCVReader getInstance()// not thread-safety { if (_instance != null) { return _instance; } return (_instance = new CalibrationDataSCVReader()); } private CalibrationDataSCVReader() { CalibrationDataDictionary = FromFile(@"Catalog_CalibrationData.csv"); } public Dictionary FromFile(String filePath) { List rows = CsvFile.Read(new CsvSource(filePath)).ToList(); Dictionary calibrationDataDictionary = new Dictionary(); LiquidType liquidType = LiquidType.Cyan; CalibrationData data; for (int i = 0; i < rows.Count; i++) { var row = rows[i]; double x,y; if (!row.IsLiquidTypeNullOrEmpty() && Enum.TryParse(row.LiquidType, out liquidType) && !calibrationDataDictionary.ContainsKey(liquidType)) { data = new CalibrationData{ LiquidType = liquidType}; calibrationDataDictionary[liquidType] = data; } if(calibrationDataDictionary.TryGetValue( liquidType, out data) && Double.TryParse(row.X, out x) && Double.TryParse(row.Y, out y)) { data.CalibrationPoints.Add(new CalibrationPoint() { X = x, Y = y }); } } return calibrationDataDictionary; } } }