private void EnqueueMatches(SearchRecipient recipient, Dictionary <SearchSource, bool> matchMap, List <SearchSource> publicFolders) { bool flag = false; Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.EnqueueMatches Recipient:", recipient); if (recipient.Parent == null) { foreach (SearchSource searchSource in this.Match(recipient.ADEntry, matchMap, false)) { flag = true; searchSource.Recipient = recipient; this.EnqueueSource(searchSource, publicFolders); } } if (!flag) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.EnqueueMatches Match to Parent Recipient:", recipient); foreach (SearchSource originalSource in this.Match(recipient.Parent, matchMap, true)) { flag = true; SearchSource source = this.CreateDefaultSource(originalSource, recipient); this.EnqueueSource(source, publicFolders); if (flag) { break; } } } if (!flag) { Recorder.Trace(4L, TraceType.WarningTrace, "DirectoryLookup.EnqueueMatches Orphaned AD Entry Entry:", recipient); } }
public override void Process(GetSearchableMailboxesInputs item) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "InitializeGetSearchablebleMailbox.Process Item:", item, "Filter:", item.Filter, "ExpandGroups:", item.ExpandGroups }); SearchSource[] source = new SearchSource[] { new SearchSource { ReferenceId = item.Filter, SourceType = SourceType.AllMailboxes } }; DirectoryQueryParameters item2 = new DirectoryQueryParameters { ExpandPublicFolders = false, ExpandGroups = item.ExpandGroups, MatchRecipientsToSources = false, PageSize = (int)base.Policy.ExecutionSettings.DiscoveryDisplaySearchPageSize, Properties = SearchRecipient.DisplayProperties, RequestGroups = true, Sources = source.ToList <SearchSource>() }; base.Executor.EnqueueNext(item2); }
public override void ViewDidLoad () { base.ViewDidLoad (); //UI setup from code cancel.SetTitleTextAttributes (new UITextAttributes() { TextColor = UIColor.White }, UIControlState.Normal); cancel.SetBackgroundImage (Theme.BlueBarButtonItem, UIControlState.Normal, UIBarMetrics.Default); var label = new UILabel (new CGRect(0, 0, 80, 36)) { Text = "Items", TextColor = UIColor.White, BackgroundColor = UIColor.Clear, Font = Theme.BoldFontOfSize (18), }; var items = new UIBarButtonItem(label); toolbar.Items = new UIBarButtonItem[] { cancel, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), items, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), }; tableView.Source = new TableSource(this); var searchDataSource = new SearchSource (this); SearchDisplayController.SearchResultsSource = searchDataSource; SearchDisplayController.Delegate = new SearchDisplay (tableView, searchDataSource); }
public async Task <ActionResult> UpdateSearch(int id, [FromBody] ViewSearchModel updated) { var search = await db.Searches.Include(s => s.Sources).FirstOrDefaultAsync(s => s.Id == id); search.Name = updated.Search.Name; search.Phrase = updated.Search.Phrase; foreach (ViewSearchSource searchSource in updated.Sources) { SearchSource sourceAlreadySelected = search.Sources.FirstOrDefault(ss => ss.SourceId == searchSource.Source.Id); if (searchSource.Selected) { if (sourceAlreadySelected == null) { await db.SearchSources.AddAsync(new SearchSource { SearchId = search.Id, SourceId = searchSource.Source.Id }); } } else { if (sourceAlreadySelected != null) { db.SearchSources.Remove(sourceAlreadySelected); } } } await db.SaveChangesAsync(); return(await GetSearch(id)); }
public override void ViewDidLoad() { base.ViewDidLoad(); //UI setup from code cancel.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White }, UIControlState.Normal); cancel.SetBackgroundImage(Theme.BlueBarButtonItem, UIControlState.Normal, UIBarMetrics.Default); var label = new UILabel(new RectangleF(0, 0, 80, 36)) { Text = "Items", TextColor = UIColor.White, BackgroundColor = UIColor.Clear, Font = Theme.BoldFontOfSize(18), }; var items = new UIBarButtonItem(label); toolbar.Items = new UIBarButtonItem[] { cancel, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), items, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), }; tableView.Source = new TableSource(this); var searchDataSource = new SearchSource(this); SearchDisplayController.SearchResultsSource = searchDataSource; SearchDisplayController.Delegate = new SearchDisplay(tableView, searchDataSource); }
void BindTable(List <Schemas.Search.SearchProductModel> locallistSearch) { SearchSource TableSource = new SearchSource(locallistSearch, this); SearchTableView.Source = TableSource; SearchTableView.ReloadData(); SearchTableView.TableFooterView = new UIView(); }
/// <summary> /// Constructor. /// </summary> public SearchEventArgs(string searchText, List <ModelElement> source, SearchCriteria criteria) : base(null) { this.searchText = searchText; this.selectedSearchSource = new SearchSource(SearchSourceEnum.Custom, "Custom"); this.selectedSearchSourceElements = source; this.selectedSearchCriteria = criteria; }
/// <summary> /// Constructor. /// </summary> public SearchEventArgs(string searchText, SearchSource source, SearchCriteria criteria) : base(null) { this.searchText = searchText; this.selectedSearchSource = source; this.selectedSearchSourceElements = null; this.selectedSearchCriteria = criteria; }
private SearchSource CreateDefaultSource(SearchSource originalSource, SearchRecipient recipient) { SearchSource searchSource = (originalSource != null) ? originalSource.Clone() : new SearchSource(); searchSource.ReferenceId = (string)recipient.ADEntry[ADRecipientSchema.LegacyExchangeDN]; searchSource.SourceType = SourceType.LegacyExchangeDN; searchSource.Recipient = recipient; return(searchSource); }
private async void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) { if (!e.IsIntermediate) { var Sender = sender as ScrollViewer; if (Sender.ScrollableHeight - Sender.VerticalOffset == 0) { var CurrentAnswer = this.DefaultViewModel["item"] as SearchAnswer; if (CurrentAnswer.Next == null) { this.Scroll.ViewChanged -= ScrollViewer_ViewChanged; } else { lock (IncrementalLoadingHelper) { if (isIncrementalLoadingWorking) { return; } else { isIncrementalLoadingWorking = true; } } var statusBar = StatusBar.GetForCurrentView(); statusBar.ProgressIndicator.Text = ResourceLoader.GetForCurrentView("Resources").GetString("DownloadingMessage"); statusBar.ProgressIndicator.ProgressValue = null; await statusBar.ProgressIndicator.ShowAsync(); bool isSuccess = await SearchSource.LoadMoreItemsAsync(CurrentAnswer.Next); await statusBar.ProgressIndicator.HideAsync(); if (isSuccess) { if ((this.DefaultViewModel["item"] as SearchAnswer).Next == null) { this.Scroll.ViewChanged -= ScrollViewer_ViewChanged; } } else { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("ErrorMessage")); } lock (IncrementalLoadingHelper) { isIncrementalLoadingWorking = false; } } } } }
private void Paginate(int page) { var size = ItemPerPage; var start = page * size; var nextPage = SearchSource.Skip(start).Take(size).ToArray(); DisplaySource = nextPage; CurrentPage = page; }
public CustomerSearchViewController() { this.Title = "Customer Search"; this.EdgesForExtendedLayout = UIRectEdge.None; this.NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Add, (s, e) => { this.NavigationController.PushViewController(new CustomerInformationViewController { Customer = new Customer(), Popover = Popover, Created = (c) => { CustomerPicked(c); } }, true); }); this.NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Cash Customer", UIBarButtonItemStyle.Plain, async(s, e) => { var cust = await Database.Main.GetCashCustomer(); CustomerPicked(cust); }); PreferredContentSize = new System.Drawing.SizeF(700, 400); View.Add(searchBar = new UISearchBar { //SearchBarStyle = UISearchBarStyle.Minimal, BarStyle = UIBarStyle.Black, Translucent = true, }); searchBar.SearchButtonClicked += async(object sender, EventArgs e) => { source.State = SearchSource.SearchState.Searching; tableView.ReloadData(); var results = await WebService.Main.SearchCustomer(searchBar.Text); if (results == null) { source.State = SearchSource.SearchState.Error; } else { source.Customers = results; source.State = SearchSource.SearchState.Completed; } tableView.ReloadData(); }; var tv = getTextField(searchBar); searchBar.Subviews.ForEach(x => { Console.WriteLine(x.GetType()); }); searchBar.Subviews.OfType <UITextField> ().ForEach(x => { x.TextColor = UIColor.White; }); searchBar.SizeToFit(); View.Add(tableView = new UITableView { Source = (source = new SearchSource()), RowHeight = 75, }); }
private SearchSource GetSource(SearchSource source, PublicFolder publicFolder) { SearchSource searchSource = source.Clone(); searchSource.OriginalReferenceId = publicFolder.FolderPath.ToString(); searchSource.ReferenceId = publicFolder.ContentMailboxGuid.ToString(); searchSource.FolderSpec = this.GetFolderSpec(publicFolder); searchSource.SourceLocation = SourceLocation.PrimaryOnly; searchSource.SourceType = SourceType.MailboxGuid; return(searchSource); }
public CustomerSearchViewController() { this.Title = "Customer Search"; this.EdgesForExtendedLayout = UIRectEdge.None; this.NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Add,(s,e)=>{ this.NavigationController.PushViewController(new CustomerInformationViewController{ Customer = new Customer(), Popover = Popover, Created = (c) =>{ CustomerPicked (c); } },true); }); this.NavigationItem.LeftBarButtonItem = new UIBarButtonItem ("Cash Customer", UIBarButtonItemStyle.Plain ,async (s, e) => { var cust = await Database.Main.GetCashCustomer(); CustomerPicked(cust); }); PreferredContentSize = new System.Drawing.SizeF (700, 400); View.Add (searchBar = new UISearchBar{ //SearchBarStyle = UISearchBarStyle.Minimal, BarStyle = UIBarStyle.Black, Translucent = true, }); searchBar.SearchButtonClicked += async (object sender, EventArgs e) => { source.State = SearchSource.SearchState.Searching; tableView.ReloadData(); var results = await WebService.Main.SearchCustomer(searchBar.Text); if(results == null) source.State = SearchSource.SearchState.Error; else{ source.Customers = results; source.State = SearchSource.SearchState.Completed; } tableView.ReloadData(); }; var tv = getTextField (searchBar); searchBar.Subviews.ForEach (x => { Console.WriteLine(x.GetType()); }); searchBar.Subviews.OfType<UITextField> ().ForEach (x => { x.TextColor = UIColor.White; }); searchBar.SizeToFit (); View.Add (tableView = new UITableView{ Source = (source = new SearchSource()), RowHeight = 75, }); }
private void EnqueueSource(SearchSource source, List <SearchSource> publicFolders) { if (source != null) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.EnqueueSource Source:", source); if (SearchRecipient.IsPublicFolder(source.Recipient.ADEntry)) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.EnqueueSource PublicFolder:", source); if (publicFolders != null) { publicFolders.Add(source); } return; } base.Executor.EnqueueNext(source); } }
public static async Task Search(string query, SearchSource source, string excludedFilesInput, bool usingScript, CancellationToken token, Action <IEnumerable <SearchResult> > partialResultHandler) { IEnumerable <string> excludedFiles = excludedFilesInput.Split(',').Select(n => n.Trim()); switch (source) { case SearchSource.EntireSolution: if (usingScript) { await Search(query, WorkspaceHelpers.GetCurrentSolution().Projects.SelectMany(n => n.Documents), token, partialResultHandler, excludedFiles); } else { await SearchInStrings(query, WorkspaceHelpers.GetCurrentSolution().Projects.SelectMany(n => n.Documents), token, partialResultHandler, excludedFiles); } return; case SearchSource.CurrentProject: if (usingScript) { await Search(query, WorkspaceHelpers.GetCurrentProject().Documents, token, partialResultHandler, excludedFiles); } else { await SearchInStrings(query, WorkspaceHelpers.GetCurrentProject().Documents, token, partialResultHandler, excludedFiles); } return; case SearchSource.CurrentDocument: if (usingScript) { await Search(query, new Document[] { WorkspaceHelpers.GetCurrentDocument() }, token, partialResultHandler, excludedFiles); } else { await SearchInStrings(query, new Document[] { WorkspaceHelpers.GetCurrentDocument() }, token, partialResultHandler, excludedFiles); } return; default: throw new ArgumentOutOfRangeException(nameof(source)); } }
private async Task Search() { SearchSource source = default(SearchSource); if (SearchSolution.IsChecked == true) { source = SearchSource.EntireSolution; } else if (SearchProject.IsChecked == true) { source = SearchSource.CurrentProject; } else if (SearchDocument.IsChecked == true) { source = SearchSource.CurrentDocument; } BeginSearch(); tokenSource?.Cancel(); tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; try { await SearchEngine.Search(Query.Text, source, ExcludedFiles.Text, SearchQuery.IsChecked == true, token, handleResults); OutputWindow.WriteLine("---"); OutputWindow.WriteLine($"Search finished. Processed {SearchEngine.Progress} files."); } catch (Exception ex) { OutputWindow.WriteLine("---"); OutputWindow.WriteLine(ex.ToString()); } EndSearch(); }
public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { if ((parameter as string) != _query) { _query = parameter as string; var loading = Window.Current.Content as LoadingView; _searchSource = new SearchSource(_query, () => { loading.IsLoading = true; }, () => { loading.IsLoading = false; }); SearchList = new IncrementalLoadingCollection <SearchSource, SearchResult>(_searchSource, onError: (ex) => { loading.IsLoading = false; }); } return(Task.CompletedTask); }
public HomeModel(string searchText, SearchSource searchSource) { SearchText = searchText; SearchSource = searchSource; }
public SearchMailboxesResults Search(ISearchPolicy policy, SearchMailboxesInputs input) { Guid databaseGuid = Guid.Empty; List <SearchSource> list = new List <SearchSource>(input.Sources); ResultAggregator aggregator = new ResultAggregator(); IEnumerable <List <string> > enumerable = null; Recorder.Record record = policy.Recorder.Start("SearchResultProvider", TraceType.InfoTrace, true); Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "LocalSearchResultsProvider.Search Input:", input, "Type:", input.SearchType }); try { if (input.SearchType == SearchType.Statistics) { enumerable = this.GenerateKeywordStatsQueryBatches(policy, aggregator, input.Criteria); } SearchCompletedCallback searchCallback = delegate(ISearchMailboxTask task, ISearchTaskResult result) { aggregator.MergeSearchResult(result); }; record.Attributes["MBXCNT"] = list.Count; while (list.Count > 0) { Recorder.Trace(5L, TraceType.InfoTrace, "LocalSearchResultsProvider.Search UnsearchedSources:", list.Count); HashSet <Guid> hashSet = new HashSet <Guid>(); MailboxInfoList mailboxInfoList = new MailboxInfoList(); int i = 0; while (i < list.Count) { SearchSource searchSource = list[i]; Guid item = searchSource.MailboxInfo.IsArchive ? searchSource.MailboxInfo.ArchiveGuid : searchSource.MailboxInfo.MailboxGuid; if (!hashSet.Contains(item)) { mailboxInfoList.Add(searchSource.MailboxInfo); list.RemoveAt(i); hashSet.Add(item); databaseGuid = (searchSource.MailboxInfo.IsArchive ? searchSource.MailboxInfo.ArchiveDatabase : searchSource.MailboxInfo.MdbGuid); } else { i++; } } Recorder.Trace(5L, TraceType.InfoTrace, "LocalSearchResultsProvider.Search NonDuplicateSourcesToSearch:", mailboxInfoList.Count); AggregatedMailboxSearchTask aggregatedMailboxSearchTask; if (input.SearchType == SearchType.Statistics) { Recorder.Trace(5L, TraceType.InfoTrace, "LocalSearchResultsProvider.Search Statistics:", enumerable); using (IEnumerator <List <string> > enumerator = enumerable.GetEnumerator()) { while (enumerator.MoveNext()) { List <string> keywordList = enumerator.Current; AggregatedMailboxSearchTask aggregatedMailboxSearchTask2; aggregatedMailboxSearchTask = (aggregatedMailboxSearchTask2 = new AggregatedMailboxSearchTask(databaseGuid, mailboxInfoList, input.Criteria, input.PagingInfo, keywordList, input.CallerInfo)); try { aggregatedMailboxSearchTask.Execute(searchCallback); this.UpdateSearchStatistics(policy, record, aggregatedMailboxSearchTask); } finally { if (aggregatedMailboxSearchTask2 != null) { ((IDisposable)aggregatedMailboxSearchTask2).Dispose(); } } } continue; } } Recorder.Trace(5L, TraceType.InfoTrace, "LocalSearchResultsProvider.Search Regular"); AggregatedMailboxSearchTask aggregatedMailboxSearchTask3; aggregatedMailboxSearchTask = (aggregatedMailboxSearchTask3 = new AggregatedMailboxSearchTask(databaseGuid, mailboxInfoList, input.SearchType, input.Criteria, input.PagingInfo, input.CallerInfo)); try { aggregatedMailboxSearchTask.Execute(searchCallback); this.UpdateSearchStatistics(policy, record, aggregatedMailboxSearchTask); } finally { if (aggregatedMailboxSearchTask3 != null) { ((IDisposable)aggregatedMailboxSearchTask3).Dispose(); } } } } finally { policy.Recorder.End(record); } return(new SearchMailboxesResults(input.Sources) { SearchResult = aggregator }); }
public override void Process(DirectoryQueryParameters item) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryLookup.Process Query:", item.Query, "ExpandPublicFolders:", item.ExpandPublicFolders, "ExpandGroups:", item.ExpandGroups, "MatchRecipientsToSources:", item.MatchRecipientsToSources }); List <SearchSource> list = null; if (item.ExpandPublicFolders) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.Process ExpandPublicFolders"); list = new List <SearchSource>(); } Dictionary <SearchSource, bool> matchMap = null; if (item.MatchRecipientsToSources) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryLookup.Process MatchRecipients"); matchMap = new Dictionary <SearchSource, bool>(); item.Sources.ForEach(delegate(SearchSource t) { matchMap[t] = false; }); } IDirectoryProvider directoryProvider = SearchFactory.Current.GetDirectoryProvider(base.Executor.Policy); foreach (SearchRecipient recipient in directoryProvider.Query(base.Executor.Policy, item)) { if (item.MatchRecipientsToSources) { this.EnqueueMatches(recipient, matchMap, list); } else { SearchSource source = this.CreateDefaultSource(null, recipient); this.EnqueueSource(source, list); } } if (item.MatchRecipientsToSources) { foreach (SearchSource searchSource in from t in matchMap where !t.Value select t.Key) { Recorder.Trace(4L, TraceType.WarningTrace, new object[] { "DirectoryLookup.Process FailedSource:", searchSource.ReferenceId, "FailedSourceType:", searchSource.SourceType }); base.Executor.Fail(new SearchException(KnownError.ErrorSearchableObjectNotFound) { ErrorSource = searchSource }); } } if (item.ExpandPublicFolders && list.Count > 0) { Recorder.Trace(4L, TraceType.WarningTrace, "DirectoryLookup.Process ExapndPublicFolders Count:", list.Count); ISourceConverter sourceConverter = SearchFactory.Current.GetSourceConverter(base.Policy, SourceType.PublicFolder); foreach (SearchSource searchSource2 in sourceConverter.Convert(base.Policy, this.GetPublicFolderSources(list))) { QueryFilter sourceFilter = SearchRecipient.GetSourceFilter(searchSource2); item.Query = sourceFilter; item.PageSize = 1; using (IEnumerator <SearchRecipient> enumerator4 = directoryProvider.Query(base.Policy, item).GetEnumerator()) { if (enumerator4.MoveNext()) { SearchRecipient searchRecipient = enumerator4.Current; searchSource2.Recipient.ADEntry = searchRecipient.ADEntry; this.EnqueueSource(searchSource2, null); } } } } }
public SearchMailboxesResults Search(ISearchPolicy policy, SearchMailboxesInputs input) { long num = 0L; long num2 = 0L; long num3 = 0L; long num4 = 0L; long num5 = 0L; long num6 = 0L; ulong num7 = 0UL; SortedResultPage resultPage = null; MultiMailboxSearchClient multiMailboxSearchClient = null; ResultAggregator resultAggregator = new ResultAggregator(); ByteQuantifiedSize byteQuantifiedSize = new ByteQuantifiedSize(0UL); List <MailboxStatistics> list = new List <MailboxStatistics>(); Dictionary <Guid, List <KeyValuePair <int, long> > > dictionary = new Dictionary <Guid, List <KeyValuePair <int, long> > >(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Recorder.Record record = policy.Recorder.Start("SearchResultProvider", TraceType.InfoTrace, true); Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "FastLocalSearchResultsProvider.Search Input:", input, "Type:", input.SearchType }); SearchMailboxesResults result; try { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search Initializing"); num3 = stopwatch.ElapsedMilliseconds; string str = (input.PagingInfo != null && input.PagingInfo.SortBy != null && input.PagingInfo.SortBy.SortOrder == SortOrder.Ascending) ? "+" : "-"; string str2 = (input.PagingInfo != null && input.PagingInfo.SortValue != null && input.PagingInfo.SortValue.SortColumn == ItemSchema.DocumentId) ? "[docid]" : FastIndexSystemSchema.Received.Name; AdditionalParameters additionalParameters = new AdditionalParameters { Sort = str + str2, Refiners = new string[] { FastIndexSystemSchema.Size.Name } }; long referenceDocId = 0L; PaginationQueryFilter pagingFilter = null; QueryFilter queryFilter = input.Criteria.Query; if (input.PagingInfo != null && input.PagingInfo.SortValue != null) { referenceDocId = input.PagingInfo.SortValue.SecondarySortValue; if (input.PagingInfo.SortValue.SortColumnValue != null && input.PagingInfo.SortValue.SortColumn != ItemSchema.DocumentId) { pagingFilter = new PaginationQueryFilter(input.PagingInfo); } } SearchSource searchSource = input.Sources.FirstOrDefault <SearchSource>(); if (searchSource != null) { Guid guid = searchSource.MailboxInfo.IsArchive ? searchSource.MailboxInfo.ArchiveDatabase : searchSource.MailboxInfo.MdbGuid; string displayName = FlowDescriptor.GetImsFlowDescriptor(FastLocalSearchResultsProvider.SearchConfig, FastIndexVersion.GetIndexSystemName(guid)).DisplayName; num4 += stopwatch.ElapsedMilliseconds - num3; num3 = stopwatch.ElapsedMilliseconds; Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "FastLocalSearchResultsProvider.Search Initialized DB:", guid, "Flow:", displayName }); List <SearchSource> list2 = new List <SearchSource>(input.Sources); while (list2.Count > 0) { HashSet <Guid> hashSet = new HashSet <Guid>(); List <SearchSource> list3 = new List <SearchSource>(); int i = 0; while (i < list2.Count) { SearchSource searchSource2 = list2[i]; Guid item = searchSource2.MailboxInfo.IsArchive ? searchSource2.MailboxInfo.ArchiveGuid : searchSource2.MailboxInfo.MailboxGuid; if (!hashSet.Contains(item)) { list3.Add(searchSource2); list2.RemoveAt(i); hashSet.Add(item); } else { i++; } } multiMailboxSearchClient = new MultiMailboxSearchClient(guid, (from s in list3 select s.MailboxInfo).ToArray <MailboxInfo>(), input.Criteria, input.CallerInfo, input.PagingInfo); foreach (SearchSource searchSource3 in list3) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search Searching Source", searchSource3); ulong num8 = 0UL; bool flag = false; MailboxStatistics mailboxStatistics = null; ByteQuantifiedSize byteQuantifiedSize2 = new ByteQuantifiedSize(0UL); List <KeyValuePair <int, long> > list4 = new List <KeyValuePair <int, long> >(); Guid guid2 = searchSource3.MailboxInfo.IsArchive ? searchSource3.MailboxInfo.ArchiveGuid : searchSource3.MailboxInfo.MailboxGuid; queryFilter = this.ApplyFolderFilter(queryFilter, searchSource3.MailboxInfo, multiMailboxSearchClient); string text = FqlQueryBuilder.ToFqlString(queryFilter, input.Criteria.QueryCulture); text = this.ApplyPagingFilter(text, referenceDocId, pagingFilter, input.PagingInfo, input.Criteria.QueryCulture); Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "FastLocalSearchResultsProvider.Search Searching Source Guid:", guid2, "Filter:", queryFilter, "Query:", text }); num6 += stopwatch.ElapsedMilliseconds - num3; num3 = stopwatch.ElapsedMilliseconds; IEnumerable <KeyValuePair <PagingImsFlowExecutor.QueryExecutionContext, SearchResultItem[]> > enumerable = FastLocalSearchResultsProvider.FlowExecutor.Execute(displayName, guid2, policy.CallerInfo.QueryCorrelationId, text, 0L, input.Criteria.QueryCulture, additionalParameters, Math.Min(FastLocalSearchResultsProvider.SearchConfig.FastQueryResultTrimHits, input.PagingInfo.PageSize), null); foreach (KeyValuePair <PagingImsFlowExecutor.QueryExecutionContext, SearchResultItem[]> keyValuePair in enumerable) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search found pages"); PagingImsFlowExecutor.QueryExecutionContext key = keyValuePair.Key; ISearchResultItem[] value = keyValuePair.Value; if (!flag) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search found statistics"); num8 += (ulong)FastLocalSearchResultsProvider.FlowExecutor.ReadHitCount(key); IEnumerable <RefinerResult> source = FastLocalSearchResultsProvider.FlowExecutor.ReadRefiners(key); RefinerResult refinerResult = source.FirstOrDefault((RefinerResult t) => t.Name == FastIndexSystemSchema.Size.Name); if (refinerResult != null) { byteQuantifiedSize2 += new ByteQuantifiedSize((ulong)refinerResult.Sum); } mailboxStatistics = new MailboxStatistics(searchSource3.MailboxInfo, num8, byteQuantifiedSize2); flag = true; } foreach (ISearchResultItem searchResultItem in value) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search found items"); IFieldHolder fieldHolder = searchResultItem.Fields.FirstOrDefault((IFieldHolder f) => string.Equals(f.Name, "DocId", StringComparison.InvariantCultureIgnoreCase)); if (fieldHolder != null) { long num9 = (long)fieldHolder.Value; int documentId = IndexId.GetDocumentId(num9); IndexId.GetMailboxNumber(num9); list4.Add(new KeyValuePair <int, long>(documentId, num9)); } } if (list4.Count >= input.PagingInfo.PageSize) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search completed FAST"); break; } } num7 += num8; byteQuantifiedSize += byteQuantifiedSize2; if (list4.Count > 0) { dictionary[guid2] = list4; } if (mailboxStatistics != null) { list.Add(mailboxStatistics); } num += stopwatch.ElapsedMilliseconds - num3; num3 = stopwatch.ElapsedMilliseconds; } if (dictionary.Count > 0) { Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search loading preview items"); resultPage = multiMailboxSearchClient.FetchPreviewProperties(dictionary); num2 += stopwatch.ElapsedMilliseconds - num3; num3 = stopwatch.ElapsedMilliseconds; } Recorder.Trace(5L, TraceType.InfoTrace, "FastLocalSearchResultsProvider.Search aggregating"); ISearchResult aggregator = new AggregatedSearchTaskResult(new MailboxInfoList(multiMailboxSearchClient.Mailboxes), resultPage, null, num7, byteQuantifiedSize, null, list, null); resultAggregator.MergeSearchResult(aggregator); num5 += stopwatch.ElapsedMilliseconds - num3; num3 = stopwatch.ElapsedMilliseconds; } } result = new SearchMailboxesResults(input.Sources) { SearchResult = resultAggregator }; } finally { record.Attributes["FAST"] = num; record.Attributes["STORE"] = num2; record.Attributes["REST"] = num6; record.Attributes["INIT"] = num4; record.Attributes["AGGR"] = num5; record.Attributes["TOTALSIZE"] = byteQuantifiedSize; record.Attributes["TOTALCNT"] = num7; policy.Recorder.End(record); } return(result); }
public override void Process(SearchMailboxesInputs item) { Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process Item:", item); if (!item.IsLocalCall) { Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process ApplyConfiguration"); ISearchConfigurationProvider searchConfigurationProvider = SearchFactory.Current.GetSearchConfigurationProvider(base.Policy); searchConfigurationProvider.ApplyConfiguration(base.Policy, ref item); } CultureInfo culture = CultureInfo.InvariantCulture; if (!string.IsNullOrEmpty(item.Language)) { Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process Set Language:", item.Language); try { culture = new CultureInfo(item.Language); } catch (CultureNotFoundException) { Recorder.Trace(4L, TraceType.ErrorTrace, "InitializeSearchMailbox.Process Failed Language:", item.Language); throw new SearchException(KnownError.ErrorQueryLanguageNotValid); } } if (!string.IsNullOrWhiteSpace(item.SearchQuery)) { Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process Set Query:", item.SearchQuery); try { IConfigurationSession configurationSession = SearchFactory.Current.GetConfigurationSession(base.Policy); item.Criteria = new SearchCriteria(item.SearchQuery, null, culture, item.SearchType, base.Policy.RecipientSession, configurationSession, item.RequestId, base.Policy.ExecutionSettings.ExcludedFolders); goto IL_195; } catch (ParserException ex) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "InitializeSearchMailbox.Process Failed Query:", item.SearchQuery, "Error:", ex }); throw new SearchException(KnownError.ErrorInvalidSearchQuerySyntax, ex); } catch (TooManyKeywordsException ex2) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "InitializeSearchMailbox.Process Failed Query:", item.SearchQuery, "Error:", ex2 }); throw new SearchException(KnownError.TooManyKeywordsException, ex2); } goto IL_181; IL_195: if (item.Sources != null && item.Sources.Count > 0) { Recorder.Trace(4L, TraceType.ErrorTrace, "InitializeSearchMailbox.Process Source Count:", item.Sources.Count); if (item.Sources.Count > base.Policy.ExecutionSettings.DiscoveryMaxMailboxes && item.SearchType == SearchType.Preview) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "InitializeSearchMailbox.Process Source Failed Count:", item.Sources.Count, "Limit:", base.Policy.ThrottlingSettings.DiscoveryMaxMailboxes, "SearchType:", item.SearchType }); throw new SearchException(KnownError.TooManyMailboxesException, new object[] { item.Sources.Count, base.Policy.ExecutionSettings.DiscoveryMaxMailboxes }); } if ((long)item.Sources.Count > (long)((ulong)base.Policy.ThrottlingSettings.DiscoveryMaxStatsSearchMailboxes) && item.SearchType == SearchType.Statistics) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "InitializeSearchMailbox.Process Source Failed Count:", item.Sources.Count, "Limit:", base.Policy.ThrottlingSettings.DiscoveryMaxStatsSearchMailboxes, "SearchType:", item.SearchType }); throw new SearchException(KnownError.TooManyMailboxesException, new object[] { item.Sources.Count, (int)base.Policy.ThrottlingSettings.DiscoveryMaxStatsSearchMailboxes }); } if (!item.IsLocalCall) { Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process Format Query"); DirectoryQueryParameters item2 = new DirectoryQueryParameters { ExpandPublicFolders = true, ExpandGroups = true, MatchRecipientsToSources = true, Properties = SearchRecipient.SearchProperties, Sources = item.Sources, PageSize = (int)base.Policy.ExecutionSettings.DiscoveryADPageSize }; base.Executor.EnqueueNext(item2); return; } Recorder.Trace(4L, TraceType.InfoTrace, "InitializeSearchMailbox.Process Search Database"); using (List <SearchSource> .Enumerator enumerator = item.Sources.GetEnumerator()) { while (enumerator.MoveNext()) { SearchSource item3 = enumerator.Current; base.Executor.EnqueueNext(item3); } return; } } Recorder.Trace(4L, TraceType.ErrorTrace, "InitializeSearchMailbox.Process No Sources"); throw new SearchException(KnownError.ErrorNoMailboxSpecifiedForSearchOperation); } IL_181: Recorder.Trace(4L, TraceType.ErrorTrace, "InitializeSearchMailbox.Process Failed Query Empty"); throw new SearchException(KnownError.ErrorSearchQueryCannotBeEmpty); }
public SearchMailboxesResults Search(ISearchPolicy policy, SearchMailboxesInputs input) { ulong num = 0UL; SortedResultPage resultPage = null; new List <SearchSource>(input.Sources); List <MailboxStatistics> list = new List <MailboxStatistics>(); Dictionary <Guid, List <KeyValuePair <int, long> > > dictionary = new Dictionary <Guid, List <KeyValuePair <int, long> > >(); Recorder.Record record = policy.Recorder.Start("NonIndexableItemProvider", TraceType.InfoTrace, true); Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "NonIndexableItemProvider.Search Input:", input, "Type:", input.SearchType }); try { SearchSource searchSource = input.Sources.FirstOrDefault <SearchSource>(); if (searchSource != null) { Guid guid = searchSource.MailboxInfo.IsArchive ? searchSource.MailboxInfo.ArchiveDatabase : searchSource.MailboxInfo.MdbGuid; long num2 = 0L; if (input.PagingInfo.SortValue != null && input.PagingInfo.SortValue.SortColumnValue != null) { num2 = input.PagingInfo.SortValue.SecondarySortValue; num2 += 1L; } string indexSystemName = FastIndexVersion.GetIndexSystemName(guid); using (IFailedItemStorage failedItemStorage = Factory.Current.CreateFailedItemStorage(Factory.Current.CreateSearchServiceConfig(), indexSystemName)) { foreach (SearchSource searchSource2 in input.Sources) { FailedItemParameters failedItemParameters = new FailedItemParameters(FailureMode.All, FieldSet.Default); failedItemParameters.MailboxGuid = new Guid?(searchSource2.MailboxInfo.IsArchive ? searchSource2.MailboxInfo.ArchiveGuid : searchSource2.MailboxInfo.MailboxGuid); long failedItemsCount = failedItemStorage.GetFailedItemsCount(failedItemParameters); num += (ulong)failedItemsCount; list.Add(new MailboxStatistics(searchSource2.MailboxInfo, (ulong)failedItemsCount, ByteQuantifiedSize.Zero)); if (input.SearchType == SearchType.NonIndexedItemPreview) { failedItemParameters.StartingIndexId = num2; failedItemParameters.ResultLimit = input.PagingInfo.PageSize; ICollection <IFailureEntry> failedItems = failedItemStorage.GetFailedItems(failedItemParameters); dictionary[failedItemParameters.MailboxGuid.Value] = (from t in failedItems select new KeyValuePair <int, long>(t.DocumentId, t.IndexId)).ToList <KeyValuePair <int, long> >(); } } } if (input.SearchType == SearchType.NonIndexedItemPreview) { MultiMailboxSearchClient multiMailboxSearchClient = new MultiMailboxSearchClient(guid, (from t in input.Sources select t.MailboxInfo).ToArray <MailboxInfo>(), input.Criteria, input.CallerInfo, input.PagingInfo); resultPage = multiMailboxSearchClient.FetchPreviewProperties(dictionary); } } } finally { policy.Recorder.End(record); } return(new SearchMailboxesResults(input.Sources) { SearchResult = new ResultAggregator(resultPage, null, num, ByteQuantifiedSize.Zero, null, null, list) }); }
private async void SearchButton_Click(object sender, RoutedEventArgs e) { this.SearchButton.IsEnabled = false; this.SearchPageCommandBar.IsEnabled = false; this.SearchErrorTextBlock.Visibility = Visibility.Collapsed; this.DefaultViewModel["item"] = new SearchAnswer(); string RequestUri = null; if (SearchParametrOne == MainPage.RestaurantsPivotItemName) { RequestUri = "https://www.foodlook.az/api/restaurants/search/"; } else if (SearchParametrOne == MainPage.CoursesPivotItemName) { RequestUri = "https://www.foodlook.az/api/courses/search/"; } else if (SearchParametrOne == MainPage.CategoriesPivotItemName) { RequestUri = "https://www.foodlook.az/api/categories/search/"; } if (SearchParametrTwo == ByName) { if (this.SearchByNameTextBox.Text == String.Empty) { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("EmptyErrorMessage")); } else { RequestUri += "?q=" + this.SearchByNameTextBox.Text; this.progressRing.IsActive = true; var Result = await SearchSource.GetSearchAnswer(new Uri(RequestUri)); this.progressRing.IsActive = false; if (Result == null) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("ErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else if (Result.SearchResults.Count.Equals(0)) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("EmptyResultErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else { this.DefaultViewModel["item"] = Result; } } } else if (SearchParametrTwo == ByPrice) { if (this.LeftPrice.Text.Equals(String.Empty) || this.RightPrice.Text.Equals(String.Empty)) { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("EmptyErrorMessage")); } else { RequestUri += "price/from/" + this.LeftPrice.Text.ToString().Replace(',', '.') + "/to/" + this.RightPrice.Text.ToString().Replace(',', '.') + "/"; this.progressRing.IsActive = true; var Result = await SearchSource.GetSearchAnswer(new Uri(RequestUri)); this.progressRing.IsActive = false; if (Result == null) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("ErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else if (Result.SearchResults.Count.Equals(0)) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("EmptyResultErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else { this.DefaultViewModel["item"] = Result; } } } else if (SearchParametrTwo == ByPlace) { if (this.SearchByPlaceTextBox.Text.Equals(string.Empty)) { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("EmptyErrorMessage")); } else { Geolocator geoLocator = new Geolocator(); if (geoLocator.LocationStatus.Equals(PositionStatus.Disabled)) { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("LocationErrorMessage")); } else { this.progressRing.IsActive = true; Geoposition geoPosition = await geoLocator.GetGeopositionAsync(); string Latitude = Math.Round(geoPosition.Coordinate.Point.Position.Latitude, 5).ToString(CultureInfo.InvariantCulture); string Longitude = Math.Round(geoPosition.Coordinate.Point.Position.Longitude, 6).ToString(CultureInfo.InvariantCulture); string Radius = this.SearchByPlaceTextBox.Text.Replace(',', '.'); RequestUri = "https://www.foodlook.az/api/restaurants/search/location/latitude/" + Latitude + "/longitude/" + Longitude + "/radius/" + Radius + "/"; //RequestUri = "https://www.foodlook.az/api/restaurants/search/location/latitude/40.39236/longitude/49.821542/radius/5/"; var Result = await SearchSource.GetSearchAnswer(new Uri(RequestUri)); this.progressRing.IsActive = false; if (Result == null) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("ErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else if (Result.SearchResults.Count.Equals(0)) { this.SearchErrorTextBlock.Text = ResourceLoader.GetForCurrentView("Resources").GetString("EmptyResultErrorMessage"); this.SearchErrorTextBlock.Visibility = Visibility.Visible; } else { this.DefaultViewModel["item"] = Result; } } } } else { ShowMessageAsync(ResourceLoader.GetForCurrentView("Resources").GetString("SomeError")); } this.SearchButton.IsEnabled = true; this.SearchPageCommandBar.IsEnabled = true; }
private void ProcessPublicFolders(DirectoryQueryParameters item, SearchSource allPublicFolders, List <SearchSource> publicFolders) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryQueryFormatting.ProcessPublicFolders AllPublicFolders:", allPublicFolders, "MailboxFilterPairs:", publicFolders }); List <QueryFilter> list = new List <QueryFilter>(); List <string> list2 = new List <string>(); ISourceConverter sourceConverter = SearchFactory.Current.GetSourceConverter(base.Policy, SourceType.PublicFolder); if (allPublicFolders != null || publicFolders.Count > 0) { List <SearchSource> list3 = new List <SearchSource>(); IEnumerable <SearchSource> enumerable = (allPublicFolders == null) ? publicFolders : ((IEnumerable <SearchSource>) new SearchSource[] { allPublicFolders }); Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryQueryFormatting.ProcessPublicFolders PublicFolderList:", enumerable); foreach (SearchSource searchSource in sourceConverter.Convert(base.Policy, enumerable)) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryQueryFormatting.ProcessPublicFolders Source:", searchSource.ReferenceId, "SourceType:", searchSource.SourceType }); if (searchSource.SourceType != SourceType.PublicFolder) { QueryFilter sourceFilter = SearchRecipient.GetSourceFilter(searchSource); if (sourceFilter != null) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryQueryFormatting.ProcessPublicFolders Source:", searchSource.ReferenceId, "SourceType:", searchSource.SourceType, "Filter:", sourceFilter }); list3.Add(searchSource); if (list2.Contains(searchSource.ReferenceId)) { continue; } list.Add(sourceFilter); list2.Add(searchSource.ReferenceId); if (list.Count >= item.PageSize) { this.Enqueue(item, list3, list); list3.Clear(); list2.Clear(); list.Clear(); continue; } continue; } } Recorder.Trace(4L, TraceType.ErrorTrace, "DirectoryQueryFormatting.ProcessPublicFolders FailedSource:", searchSource.ReferenceId); base.Executor.Fail(new SearchException(KnownError.ErrorSearchableObjectNotFound) { ErrorSource = searchSource }); } this.Enqueue(item, list3, list); } }
public override void Process(DirectoryQueryParameters item) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryQueryFormatting.Process Item:", item); SearchSource searchSource = null; SearchSource searchSource2 = null; List <SearchSource> list = new List <SearchSource>(); List <DirectoryQueryFormatting.SourceFilterPair> list2 = new List <DirectoryQueryFormatting.SourceFilterPair>(); foreach (SearchSource searchSource3 in item.Sources) { bool flag = true; if (searchSource3.SourceType == SourceType.AutoDetect) { searchSource3.SourceType = SearchSource.GetSourceType(searchSource3); } Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryQueryFormatting.Process Source:", searchSource3.ReferenceId, "Type:", searchSource3.SourceType }); switch (searchSource3.SourceType) { case SourceType.LegacyExchangeDN: case SourceType.Recipient: case SourceType.MailboxGuid: if (searchSource == null) { if (!string.IsNullOrEmpty(searchSource3.ReferenceId)) { QueryFilter sourceFilter = SearchRecipient.GetSourceFilter(searchSource3); if (sourceFilter != null) { list2.Add(new DirectoryQueryFormatting.SourceFilterPair { Source = searchSource3, Filter = sourceFilter }); flag = false; } } } else { flag = false; } break; case SourceType.PublicFolder: if (searchSource2 == null) { if (!string.IsNullOrEmpty(searchSource3.ReferenceId)) { list.Add(searchSource3); flag = false; } } else { flag = false; } break; case SourceType.AllPublicFolders: searchSource2 = searchSource3; flag = false; break; case SourceType.AllMailboxes: searchSource = searchSource3; flag = false; break; } if (flag) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "DirectoryQueryFormatting.Process FailedSource:", searchSource3.ReferenceId, "FailedType:", searchSource3.SourceType }); base.Executor.Fail(new SearchException(KnownError.ErrorSearchableObjectNotFound) { ErrorSource = searchSource3 }); } if (searchSource != null && searchSource2 != null) { break; } } this.ProcessMailboxes(item, searchSource, list2); this.ProcessPublicFolders(item, searchSource2, list); }
private void ProcessMailboxes(DirectoryQueryParameters item, SearchSource allMailboxes, List <DirectoryQueryFormatting.SourceFilterPair> mailboxFilterPairs) { Recorder.Trace(4L, TraceType.InfoTrace, new object[] { "DirectoryQueryFormatting.ProcessMailboxes AllMailboxes:", allMailboxes, "MailboxFilterPairs:", mailboxFilterPairs }); if (allMailboxes == null) { if (mailboxFilterPairs.Count > 0) { Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryQueryFormatting.ProcessMailboxes Mailboxes Count:", mailboxFilterPairs.Count); int num; for (int i = 0; i < mailboxFilterPairs.Count; i += num) { num = Math.Min(mailboxFilterPairs.Count - i, item.PageSize); IEnumerable <DirectoryQueryFormatting.SourceFilterPair> source = mailboxFilterPairs.Skip(i).Take(num); this.Enqueue(item, from t in source select t.Source, source.Select((DirectoryQueryFormatting.SourceFilterPair t) => t.Filter)); } } return; } Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryQueryFormatting.ProcessMailboxes AllMailboxes"); if (string.IsNullOrWhiteSpace(allMailboxes.ReferenceId)) { this.Enqueue(item, new SearchSource[] { allMailboxes }, SearchRecipient.GetRecipientTypeFilter(item.RequestGroups)); return; } Recorder.Trace(4L, TraceType.InfoTrace, "DirectoryQueryFormatting.ProcessMailboxes AllMailboxes Filter:", allMailboxes.ReferenceId); if (SearchRecipient.IsWildcard(allMailboxes.ReferenceId) && item.ExpandGroups) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "DirectoryQueryFormatting.ProcessMailboxes Failed AllMailboxes Filter:", allMailboxes.ReferenceId, "ExpandGroups:", item.ExpandGroups, "Wildcard with Group Expansion not Allowed" }); throw new SearchException(KnownError.ErrorWildcardAndGroupExpansionNotAllowed); } if (SearchRecipient.IsSuffixSearchWildcard(allMailboxes.ReferenceId)) { Recorder.Trace(4L, TraceType.ErrorTrace, new object[] { "DirectoryQueryFormatting.ProcessMailboxes Failed AllMailboxes Filter:", allMailboxes.ReferenceId, "ExpandGroups:", item.ExpandGroups, "Wildcard with Suffix not Allowed" }); throw new SearchException(KnownError.ErrorSuffixSearchNotAllowed); } this.Enqueue(item, new SearchSource[] { allMailboxes }, SearchRecipient.GetRecipientTypeSearchFilter(allMailboxes.ReferenceId, item.RequestGroups)); }