private void PreprocessSearch(SearchFolderCriteria searchFolderCriteria, SearchFolder.SearchType searchType, out SetSearchCriteriaFlags searchCriteriaFlags) { if (searchFolderCriteria == null) { throw new ArgumentNullException("searchFolderCriteria"); } if (this.IsDirty) { throw new InvalidOperationException(ServerStrings.ExMustSaveFolderToApplySearch); } this.DisposeCurrentSearch(); SetSearchCriteriaFlags setSearchCriteriaFlags = SetSearchCriteriaFlags.None; if (searchFolderCriteria.StatisticsOnly) { setSearchCriteriaFlags |= SetSearchCriteriaFlags.StatisticsOnly; } if (searchFolderCriteria.EstimateCountOnly) { setSearchCriteriaFlags |= SetSearchCriteriaFlags.EstimateCountOnly; } searchCriteriaFlags = SearchFolder.CalculateSearchCriteriaFlags(searchFolderCriteria.DeepTraversal, searchFolderCriteria.UseCiForComplexQueries, setSearchCriteriaFlags, searchFolderCriteria.FailNonContentIndexedSearch, searchType); }
private static SetSearchCriteriaFlags CalculateSearchCriteriaFlags(bool deepTraversal, bool useCiForComplexQueries, SetSearchCriteriaFlags statisticsOnly, bool failNonContentIndexedSearch, SearchFolder.SearchType searchType) { EnumValidator.ThrowIfInvalid <SearchFolder.SearchType>(searchType, "searchType"); SetSearchCriteriaFlags setSearchCriteriaFlags = SetSearchCriteriaFlags.None; if (deepTraversal) { setSearchCriteriaFlags |= SetSearchCriteriaFlags.Recursive; } else { setSearchCriteriaFlags |= SetSearchCriteriaFlags.Shallow; } if (useCiForComplexQueries) { setSearchCriteriaFlags |= SetSearchCriteriaFlags.UseCiForComplexQueries; } setSearchCriteriaFlags |= statisticsOnly; if (failNonContentIndexedSearch) { setSearchCriteriaFlags |= SetSearchCriteriaFlags.FailNonContentIndexedSearch; } switch (searchType) { case SearchFolder.SearchType.RunOnce: setSearchCriteriaFlags |= (SetSearchCriteriaFlags.ContentIndexed | SetSearchCriteriaFlags.Static); break; case SearchFolder.SearchType.ContinousUpdate: setSearchCriteriaFlags |= SetSearchCriteriaFlags.NonContentIndexed; break; } return(setSearchCriteriaFlags | SetSearchCriteriaFlags.Restart); }