예제 #1
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))));
        }
예제 #2
0
        public static List <IObjectClass> GetTargetExceptionClasses(
            [NotNull] IFeatureWorkspace targetWorkspace,
            [NotNull] ICollection <IObjectClass> importExceptionClasses)
        {
            List <IObjectClass> result =
                IssueRepositoryUtils.GetIssueObjectClasses(targetWorkspace)
                .ToList();

            IWorkspace importWorkspace =
                DatasetUtils.GetUniqueWorkspace(importExceptionClasses);

            if (importWorkspace == null)
            {
                return(result);
            }

            var targetNames =
                new HashSet <string>(result.Select(DatasetUtils.GetName),
                                     StringComparer.OrdinalIgnoreCase);

            List <IObjectClass> importClassesWithMissingTarget =
                importExceptionClasses.Where(importClass => !targetNames.Contains(
                                                 DatasetUtils.GetName(importClass)))
                .ToList();

            if (importClassesWithMissingTarget.Count > 0)
            {
                // assert that import workspace and target workspace have same type
                Assert.AreEqual(WorkspaceUtils.IsShapefileWorkspace(importWorkspace),
                                WorkspaceUtils.IsShapefileWorkspace((IWorkspace)targetWorkspace),
                                "Add missing exception classes is not supported when workspace types are different");

                using (_msg.IncrementIndentation("Creating missing target exception classes"))
                {
                    result.AddRange(importClassesWithMissingTarget.Select(
                                        cls => CreateTargetClass(targetWorkspace, cls)));
                }
            }

            return(result);
        }