public void SetFolderFilter(string[] includeFolders, bool includeDumpster, string[] excludeFolders, string sourceRootFolder, bool isLivePublicFolderMailboxRestore, Guid sourceMailboxGuid) { if (this.folderFilterApplied) { throw new ArgumentException("SetFolderFilter was already called"); } this.folderFilterApplied = true; if (includeFolders == null || includeFolders.Length == 0) { includeFolders = new string[] { "/*" }; } foreach (string folderPath in includeFolders) { this.MarkFolderByPath(sourceRootFolder, folderPath, true); } if (includeDumpster) { FolderMapping wellKnownFolder = this.GetWellKnownFolder(WellKnownFolderType.Dumpster); if (wellKnownFolder != null) { wellKnownFolder.Flags = (FolderMappingFlags.Include | FolderMappingFlags.Inherit); } } if (excludeFolders != null) { foreach (string folderPath2 in excludeFolders) { this.MarkFolderByPath(sourceRootFolder, folderPath2, false); } } base.EnumerateFolderHierarchy(EnumHierarchyFlags.AllFolders, delegate(FolderRecWrapper fRec, FolderMap.EnumFolderContext ctx) { FolderMapping folderMapping = (FolderMapping)fRec; WellKnownFolderType wkftype = folderMapping.WKFType; switch (wkftype) { case WellKnownFolderType.FreeBusy: case WellKnownFolderType.OfflineAddressBook: break; default: if (wkftype != WellKnownFolderType.System) { switch (wkftype) { case WellKnownFolderType.DumpsterAdminAuditLogs: case WellKnownFolderType.DumpsterAudits: case WellKnownFolderType.SpoolerQueue: case WellKnownFolderType.TransportQueue: case WellKnownFolderType.MRSSyncStates: break; case WellKnownFolderType.ConversationActionSettings: return; default: return; } } break; } folderMapping.Flags &= ~FolderMappingFlags.Include; folderMapping.Flags |= (FolderMappingFlags.Exclude | FolderMappingFlags.Inherit); }); bool hasIncludedFolders = false; base.EnumerateFolderHierarchy(EnumHierarchyFlags.AllFolders, delegate(FolderRecWrapper fRec, FolderMap.EnumFolderContext ctx) { FolderMapping folderMapping = (FolderMapping)fRec; if (this.IsPublicFolderMailbox && folderMapping.IsPublicFolderDumpster && !includeDumpster) { return; } folderMapping.ApplyInheritanceFlags(); if (includeDumpster) { this.MarkPublicFolderDumpster(fRec); } if ((folderMapping.Flags & FolderMappingFlags.Include) != FolderMappingFlags.None) { hasIncludedFolders = true; } }); if (isLivePublicFolderMailboxRestore) { this.CheckFolderRestorePossible(sourceMailboxGuid); } if (!hasIncludedFolders) { this.Warnings.Add(MrsStrings.NoFoldersIncluded); } }