Пример #1
0
        public IList <ErrorCountRecord> GetTopRankingErrors(AdoQueryPayload adoQueryPayload)
        {
            var results = new List <ErrorCountRecord>();

            using (var connection = new SqlConnection("Database=ErrorsDb;Server=(local);Trusted_Connection=true;"))
            {
                using (var command = new SqlCommand(adoQueryPayload.GetSqlText(), connection))
                {
                    foreach (var parameter in adoQueryPayload.Parameters)
                    {
                        command.Parameters.Add(parameter);
                    }

                    using (var reader = command.ExecuteReader())
                    {
                        var record = new ErrorCountRecord();
                        record.ApplicationId        = reader["ApplicationId"].ToString();
                        record.Count                = (int)reader["Count"];
                        record.Fingerprint          = reader["FingerprintText"].ToString();
                        record.HighestAppStackFrame = reader["HighestAppStackFrame"].ToString();
                        record.LowestAppStackFrame  = reader["LowestAppStackFrame"].ToString();
                        record.OriginExceptionType  = reader["OriginExceptionType"].ToString();
                        record.OriginStackFrame     = reader["OriginStackFrame"].ToString();

                        results.Add(record);
                    }
                }
            }

            return(results);
        }
Пример #2
0
 private void AddLogicalOperator(AdoQueryPayload queryPayload, DslLogicalOperator logicalOperator)
 {
     if (logicalOperator == DslLogicalOperator.And)
     {
         queryPayload.Append("AND ");
     }
     else if (logicalOperator == DslLogicalOperator.Or)
     {
         queryPayload.Append("OR ");
     }
 }
Пример #3
0
        public AdoQueryPayload GenerateQueryPayload(DslQueryModel dslQueryModel)
        {
            var adoQueryPayload = new AdoQueryPayload();

            if (dslQueryModel.Limit.HasValue)
            {
                adoQueryPayload.AppendLine("SELECT TOP " + dslQueryModel.Limit.Value);
            }
            else
            {
                adoQueryPayload.AppendLine("SELECT");
            }

            adoQueryPayload.AppendLine(@"        ED.FingerprintText
        ,ED.ApplicationId
        ,ED.OriginExceptionType
        ,ED.OriginStackFrame
        ,ED.LowestAppStackFrame
        ,ED.HighestAppStackFrame
        ,SUM(T.Frequency) AS TotalErrors
FROM Timeline T
JOIN ErrorDefinition AS ED ON T.Fingerprint = ED.Fingerprint");

            adoQueryPayload.Append("WHERE T.ErrorDateTime BETWEEN ");
            adoQueryPayload.AddFromDateParameter(dslQueryModel.DateRange.From);
            adoQueryPayload.Append(" AND ");
            adoQueryPayload.AddToDateParameter(dslQueryModel.DateRange.To);
            adoQueryPayload.AddNewLine();

            for (int i = 0; i < dslQueryModel.MatchConditions.Count; i++)
            {
                if (i == 0)
                {
                    AddLogicalOperator(adoQueryPayload, DslLogicalOperator.And);
                }
                else
                {
                    AddLogicalOperator(adoQueryPayload, dslQueryModel.MatchConditions[i - 1].LogOpToNextCondition);
                }

                AddClause(dslQueryModel.MatchConditions[i], adoQueryPayload);
            }

            adoQueryPayload.AppendLine(@"GROUP BY ED.FingerprintText
        ,ED.ApplicationId
        ,ED.OriginExceptionType
        ,ED.OriginStackFrame
        ,ED.LowestAppStackFrame
        ,ED.HighestAppStackFrame
ORDER BY TotalErrors DESC");

            return(adoQueryPayload);
        }
Пример #4
0
        private void AddClause(MatchCondition matchCondition, AdoQueryPayload queryPayload)
        {
            queryPayload.AppendColumnName(matchCondition.Object);

            switch (matchCondition.Operator)
            {
            case DslOperator.Equals:
                queryPayload.Append(" = ");
                queryPayload.AddParameter(matchCondition);
                break;

            case DslOperator.NotEquals:
                queryPayload.Append(" <> ");
                queryPayload.AddParameter(matchCondition);
                break;

            case DslOperator.Like:
                queryPayload.Append(" LIKE '%' + ");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(" + '%'");
                break;

            case DslOperator.NotLike:
                queryPayload.Append(" NOT LIKE '%' + ");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(" + '%'");
                break;

            case DslOperator.In:
                queryPayload.Append(" IN (");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(")");
                break;

            case DslOperator.NotIn:
                queryPayload.Append(" NOT IN (");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(")");
                break;

            default:
                throw new Exception("DSL Operator not supported for SQL query generation: " + matchCondition.Operator);
            }

            queryPayload.AddNewLine();
        }