Beispiel #1
0
        private static XmlExceptionStatistics CreateExceptionStatistics(
            [NotNull] IExceptionStatistics statistics,
            [NotNull] IEnumerable <QualitySpecificationElement> verifiedQualityConditions)
        {
            var result =
                new XmlExceptionStatistics
            {
                DataSource = WorkspaceUtils.GetWorkspaceDisplayText(
                    statistics.Workspace),
                ExceptionCount                         = statistics.ExceptionCount,
                ExceptionObjectCount                   = statistics.ExceptionObjectCount,
                InactiveExceptionObjectCount           = statistics.InactiveExceptionObjectCount,
                UnusedExceptionObjectCount             = statistics.UnusedExceptionObjectCount,
                ExceptionObjectsUsedMultipleTimesCount =
                    statistics.ExceptionObjectsUsedMultipleTimesCount
            };

            foreach (QualitySpecificationElement element in verifiedQualityConditions)
            {
                IQualityConditionExceptionStatistics conditionStatistics =
                    statistics.GetQualityConditionStatistics(
                        element.QualityCondition);

                if (conditionStatistics != null)
                {
                    result.AddQualityConditionExceptions(
                        CreateQualityConditionExceptionStatistics(conditionStatistics));
                }
            }

            foreach (ITable table in statistics.TablesWithNonUniqueKeys)
            {
                result.AddTableWithNonUniqueKeys(
                    CreateTableWithNonUniqueKeys(table,
                                                 statistics.GetNonUniqueKeys(table)));
            }

            return(result);
        }
        private static void LogElements(
            [NotNull] IEnumerable <QualitySpecificationElement> qualitySpecificationElements,
            [NotNull] IssueProcessor issueProcessor,
            [CanBeNull] IExceptionStatistics exceptionStatistics)
        {
            foreach (QualitySpecificationElement element in qualitySpecificationElements)
            {
                QualityCondition qualityCondition = element.QualityCondition;

                int exceptionCount;
                int issueCount = issueProcessor.GetIssueCount(qualityCondition,
                                                              out exceptionCount);

                var sb = new StringBuilder(qualityCondition.Name);

                if (issueCount > 0)
                {
                    sb.AppendFormat(element.AllowErrors
                                                                ? " - warnings: {0}"
                                                                : " - errors: {0}",
                                    issueCount);
                }

                if (exceptionCount > 0)
                {
                    sb.AppendFormat(" - exceptions: {0}", exceptionCount);
                }

                if (issueCount > 0)
                {
                    _msg.Warn(sb.ToString());
                }
                else
                {
                    _msg.Info(sb.ToString());
                }

                if (exceptionStatistics != null)
                {
                    IQualityConditionExceptionStatistics conditionStatistics =
                        exceptionStatistics.GetQualityConditionStatistics(qualityCondition);

                    if (conditionStatistics != null)
                    {
                        if (conditionStatistics.UnknownTableNames.Count > 0)
                        {
                            using (_msg.IncrementIndentation())
                            {
                                _msg.Warn(
                                    "Exception objects were ignored for this condition due to unknown table names:");
                                foreach (string tableName in conditionStatistics.UnknownTableNames)
                                {
                                    _msg.WarnFormat(
                                        "- {0}: used in {1} exception object(s)",
                                        tableName,
                                        conditionStatistics
                                        .GetExceptionObjectsInvolvingUnknownTableName(
                                            tableName).Count);
                                }
                            }
                        }
                    }
                }
            }
        }