Example #1
0
        public static IErrorObject CreateErrorObject(
            [NotNull] IObject errorObject, [NotNull] IErrorDataset errorDataset,
            [CanBeNull] IFieldIndexCache fieldIndexCache = null)
        {
            Assert.ArgumentNotNull(errorObject, nameof(errorObject));
            Assert.ArgumentNotNull(errorDataset, nameof(errorDataset));

            switch (errorDataset)
            {
            case ErrorTableDataset dataset:
                return(new ErrorTableObject(errorObject, dataset, fieldIndexCache));

            case ErrorLineDataset dataset:
                return(new ErrorLineObject((IFeature)errorObject, dataset, fieldIndexCache));

            case ErrorMultiPatchDataset dataset:
                return(new ErrorMultiPatchObject((IFeature)errorObject, dataset,
                                                 fieldIndexCache));

            case ErrorMultipointDataset dataset:
                return(new ErrorMultipointObject((IFeature)errorObject, dataset,
                                                 fieldIndexCache));

            case ErrorPolygonDataset dataset:
                return(new ErrorPolygonObject((IFeature)errorObject, dataset, fieldIndexCache));

            default:
                throw new ArgumentOutOfRangeException(
                          $"Unknown IErrorDataset: {errorDataset.GetType()}");
            }
        }
Example #2
0
        GetIssueDatasetsByGeometryType([NotNull] IVerificationContext context)
        {
            Assert.ArgumentNotNull(context, nameof(context));

            var properties =
                new Dictionary <esriGeometryType, Func <IVerificationContext, IErrorDataset> >
            {
                { esriGeometryType.esriGeometryNull, c => c.NoGeometryIssueDataset },
                { esriGeometryType.esriGeometryPolygon, c => c.PolygonIssueDataset },
                { esriGeometryType.esriGeometryPolyline, c => c.LineIssueDataset },
                { esriGeometryType.esriGeometryMultipoint, c => c.MultipointIssueDataset },
                { esriGeometryType.esriGeometryMultiPatch, c => c.MultiPatchIssueDataset }
            };

            var result = new Dictionary <esriGeometryType, IErrorDataset>();

            foreach (
                KeyValuePair <esriGeometryType, Func <IVerificationContext, IErrorDataset> > pair in
                properties)
            {
                Func <IVerificationContext, IErrorDataset> getIssueDataset = pair.Value;

                IErrorDataset issueDataset = getIssueDataset(context);
                if (issueDataset != null)
                {
                    result.Add(pair.Key, issueDataset);
                }
            }

            return(result);
        }
Example #3
0
        private static IssueDatasetWriter CreateIssueWriter(
            [NotNull] IErrorDataset objectDataset,
            [NotNull] IDatasetContext datasetContext,
            [NotNull] IFieldIndexCache fieldIndexCache)
        {
            Assert.ArgumentNotNull(objectDataset, nameof(objectDataset));
            Assert.ArgumentNotNull(datasetContext, nameof(datasetContext));
            Assert.ArgumentNotNull(fieldIndexCache, nameof(fieldIndexCache));

            ITable table = datasetContext.OpenTable(objectDataset);

            return(table == null
                                       ? null
                                       : new IssueDatasetWriter(table, objectDataset, fieldIndexCache));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="IssueDatasetWriter"/> class.
        /// </summary>
        /// <param name="issueTable">The error table.</param>
        /// <param name="issueObjectDataset">The error object dataset.</param>
        /// <param name="fieldIndexCache">The field index cache.</param>
        public IssueDatasetWriter([NotNull] ITable issueTable,
                                  [NotNull] IErrorDataset issueObjectDataset,
                                  [NotNull] IFieldIndexCache fieldIndexCache)
        {
            Assert.ArgumentNotNull(issueTable, nameof(issueTable));
            Assert.ArgumentNotNull(issueObjectDataset, nameof(issueObjectDataset));
            Assert.ArgumentNotNull(fieldIndexCache, nameof(fieldIndexCache));

            Table = issueTable;
            _issueObjectDataset = issueObjectDataset;
            _fieldIndexCache    = fieldIndexCache;

            _featureClass = Table as IFeatureClass;

            HasM = _featureClass != null && DatasetUtils.HasM(_featureClass);
            HasZ = _featureClass != null && DatasetUtils.HasZ(_featureClass);
        }
Example #5
0
        public static IList <IFeature> GetInvolvedOrRelatedFeatures(
            [NotNull] IObject errorObject,
            [NotNull] IDatasetLookup datasetLookup,
            [NotNull] IModelContext modelContext,
            [NotNull] IQualityConditionRepository qualityConditionRepository)
        {
            Assert.ArgumentNotNull(errorObject, nameof(errorObject));
            Assert.ArgumentNotNull(datasetLookup, nameof(datasetLookup));
            Assert.ArgumentNotNull(modelContext, nameof(modelContext));

            var list = new List <IFeature>();

            IErrorDataset errorTable = GetErrorDataset(errorObject, datasetLookup);

            IErrorObject errorRow = CreateErrorObject(errorObject, errorTable, null);

            foreach (
                IRow involvedRow in
                GetInvolvedRows(errorRow, modelContext, qualityConditionRepository))
            {
                var feature = involvedRow as IFeature;

                if (feature != null)
                {
                    list.Add(feature);
                }
                else
                {
                    list.AddRange(GetDerivedTableGeometryFeatures((IObject)involvedRow,
                                                                  datasetLookup,
                                                                  modelContext));
                }
            }

            return(list);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="IssueDatasetWriter"/> class.
 /// </summary>
 /// <param name="issueFeatureClass">The error feature class.</param>
 /// <param name="issueObjectDataset">The error object dataset.</param>
 /// <param name="fieldIndexCache">The field index cache.</param>
 public IssueDatasetWriter([NotNull] IFeatureClass issueFeatureClass,
                           [NotNull] IErrorDataset issueObjectDataset,
                           [NotNull] IFieldIndexCache fieldIndexCache)
     : this((ITable)issueFeatureClass, issueObjectDataset, fieldIndexCache)
 {
 }