public void TestGetPODetailsID()
        {
            foreach (DbConnection connection in emptyConnections)
            {
                PredictedObservedDetails details = new PredictedObservedDetails();
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, "wheat.apsimx", details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, "wheat.apsimx", details));

                details.DatabaseTableName = "PredictedObserved";

                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, "wheat.apsimx", details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, "wheat.apsimx", details));
            }

            foreach (DbConnection connection in populousConnections)
            {
                PredictedObservedDetails details = new PredictedObservedDetails();
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, "wheat.apsimx", details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, "wheat.apsimx", details));

                details.DatabaseTableName = "PredictedObserved";

                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, null, details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 0, "wheat.apsimx", details));
                Assert.AreEqual(0, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, null, details));
                Assert.AreEqual(1, DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, 1, "wheat.apsimx", details));
            }
        }
        /// <summary>
        /// This will Update the 'Accepted' Stats details and referenced id's from one Pull Request ID to another Pull Request ID.
        /// </summary>
        /// <param name="currentPullRequestID"></param>
        /// <param name="acceptedPullRequestID"></param>
        private void UpdateAcceptedStatsforPullRequest(int currentPullRequestID, int acceptedPullRequestID)
        {
            //Do I need to update the log table
            string HelperMessage = string.Empty;
            string connectStr    = Utilities.GetConnectionString();

            using (SqlConnection sqlCon = new SqlConnection(connectStr))
            {
                sqlCon.Open();
                try
                {
                    List <ApsimFile> currentApsimFiles = GetApsimFilesRelatedPredictedObservedData(sqlCon, currentPullRequestID);

                    //need to get the (latest) run date for the acceptedPullRequestID
                    DateTime acceptedRunDate = DBFunctions.GetLatestPullRequestRunDate(sqlCon, acceptedPullRequestID);

                    foreach (ApsimFile currentApsimFile in currentApsimFiles)
                    {
                        foreach (PredictedObservedDetails currentPODetails in currentApsimFile.PredictedObserved)
                        {
                            int acceptedPredictedObservedDetailsID = DBFunctions.GetAcceptedPredictedObservedDetailsId(sqlCon, acceptedPullRequestID, currentApsimFile.FileName, currentPODetails);
                            if (acceptedPredictedObservedDetailsID > 0)
                            {
                                HelperMessage = string.Format("Current Pull Request Id: {0} to Accepted Pull Request Id: {1} for FileName: {2} - PO TableName: {3}, Current PO Id: {4}, Accepted PO Id: {5}.", currentPullRequestID, acceptedPullRequestID, currentApsimFile.FileName, currentPODetails.DatabaseTableName, currentPODetails.ID, acceptedPredictedObservedDetailsID);

                                DataTable currentPOValues = DBFunctions.GetPredictedObservedValues(sqlCon, currentPODetails.ID);
                                DataTable currentStats    = Tests.CalculateStatsOnPredictedObservedValues(currentPOValues);

                                DataTable acceptedPOValues = DBFunctions.GetPredictedObservedValues(sqlCon, acceptedPredictedObservedDetailsID);
                                DataTable acceptedStats    = Tests.CalculateStatsOnPredictedObservedValues(acceptedPOValues);

                                //DataTable acceptedStats = DBFunctions.getPredictedObservedTestsData(connectStr, acceptedPredictedObservedDetailsID);

                                DataTable dtTests = Tests.MergeTestsStatsAndCompare(currentStats, acceptedStats);
                                DBFunctions.AddPredictedObservedTestsData(sqlCon, currentApsimFile.FileName, currentPODetails.ID, currentPODetails.DatabaseTableName, dtTests);

                                //Update the accepted reference for Predicted Observed Values, so that it can be
                                DBFunctions.UpdatePredictedObservedDetails(sqlCon, acceptedPredictedObservedDetailsID, currentPODetails.ID);
                            }
                        }
                    }
                    DBFunctions.UpdateApsimFileAcceptedDetails(sqlCon, currentPullRequestID, acceptedPullRequestID, acceptedRunDate);
                }
                catch (Exception ex)
                {
                    Utilities.WriteToLogFile(string.Format("ERROR:  Unable to update {0}: {2}", HelperMessage, ex.Message.ToString()));;
                }
            }
        }
示例#3
0
        /// <summary>
        /// Returns the PredictedObservedTests data for 'Accepted' data set, based on matching 'Current' Details
        /// </summary>
        /// <param name="conStr"></param>
        /// <param name="currentApsimID"></param>
        /// <param name="currentApsim"></param>
        /// <param name="poDetail"></param>
        /// <param name="predictedObservedId"></param>
        /// <param name="acceptedPredictedObservedDetailsID"></param>
        /// <returns></returns>
        private static DataTable RetrieveAcceptedStatsData(DbConnection connection, int currentApsimID, ApsimFile currentApsim, PredictedObservedDetails poDetail, int predictedObservedId, ref int acceptedPredictedObservedDetailsID)
        {
            DataTable acceptedStats = new DataTable();
            ApsimFile acceptedApsim = new ApsimFile();

            try
            {
                string strSQL = "SELECT * FROM ApsimFiles WHERE StatsAccepted = 1 AND PullRequestId != @PullRequestId ORDER BY RunDate DESC";
                strSQL = Utilities.Limit(connection, strSQL, 1);
                using (DbCommand command = connection.CreateCommand(strSQL))
                {
                    command.CommandType = CommandType.Text;
                    command.AddParamWithValue("@PullRequestId", currentApsim.PullRequestId);

                    using (DbDataReader sdReader = command.ExecuteReader())
                    {
                        while (sdReader.Read())
                        {
                            acceptedApsim.ID                    = sdReader.GetInt32(0);
                            acceptedApsim.PullRequestId         = sdReader.GetInt32(1);
                            acceptedApsim.FileName              = sdReader.GetString(2);
                            acceptedApsim.FullFileName          = sdReader.GetString(3);
                            acceptedApsim.RunDate               = sdReader.GetDateTime(4);
                            acceptedApsim.StatsAccepted         = sdReader.GetBoolean(5);
                            acceptedApsim.IsMerged              = sdReader.GetBoolean(6);
                            acceptedApsim.SubmitDetails         = sdReader.GetString(7);
                            acceptedApsim.AcceptedPullRequestId = sdReader.IsDBNull(8) ? 0 : sdReader.GetInt32(8);
                        }
                    }
                }

                if (acceptedApsim.PullRequestId > 0)
                {
                    DBFunctions.UpdateApsimFileAcceptedDetails(connection, currentApsim.PullRequestId, acceptedApsim.PullRequestId, acceptedApsim.RunDate);

                    ////get the PredictedObservedDetail.ID for the records that match our current record 'matching' criteria
                    acceptedPredictedObservedDetailsID = DBFunctions.GetAcceptedPredictedObservedDetailsId(connection, acceptedApsim.PullRequestId, currentApsim.FileName, poDetail);
                    ////Now retreieve the matching tests data for our predicted observed details
                    acceptedStats = DBFunctions.GetPredictedObservedTestsData(connection, acceptedPredictedObservedDetailsID);
                }
            }
            catch (Exception ex)
            {
                Utilities.WriteToLogFile(string.Format("    ERROR:  Unable to RetrieveAcceptedStatsData for ApsimFile {0}: Pull Request Id {1}: {2}.", currentApsim.FileName, currentApsim.PullRequestId, ex.Message.ToString()));
            }
            return(acceptedStats);
        }
示例#4
0
        /// <summary>
        // Returns the PredictedObservedTests data for 'Accepted' data set, based on matching 'Current' Details
        /// </summary>
        /// <param name="conStr"></param>
        /// <param name="currentApsimID"></param>
        /// <param name="currentApsim"></param>
        /// <param name="poDetail"></param>
        /// <param name="predictedObservedId"></param>
        /// <param name="acceptedPredictedObservedDetailsID"></param>
        /// <returns></returns>
        private static DataTable RetrieveAcceptedStatsData(SqlConnection sqlCon, int currentApsimID, ApsimFile currentApsim, PredictedObservedDetails poDetail, int predictedObservedId, ref int acceptedPredictedObservedDetailsID)
        {
            DataTable acceptedStats = new DataTable();
            ApsimFile acceptedApsim = new ApsimFile();

            try
            {
                string strSQL = "SELECT TOP 1 * FROM ApsimFiles WHERE StatsAccepted = 1 AND PullRequestId != @PullRequestId ORDER BY RunDate DESC";
                using (SqlCommand commandER = new SqlCommand(strSQL, sqlCon))
                {
                    commandER.CommandType = CommandType.Text;
                    commandER.Parameters.AddWithValue("@PullRequestId", currentApsim.PullRequestId);

                    //SqlDataReader sdReader = commandER.ExecuteReader();
                    //while (sdReader.Read())
                    //{
                    //    acceptedApsim.ID = sdReader.GetInt32(0);
                    //    acceptedApsim.PullRequestId = sdReader.GetInt32(1);
                    //    acceptedApsim.FileName = sdReader.GetString(2);
                    //    acceptedApsim.FullFileName = sdReader.GetString(3);
                    //    acceptedApsim.RunDate = sdReader.GetDateTime(4);
                    //    acceptedApsim.StatsAccepted = sdReader.GetBoolean(5);
                    //    acceptedApsim.IsMerged = sdReader.GetBoolean(6);
                    //    acceptedApsim.SubmitDetails = sdReader.GetString(7);
                    //    if (sdReader.IsDBNull(8))
                    //    {
                    //        acceptedApsim.AcceptedPullRequestId = 0;
                    //    }
                    //    else
                    //    {
                    //        acceptedApsim.AcceptedPullRequestId = sdReader.GetInt32(8);
                    //    }
                    //}
                    //sdReader.Close();
                    string response   = Comms.SendQuery(commandER, "reader");
                    var    jsonObject = JsonConvert.DeserializeObject(response);

                    DataTable dt = JsonConvert.DeserializeObject <DataTable>(jsonObject.ToString());
                    foreach (DataRow row in dt.Rows)
                    {
                        acceptedApsim.ID            = Convert.ToInt32(row[0].ToString());
                        acceptedApsim.PullRequestId = Convert.ToInt32(row[1].ToString());
                        acceptedApsim.FileName      = row[2].ToString();
                        acceptedApsim.FullFileName  = row[3].ToString();
                        acceptedApsim.RunDate       = Convert.ToDateTime(row[4].ToString());
                        acceptedApsim.StatsAccepted = Convert.ToBoolean(row[5].ToString());
                        acceptedApsim.IsMerged      = Convert.ToBoolean(row[6].ToString());
                        acceptedApsim.SubmitDetails = row[7].ToString();
                        if (row[8] == DBNull.Value)
                        {
                            acceptedApsim.AcceptedPullRequestId = 0;
                        }
                        else
                        {
                            acceptedApsim.AcceptedPullRequestId = Convert.ToInt32(row[8].ToString());
                        }
                    }
                }

                if (acceptedApsim.PullRequestId > 0)
                {
                    DBFunctions.UpdateApsimFileAcceptedDetails(sqlCon, currentApsim.PullRequestId, acceptedApsim.PullRequestId, acceptedApsim.RunDate);

                    ////get the PredictedObservedDetail.ID for the records that match our current record 'matching' criteria
                    acceptedPredictedObservedDetailsID = DBFunctions.GetAcceptedPredictedObservedDetailsId(sqlCon, acceptedApsim.PullRequestId, currentApsim.FileName, poDetail);
                    ////Now retreieve the matching tests data for our predicted observed details
                    acceptedStats = DBFunctions.GetPredictedObservedTestsData(sqlCon, acceptedPredictedObservedDetailsID);
                }
            }
            catch (Exception ex)
            {
                Utilities.WriteToLogFile(string.Format("    ERROR:  Unable to RetrieveAcceptedStatsData for ApsimFile {0}: Pull Request Id {1}: {2}.", currentApsim.FileName, currentApsim.PullRequestId, ex.Message.ToString()));
            }
            return(acceptedStats);
        }