Пример #1
0
 private static void UpdateTestSampleParams(SqlCommand cmd, Sample dataPoint)
 {
     try
     {
         cmd.Parameters["@SampleTime"].Value = dataPoint.SampleTime;
         cmd.Parameters["@Torque"].Value     = dataPoint.Torque;
         cmd.Parameters["@Angle"].Value      = dataPoint.Angle;
     }
     catch (Exception ex)
     {
         Debug.WriteLine(Msg.GeneralExceptionMessage(ex, "UpdateTestSampleParams"));
         throw;
     }
 }
Пример #2
0
        internal static void UpdateSpeedSettings(int runSpeed, int moveSpeed, int testId)
        {
            SqlConnection conn = null;

            try
            {
                var sel = "up_SaveTestSettings";
                conn = TwisterConnection();

                SqlCommand cmd = CreateCommand(conn, sel);
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "@runSpeed",
                    Value         = runSpeed
                });
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "@moveSpeed",
                    Value         = moveSpeed
                });
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "@testId",
                    Value         = testId
                });

                int rowsAffected = cmd.ExecuteNonQuery();
                if (rowsAffected != 1)
                {
                    string message = $"Error saving speed settings. Expected 1 update using " +
                                     $"run speed = {runSpeed} and move speed = {moveSpeed}.";
                    throw new Exception(message);
                }

                cmd.Dispose();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Msg.GeneralExceptionMessage(ex, "SaveToDatabase"));
            }
            finally
            {
                CloseConnection(conn);
            }
        }
Пример #3
0
        /// <summary>
        ///     Populate a template that already has the TemplateId property determined.
        /// </summary>
        /// <param name="template">A completed TestTemplate.</param>
        internal static void LoadTemplateThatHasId(TestTemplate template)
        {
            SqlConnection conn = null;

            try
            {
                var sel = "up_LoadTestSettings";
                conn = TwisterConnection();

                SqlCommand cmd = CreateCommand(conn, sel);
                cmd.Parameters.Add(new SqlParameter
                {
                    ParameterName = "@templateId",
                    Value         = template.Id
                });

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        template.Description            = dr["TestDescription"] as string;
                        template.ClockwiseTorque        = (int)dr["ClockwiseTorque"];
                        template.CounterclockwiseTorque = (int)dr["CounterclockwiseTorque"];
                        template.RunSpeed  = (int)dr["RunSpeed"];
                        template.MoveSpeed = (int)dr["MoveSpeed"];
                    }
                }

                cmd.Dispose();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Msg.GeneralExceptionMessage(ex, "SaveToDatabase"));
            }
            finally
            {
                CloseConnection(conn);
            }
        }
Пример #4
0
        internal static int SaveToDatabase(TorqueTest test)
        {
            SqlConnection conn = null;

            try
            {
                var rowsAffected = 0;
                var sel          = "up_SaveTwisterTest";
                conn = TwisterConnection();

                SqlCommand cmd = CreateCommand(conn, sel);
                SetTorqeTestParameters(cmd, test);

                TransactionOptions options = new TransactionOptions();

                /* It allow shared locks and read only committed data. That means
                 * never read changed data that are in the middle of any transaction.
                 */
                options.IsolationLevel = IsolationLevel.ReadCommitted;

                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, options))
                {
                    // save the test.
                    rowsAffected += cmd.ExecuteNonQuery();

                    var spDtPt = "up_SaveDataPoint";
                    cmd.Dispose();
                    cmd = CreateCommand(conn, spDtPt);

                    // save each data point.
                    foreach (Sample dataPoint in test.Data)
                    {
                        if (cmd.Parameters.Count == 0)
                        {
                            SetTestSampleParameters(cmd, dataPoint, test.TestId);
                        }
                        else
                        {
                            UpdateTestSampleParams(cmd, dataPoint);
                        }

                        // increment number of rows affected.
                        rowsAffected += cmd.ExecuteNonQuery();
                    }

                    scope.Complete();
                }

                cmd.Dispose();

                return(rowsAffected);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Msg.GeneralExceptionMessage(ex, "SaveToDatabase"));
                return(0);
            }
            finally
            {
                CloseConnection(conn);
            }
        }