Ejemplo n.º 1
0
        private static IIssueTableFields GetTargetFields(
            [NotNull] ICollection <IObjectClass> targetExceptionClasses,
            bool ensureRequiredFields = true)
        {
            IWorkspace workspace =
                Assert.NotNull(DatasetUtils.GetUniqueWorkspace(targetExceptionClasses));

            IIssueTableFieldManagement fields =
                IssueTableFieldsFactory.GetIssueTableFields(
                    addExceptionFields: true,
                    useDbfFieldNames: WorkspaceUtils.IsShapefileWorkspace(workspace),
                    addManagedExceptionFields: true);

            if (ensureRequiredFields)
            {
                using (_msg.IncrementIndentation("Ensuring required target fields"))
                {
                    int addedFields = EnsureTargetFields(targetExceptionClasses, fields);

                    if (addedFields == 0)
                    {
                        _msg.Info("All required fields exist in target datasets");
                    }
                }
            }

            return(fields);
        }
Ejemplo n.º 2
0
        private static IIssueTableFields GetImportFields(
            [NotNull] IEnumerable <IObjectClass> importExceptionClasses)
        {
            IWorkspace workspace =
                Assert.NotNull(DatasetUtils.GetUniqueWorkspace(importExceptionClasses));

            return(IssueTableFieldsFactory.GetIssueTableFields(
                       addExceptionFields: true,
                       useDbfFieldNames: WorkspaceUtils.IsShapefileWorkspace(workspace)));
        }
        public static ExceptionObjectRepository PrepareExceptionRepository(
            [NotNull] QualitySpecification qualitySpecification,
            [NotNull] IDatasetContext datasetContext,
            [NotNull] IQualityConditionObjectDatasetResolver datasetResolver,
            [CanBeNull] AreaOfInterest areaOfInterest,
            [CanBeNull] XmlVerificationOptions verificationOptions)
        {
            if (verificationOptions == null)
            {
                return(null);
            }

            IWorkspace workspace = VerificationOptionUtils.GetExceptionWorkspace(
                verificationOptions);

            if (workspace == null)
            {
                return(null);
            }

            bool useDbfFieldNames = WorkspaceUtils.IsShapefileWorkspace(workspace);

            IIssueTableFieldManagement issueTableFields =
                IssueTableFieldsFactory.GetIssueTableFields(true, useDbfFieldNames);

            var result = new ExceptionObjectRepository(workspace, issueTableFields,
                                                       datasetContext, datasetResolver,
                                                       areaOfInterest?.Geometry);

            List <QualityCondition> qualityConditions =
                qualitySpecification.Elements.Select(element => element.QualityCondition)
                .ToList();

            InvolvedObjectsMatchCriteria involvedObjectsMatchCriteria =
                VerificationOptionUtils.GetInvolvedObjectMatchCriteria(verificationOptions);

            result.ReadExceptions(qualityConditions,
                                  VerificationOptionUtils.GetDefaultShapeMatchCriterion(
                                      verificationOptions),
                                  VerificationOptionUtils.GetDefaultExceptionObjectStatus(
                                      verificationOptions),
                                  involvedObjectsMatchCriteria);
            return(result);
        }
Ejemplo n.º 4
0
        public static bool IsUpdateWorkspace([NotNull] IFeatureWorkspace workspace)
        {
            IIssueTableFields fields =
                IssueTableFieldsFactory.GetIssueTableFields(
                    addExceptionFields: true,
                    useDbfFieldNames: WorkspaceUtils.IsShapefileWorkspace((IWorkspace)workspace),
                    addManagedExceptionFields: true);

            var requiredAttributes = new[]
            {
                IssueAttribute.ManagedExceptionLineageUuid,
                IssueAttribute.ManagedExceptionVersionUuid
            };

            return(IssueRepositoryUtils.GetIssueObjectClasses(workspace)
                   .Cast <ITable>()
                   .All(tbl => requiredAttributes.All(
                            att => HasField(
                                tbl, att, fields))));
        }
        private static IIssueTableFieldManagement GetFields(
            IssueRepositoryType issueRepositoryType,
            bool addExceptionFields)
        {
            switch (issueRepositoryType)
            {
            case IssueRepositoryType.None:
                return(null);

            case IssueRepositoryType.FileGdb:
                return(IssueTableFieldsFactory.GetIssueTableFields(addExceptionFields));

            case IssueRepositoryType.Shapefiles:
                return(IssueTableFieldsFactory.GetIssueTableFields(addExceptionFields,
                                                                   useDbfFieldNames: true));

            default:
                throw new ArgumentOutOfRangeException(nameof(issueRepositoryType));
            }
        }