aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.ColorLib.LightInksTest.CLI/CalibrationDataSCVReader.cs
blob: c019945db4cb4f35919e632bfab2b838da0f54b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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<LiquidType, CalibrationData> _calibrationDataDictionary = null;
        public Dictionary<LiquidType, CalibrationData> 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<LiquidType, CalibrationData> FromFile(String filePath)
        {
                List<CalibrationDataCsvModel> rows = CsvFile.Read<CalibrationDataCsvModel>(new CsvSource(filePath)).ToList();

                Dictionary<LiquidType, CalibrationData> calibrationDataDictionary = new Dictionary<LiquidType, CalibrationData>();

                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;
        }
    }
     
}