internal MailboxSearchObject(SearchObject searchObject, SearchStatus searchStatus) { if (searchObject == null) { throw new ArgumentNullException("searchObject"); } if (searchStatus == null) { throw new ArgumentException("searchStatus"); } this.searchObject = searchObject; this.searchStatus = searchStatus; }
public void AddSearchObject(SearchObject obj) { if (obj == null) { throw new ArgumentNullException("obj"); } this.AddProperty(SearchObjectBaseSchema.Id.Name, obj.Id); this.AddProperty(SearchObjectSchema.Language.Name, obj.Language); this.AddProperty(SearchObjectSchema.StartDate.Name, obj.StartDate); this.AddProperty(SearchObjectSchema.EndDate.Name, obj.EndDate); this.AddProperty(SearchObjectSchema.MessageTypes.Name, obj.MessageTypes); this.AddProperty(SearchObjectSchema.SearchDumpster.Name, obj.SearchDumpster); this.AddProperty(SearchObjectSchema.LogLevel.Name, obj.LogLevel); this.AddProperty(SearchObjectSchema.IncludeUnsearchableItems.Name, obj.IncludeUnsearchableItems); this.AddProperty(SearchObjectSchema.IncludePersonalArchive.Name, obj.IncludePersonalArchive); this.AddProperty(SearchObjectSchema.IncludeRemoteAccounts.Name, obj.IncludeRemoteAccounts); this.AddProperty(SearchObjectSchema.StatusMailRecipients.Name, obj.StatusMailRecipients); this.AddProperty(SearchObjectSchema.EstimateOnly.Name, obj.EstimateOnly); this.AddProperty(SearchObjectSchema.ExcludeDuplicateMessages.Name, obj.ExcludeDuplicateMessages); this.AddProperty(SearchObjectSchema.Resume.Name, obj.Resume); this.AddProperty(SearchObjectSchema.SearchQuery.Name, obj.SearchQuery.Length); this.AddProperty(SearchObjectSchema.IncludeKeywordStatistics.Name, obj.IncludeKeywordStatistics); }
private void CacheSearchStatus(SearchObject searchObject) { SearchObjectId identity = new SearchObjectId(searchObject.Id, ObjectType.SearchStatus); searchObject.SearchStatus = (SearchStatus)this.Read <SearchStatus>(identity); }
internal static object AqsQueryGetter(IPropertyBag propertyBag) { StringBuilder stringBuilder = new StringBuilder(64); int num = 0; foreach (string text in ((MultiValuedProperty <string>)propertyBag[SearchObjectSchema.Senders])) { stringBuilder.Append("\""); stringBuilder.Append(text.Replace("\\", "\\\\")); stringBuilder.Append("\"*"); num = stringBuilder.Length; stringBuilder.Append(" OR "); } if (num > 0) { stringBuilder.Length = num; } StringBuilder stringBuilder2 = new StringBuilder(64); num = 0; foreach (string text2 in ((MultiValuedProperty <string>)propertyBag[SearchObjectSchema.Recipients])) { stringBuilder2.Append("\""); stringBuilder2.Append(text2.Replace("\\", "\\\\")); stringBuilder2.Append("\"*"); num = stringBuilder2.Length; stringBuilder2.Append(" OR "); } if (num > 0) { stringBuilder2.Length = num; } string text3 = string.Empty; ExDateTime?exDateTime = (ExDateTime?)propertyBag[SearchObjectSchema.StartDate]; ExDateTime?exDateTime2 = SearchObject.RoundEndDate((ExDateTime?)propertyBag[SearchObjectSchema.EndDate]); if (exDateTime != null && exDateTime != null) { text3 = text3 + " >=" + exDateTime.Value.ToString(); } if (exDateTime2 != null && exDateTime2 != null) { text3 = text3 + " <=" + exDateTime2.Value.ToString(); } StringBuilder stringBuilder3 = new StringBuilder(64); num = 0; foreach (KindKeyword key in ((MultiValuedProperty <KindKeyword>)propertyBag[SearchObjectSchema.MessageTypes])) { stringBuilder3.Append(AqsParser.CanonicalKindKeys[key]); num = stringBuilder3.Length; stringBuilder3.Append(" OR "); } if (num > 0) { stringBuilder3.Length = num; } string text4 = stringBuilder.ToString(); string text5 = stringBuilder2.ToString(); string text6 = stringBuilder3.ToString(); string str = string.Empty; text4 = (string.IsNullOrEmpty(text4) ? string.Empty : string.Format("{0}:({1}) ", AqsParser.CanonicalKeywords[PropertyKeyword.From], text4)); text5 = (string.IsNullOrEmpty(text5) ? string.Empty : string.Format("{0}:({1}) ", AqsParser.CanonicalKeywords[PropertyKeyword.Participants], text5)); if (!string.IsNullOrEmpty(text4) && !string.IsNullOrEmpty(text5)) { str = string.Format("({0} OR {1}) ", text4, text5); } else if (!string.IsNullOrEmpty(text4)) { str = text4; } else if (!string.IsNullOrEmpty(text5)) { str = text5; } return(str + (string.IsNullOrEmpty(text3) ? string.Empty : (AqsParser.CanonicalKeywords[PropertyKeyword.Received] + ":(" + text3 + ") ")) + (string.IsNullOrEmpty(text6) ? string.Empty : (AqsParser.CanonicalKeywords[PropertyKeyword.Kind] + ":(" + text6 + ") ")) + (string)propertyBag[SearchObjectSchema.SearchQuery]); }
public IList <KeywordHit> FindMailboxStatisticsByKeywords(ExchangePrincipal principal, SearchObject searchObject) { FindMailboxStatisticsByKeywordsType findMailboxStatisticsByKeywordsType = new FindMailboxStatisticsByKeywordsType { Mailboxes = new UserMailboxType[] { new UserMailboxType { Id = (principal.MailboxInfo.IsArchive ? principal.MailboxInfo.MailboxGuid.ToString() : principal.MailboxInfo.RemoteIdentity.Value.ToString()), IsArchive = principal.MailboxInfo.IsArchive } }, Keywords = new string[] { searchObject.SearchQuery } }; if (searchObject.Language != null) { findMailboxStatisticsByKeywordsType.Language = searchObject.Language.ToString(); } if (searchObject.Senders != null && searchObject.Senders.Count > 0) { findMailboxStatisticsByKeywordsType.Senders = searchObject.Senders.ToArray(); } if (searchObject.Recipients != null && searchObject.Recipients.Count > 0) { findMailboxStatisticsByKeywordsType.Recipients = searchObject.Recipients.ToArray(); } if (searchObject.StartDate != null) { findMailboxStatisticsByKeywordsType.FromDate = (DateTime)searchObject.StartDate.Value.ToUtc(); findMailboxStatisticsByKeywordsType.FromDateSpecified = true; } if (searchObject.EndDate != null) { findMailboxStatisticsByKeywordsType.ToDate = (DateTime)searchObject.EndDate.Value.ToUtc(); findMailboxStatisticsByKeywordsType.ToDateSpecified = true; } if (searchObject.SearchDumpster) { findMailboxStatisticsByKeywordsType.SearchDumpster = true; findMailboxStatisticsByKeywordsType.SearchDumpsterSpecified = true; } if (searchObject.IncludePersonalArchive) { findMailboxStatisticsByKeywordsType.IncludePersonalArchive = true; findMailboxStatisticsByKeywordsType.IncludePersonalArchiveSpecified = true; } if (searchObject.IncludeUnsearchableItems) { findMailboxStatisticsByKeywordsType.IncludeUnsearchableItems = true; findMailboxStatisticsByKeywordsType.IncludeUnsearchableItemsSpecified = true; } if (searchObject.MessageTypes != null && searchObject.MessageTypes.Count > 0) { List <SearchItemKindType> list = new List <SearchItemKindType>(searchObject.MessageTypes.Count); foreach (KindKeyword kindKeyword in searchObject.MessageTypes) { list.Add((SearchItemKindType)Enum.Parse(typeof(SearchItemKindType), kindKeyword.ToString(), true)); } findMailboxStatisticsByKeywordsType.MessageTypes = list.ToArray(); } FindMailboxStatisticsByKeywordsResponseType findMailboxStatisticsByKeywordsResponseType = null; int num = 0; Exception ex = null; do { try { ex = null; findMailboxStatisticsByKeywordsResponseType = this.binding.FindMailboxStatisticsByKeywords(findMailboxStatisticsByKeywordsType); break; } catch (SoapException ex2) { ex = ex2; } catch (WebException ex3) { ex = ex3; } catch (IOException ex4) { ex = ex4; } catch (InvalidOperationException ex5) { ex = ex5; } }while (++num < 3); if (ex != null) { ExTraceGlobals.SessionTracer.TraceError((long)this.GetHashCode(), ex.ToString()); throw new MailboxSearchEwsFailedException(ex.Message); } if (findMailboxStatisticsByKeywordsResponseType != null && findMailboxStatisticsByKeywordsResponseType.ResponseMessages != null && findMailboxStatisticsByKeywordsResponseType.ResponseMessages.Items != null && findMailboxStatisticsByKeywordsResponseType.ResponseMessages.Items.Length > 0) { List <KeywordHit> list2 = new List <KeywordHit>(findMailboxStatisticsByKeywordsResponseType.ResponseMessages.Items.Length); foreach (FindMailboxStatisticsByKeywordsResponseMessageType findMailboxStatisticsByKeywordsResponseMessageType in findMailboxStatisticsByKeywordsResponseType.ResponseMessages.Items) { if (findMailboxStatisticsByKeywordsResponseMessageType.ResponseClass != ResponseClassType.Success) { ExTraceGlobals.SessionTracer.TraceError <ResponseClassType, ResponseCodeType, string>((long)this.GetHashCode(), "FindMailboxStatisticsByKeywords EWS call failed with response. ResponseClass={0}, ResponseCode={1}, MessageText={2}", findMailboxStatisticsByKeywordsResponseMessageType.ResponseClass, findMailboxStatisticsByKeywordsResponseMessageType.ResponseCode, findMailboxStatisticsByKeywordsResponseMessageType.MessageText); throw new MailboxSearchEwsFailedException(findMailboxStatisticsByKeywordsResponseMessageType.MessageText); } MailboxStatisticsSearchResultType mailboxStatisticsSearchResult = findMailboxStatisticsByKeywordsResponseMessageType.MailboxStatisticsSearchResult; KeywordStatisticsSearchResultType keywordStatisticsSearchResult = mailboxStatisticsSearchResult.KeywordStatisticsSearchResult; list2.Add(new KeywordHit { Phrase = keywordStatisticsSearchResult.Keyword, Count = keywordStatisticsSearchResult.ItemHits, MailboxCount = ((keywordStatisticsSearchResult.ItemHits > 0) ? 1 : 0), Size = new ByteQuantifiedSize((ulong)keywordStatisticsSearchResult.Size) }); } return(list2); } ExTraceGlobals.SessionTracer.TraceError((long)this.GetHashCode(), "Response of FindMailboxStatisticsByKeywords is empty"); throw new MailboxSearchEwsFailedException(ServerStrings.MailboxSearchEwsEmptyResponse); }
internal MailboxSearchObject(SearchObject searchObject) : this(searchObject, new SearchStatus()) { }