コード例 #1
0
        public void SetUp()
        {
            var settings = new CsvSettings(@"../../../Tmp/products.csv", @"../../../Tmp/products_corr_no_header.csv");
            var reader   = ReaderFactory.CreateReader(settings);

            _products         = reader.ReadProducts().ToList();
            _correlationTable = (CorrelationTable)reader.ReadTable(TableType.Correlation);
            ((CsvSettings)reader.Settings).PathToTable = @"../../../Tmp/substitutes.csv";
            _substitutesTable = (SubstitutesTable)reader.ReadTable(TableType.Substitutes);
        }
コード例 #2
0
        /// <summary>
        /// Чтение корреляционной таблицы
        /// </summary>
        /// <param name="table"></param>
        static public CorrelationTable ReadCorrelationTable(string filename)
        {
            var raw_data  = new List <List <int> >();               //Числа из файла
            var x_headers = new List <Range>();
            var y_headers = new List <Range>();

            int    width = -1;                                      //Ширина таблицы
            double bx = -1, by = -1;

            try
            {
                //Чтение файла
                using (var sr = new StreamReader(filename))
                {
                    string line;

                    //Читаем первую линию с интервалами
                    line = sr.ReadLine();
                    if (line == null)
                    {
                        throw new ParseException("Файл пуст");
                    }
                    var strings = separate_line(line);
                    x_headers = parse_ranges(strings[1]);

                    //Читаем остальные оинии
                    while ((line = sr.ReadLine()) != null)
                    {
                        strings = separate_line(line);
                        y_headers.Add(Range.Parse(strings[0]));                             //Опеределяем интервал из первого столбца
                        var line_data = parse_values(strings[1]);

                        //Проврека на равенство длин всех строк
                        if (width == -1)
                        {
                            width = line_data.Count;
                        }
                        else if (width != line_data.Count)
                        {
                            throw new ParseException("Длины строк в таблице не совпадают");
                        }

                        raw_data.Add(line_data);
                    }
                }
            }catch (FormatException exp)
            {
                throw new ParseException("В таблице присутствует значение в неправильом формате");
            }

            //Составление таблицы из данных
            //Определение размера интервала и проверка того, что они все одинаковы
            foreach (var v in x_headers)
            {
                if (!set_or_not_update(ref bx, v.Length))
                {
                    throw new ParseException("Длины интервалов должны быть одинаковы");
                }
            }
            foreach (var v in y_headers)
            {
                if (!set_or_not_update(ref by, v.Length))
                {
                    throw new ParseException("Длины интервалов должны быть одинаковы");
                }
            }


            var table = new CorrelationTable(x_headers.Count, y_headers.Count, bx, by);

            //Перенос интервалов
            for (int i = 0; i < x_headers.Count; i++)
            {
                table.SetX(i, x_headers[i]);
            }

            for (int i = 0; i < y_headers.Count; i++)
            {
                table.SetY(i, y_headers[i]);
            }

            //Перенос значений
            for (int x = 0; x < x_headers.Count; x++)
            {
                for (int y = 0; y < y_headers.Count; y++)
                {
                    table[x, y] = raw_data[y][x];
                }
            }



            return(table);
        }
コード例 #3
0
 public PacketBuilder AddCorrelationTable(CorrelationTable table)
 {
     _correlationTable = table;
     return(this);
 }