Пример #1
0
        public void SaveCalibrationResultWithoutTest()
        {
            _testDb.CreateDatabase();
            _testDb.InitTestSchema();
            _testDb.PopulateTestAccelData();
            _testDb.PopulateTestAccelParams();
            _testDb.PopulateTestCalibrationResult();
            string databaseFile = _testDbFile;
            ILogger logger = new LoggerStub();
            var target = new LocalDatabaseStorage(databaseFile, logger);
            target.Open();
            var data = new CalibrationResult
            {
                Clusters = new List<AccelData>
                                              {
                                                  new AccelData { Id = 1,Date = DateTime.Now,Ax = 10.0, Ay = 20.0},
                                                  new AccelData { Id = 2,Date = DateTime.Now,Ax = 20.0, Ay = 30.0}
                                              },
                Parameters = new AccelParams { Id = 1,Date = DateTime.Now }
            };

            target.SaveCalibrationResult(data);

            Assert.AreEqual(_testDb.GetIdCount("accel_params"), 3, "проверяем, что калибровочные параметры не добавлены");
            Assert.AreEqual(_testDb.GetIdCount("accel_data"), 3, "проверяем, что данные акселерометров не добавлены");
            Assert.AreEqual(_testDb.GetIdCount("calibr_result"), 2, "проверяем, что результаты калибровки записаны заново");

            target.Close();
        }
Пример #2
0
 /// <summary>
 /// Сохраняет данные при калибровке датчика.
 /// </summary>
 /// <remarks>Связывает и сохраняет данные для последующей выборки  GetCalibrationResultByParamsId</remarks>
 /// <param name="parameters">результат калбировки</param>
 /// <param name="clusters">данные используемые для калибровки</param>
 public void SaveCalibrationResult(CalibrationResult data)
 {
     // сохраняем/обновляем параметры
     SaveAccelParams(data.Parameters);
     // сохраняем/обновляем кластеры
     foreach (var accelData in data.Clusters)
     {
         SaveAccelData(accelData);
     }
     // удаляем старые связи между кластерами и калибровочными данными
     DeleteCalibrationResult(data.Parameters);
     // создаем записи во вспомогательной таблице
     CreateCalibrationResult(data);
 }
Пример #3
0
        /// <summary>
        /// Создает записи в вспомогательной таблицы для связи калибровочных параметров и кластеров
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="clusters"></param>
        private void CreateCalibrationResult(CalibrationResult data)
        {
            var command = new SqlCeCommand();
            command.Connection = _connection;
            command.CommandText = @"INSERT INTO calibr_result (accelDataId,accelParamsId) VALUES(@accelDataId,@accelParamsId)";

            foreach (var accelData in data.Clusters)
            {
                command.Parameters.Clear();
                command.Parameters.AddWithValue("@accelDataId", accelData.Id);
                command.Parameters.AddWithValue("@accelParamsId", data.Parameters.Id);
                command.ExecuteNonQuery();
            }
        }
Пример #4
0
 /// <summary>
 /// Делает выборку по результатам калибровки для указанного идентификатора калибровочных параметров
 /// </summary>
 public CalibrationResult GetCalibrationResultByParams(AccelParams parameters)
 {
     var result = new CalibrationResult {Parameters = parameters};
     var command = new SqlCeCommand();
     command.Connection = _connection;
     command.CommandText = @"SELECT data.Id, data.date, data.Ax, data.Ay
                             FROM calibr_result result JOIN accel_data data
                                 ON (result.accelDataId = data.id)
                             WHERE result.accelParamsId = @paramsId";
     command.Parameters.AddWithValue("@paramsId", parameters.Id);
     var reader = command.ExecuteReader();
     while (reader.Read())
     {
         var data = new AccelData();
         data.Id = reader.GetInt32(0);
         data.Date = reader.GetDateTime(1);
         data.Ax = reader.GetDouble(2);
         data.Ay = reader.GetDouble(3);
         result.Clusters.Add(data);
     }
     return result;
 }