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)))); }
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); }