예제 #1
0
        public static Dictionary <DateTime, ArchivalPeriodicityCount> GetPeriodicityCountsForEvaluation(Evaluation evaluation, bool discardOutliers)
        {
            var toReturn = new Dictionary <DateTime, ArchivalPeriodicityCount>();

            var calc   = new DatasetTimespanCalculator();
            var result = calc.GetMachineReadableTimespanIfKnownOf(evaluation, discardOutliers);

            using (var con = evaluation.DQERepository.GetConnection())
            {
                var sql =
                    @"SELECT 
      [Year]
      ,[Month]
      ,RowEvaluation
      ,CountOfRecords
  FROM [PeriodicityState]
    where
  Evaluation_ID = " + evaluation.ID + " and PivotCategory = 'ALL' ORDER BY [Year],[Month]";

                using (var cmd = DatabaseCommandHelper.GetCommand(sql, con.Connection, con.Transaction))
                {
                    using (var r = cmd.ExecuteReader())
                    {
                        while (r.Read())
                        {
                            var date = new DateTime((int)r["Year"], (int)r["Month"], 1);

                            //discard outliers before start
                            if (discardOutliers && result.Item1.HasValue && date < result.Item1.Value)
                            {
                                continue;
                            }

                            //discard outliers after end
                            if (discardOutliers && result.Item2.HasValue && date > result.Item2.Value)
                            {
                                continue;
                            }

                            if (!toReturn.ContainsKey(date))
                            {
                                toReturn.Add(date, new ArchivalPeriodicityCount());
                            }

                            var toIncrement = toReturn[date];

                            /*
                             *
                             * Correct
                             * InvalidatesRow
                             * Missing
                             * Wrong
                             * */

                            switch ((string)r["RowEvaluation"])
                            {
                            case "Correct":
                                toIncrement.CountGood += (int)r["CountOfRecords"];
                                toIncrement.Total     += (int)r["CountOfRecords"];
                                break;

                            case "InvalidatesRow": toIncrement.Total += (int)r["CountOfRecords"];
                                break;

                            case "Missing": toIncrement.Total += (int)r["CountOfRecords"];
                                break;

                            case "Wrong": toIncrement.Total += (int)r["CountOfRecords"];
                                break;

                            default: throw new ArgumentOutOfRangeException("Unexpected RowEvaluation '" + r["RowEvaluation"] + "'");
                            }
                        }
                    }
                }
            }

            return(toReturn);
        }
예제 #2
0
        public DQEGraphAnnotation(DQERepository repository, double startX, double startY, double endX, double endY, string text, Evaluation evaluation, DQEGraphType annotationIsForGraphType, string pivotCategory)
        {
            Repository = repository;

            var username = Environment.UserName;

            Repository.InsertAndHydrate(this, new Dictionary <string, object>
            {
                { "StartX", startX },
                { "StartY", startY },
                { "EndX", endX },
                { "EndY", endY },
                { "Text", text },
                { "Evaluation_ID", evaluation.ID },
                { "Username", username },
                { "CreationDate", DateTime.Now },
                { "AnnotationIsForGraph", annotationIsForGraphType },
                { "PivotCategory", pivotCategory }
            });
        }
예제 #3
0
        public static Dictionary <DateTime, ArchivalPeriodicityCount> GetPeriodicityCountsForEvaluation(Evaluation evaluation)
        {
            var toReturn = new Dictionary <DateTime, ArchivalPeriodicityCount>();

            using (var con = evaluation.DQERepository.GetConnection())
            {
                var sql =
                    @"SELECT 
      [Year]
      ,[Month]
	  ,RowEvaluation
	  ,CountOfRecords
  FROM [PeriodicityState]
    where
  Evaluation_ID = " + evaluation.ID + " and PivotCategory = 'ALL' ORDER BY [Year],[Month]";

                var cmd = DatabaseCommandHelper.GetCommand(sql, con.Connection, con.Transaction);
                var r   = cmd.ExecuteReader();


                while (r.Read())
                {
                    var date = new DateTime((int)r["Year"], (int)r["Month"], 1);

                    if (!toReturn.ContainsKey(date))
                    {
                        toReturn.Add(date, new ArchivalPeriodicityCount());
                    }

                    var toIncrement = toReturn[date];

                    /*
                     *
                     * Correct
                     * InvalidatesRow
                     * Missing
                     * Wrong
                     * */

                    switch ((string)r["RowEvaluation"])
                    {
                    case "Correct":
                        toIncrement.CountGood += (int)r["CountOfRecords"];
                        toIncrement.Total     += (int)r["CountOfRecords"];
                        break;

                    case "InvalidatesRow": toIncrement.Total += (int)r["CountOfRecords"];
                        break;

                    case "Missing": toIncrement.Total += (int)r["CountOfRecords"];
                        break;

                    case "Wrong": toIncrement.Total += (int)r["CountOfRecords"];
                        break;

                    default: throw new ArgumentOutOfRangeException("Unexpected RowEvaluation '" + r["RowEvaluation"] + "'");
                    }
                }
            }

            return(toReturn);
        }