private static OwaFilterState ParseFromPropertyValue(object propertyValue) { string[] array = propertyValue as string[]; if (array == null || array.Length < 2 || string.IsNullOrEmpty(array[0])) { return(null); } OwaFilterState owaFilterState = new OwaFilterState(); owaFilterState.version = 0.0; if (string.IsNullOrEmpty(array[1])) { return(owaFilterState); } try { owaFilterState.sourceFolderId = StoreId.EwsIdToStoreObjectId(array[0]); } catch (Exception) { ExTraceGlobals.StorageTracer.TraceDebug(0L, "[OwaFilterState::ParseFromPropertyValue] id of property was not valid EWS id: " + array[0]); return(owaFilterState); } int num = 0; double num2 = 0.0; string[] array2 = array[1].Split(new char[] { ':' }); if (array2.Length < 2 || !int.TryParse(array2[0], out num) || !double.TryParse(array2[1], out num2)) { return(owaFilterState); } if (num2 != 15.1) { return(owaFilterState); } bool flag = array2.Length == 3; OwaViewFilter owaViewFilter = (OwaViewFilter)num; if (!EnumValidator.IsValidValue <OwaViewFilter>(owaViewFilter)) { ExTraceGlobals.StorageTracer.TraceDebug(0L, "[OwaFilterState::ParseFromPropertyValue] ViewFilter of property was not valid enum value: " + owaViewFilter.ToString()); return(owaFilterState); } if (owaViewFilter == OwaViewFilter.All && !flag) { ExTraceGlobals.StorageTracer.TraceDebug(0L, "[OwaFilterState::ParseFromPropertyValue] ViewFilter All is not valid enum value if FromFilter is not specified."); return(owaFilterState); } owaFilterState.version = num2; owaFilterState.viewFilter = owaViewFilter; if (flag) { owaFilterState.fromFilter = array2[2]; } return(owaFilterState); }
private static string[] GetPropertyValueToSave(MailboxSession mailboxSession, StoreId sourceFolderId, OwaViewFilter viewFilter, string fromFilter) { List <string> list = new List <string>(); string item = string.Empty; try { item = StoreId.StoreIdToEwsId(mailboxSession.MailboxGuid, sourceFolderId); } catch (Exception) { ExTraceGlobals.StorageTracer.TraceError(0L, "[OwaFilterState::GetPropertyValueToSave] id of property was not valid EWS id"); return(null); } int num = (int)viewFilter; string text = (!string.IsNullOrEmpty(fromFilter)) ? (':' + fromFilter) : string.Empty; list.Add(item); list.Add(string.Concat(new object[] { num.ToString(), ':', 15.1, text })); return(list.ToArray()); }
public static bool LinkViewFolder(MailboxSession session, StoreId folderId, SearchFolder viewFolder, OwaViewFilter filter) { bool flag = false; Exception ex = null; if (OwaFilterState.FilterToLinkPropertyDefinitionsMap.ContainsKey(filter)) { try { using (Folder folder = Folder.Bind(session, folderId)) { bool flag2 = true; StoreId linkedFolderIdForFilteredView = OwaFilterState.GetLinkedFolderIdForFilteredView(session, folderId, filter); if (linkedFolderIdForFilteredView != null && viewFolder.StoreObjectId.Equals(linkedFolderIdForFilteredView)) { flag2 = false; flag = true; } if (flag2) { folder.SafeSetProperty(OwaFilterState.FilterToLinkPropertyDefinitionsMap[filter], viewFolder.Id.ObjectId.ProviderLevelItemId); FolderSaveResult folderSaveResult = folder.Save(); if (folderSaveResult.OperationResult == OperationResult.Succeeded) { ExTraceGlobals.StorageTracer.TraceDebug <string>(0L, "[OwaFilterState::LinkViewFolder] Search Folder Name = {0} linked to physical folder", viewFolder.DisplayName); flag = true; } else { ex = folderSaveResult.Exception; } } } } catch (ObjectNotFoundException ex2) { ex = ex2; } if (!flag) { string arg = (ex != null) ? ex.ToString() : "[OwaFilterState::LinkViewFolder] FolderSaveResult.OperationResult != OperationResult.Succeeded"; string message = string.Format("Linking the view folder ({0}) failed. Details= {1}", viewFolder.DisplayName, arg); ExTraceGlobals.StorageTracer.TraceError(0L, message); } } else { ExTraceGlobals.StorageTracer.TraceDebug <OwaViewFilter>(0L, "[OwaFilterState::LinkViewFolder] The specified OwaViewFilter {0} is not supported for linking to the source folder.", filter); } return(flag); }
public OwaFilterState(StoreId currentFolderId, OwaViewFilter viewFilter, string fromFilter) { this.sourceFolderId = currentFolderId; this.viewFilter = viewFilter; this.fromFilter = fromFilter; }
public static StoreObjectId GetLinkedFolderIdForFilteredView(MailboxSession session, StoreId sourceFolderId, OwaViewFilter viewFilter) { StoreObjectId result = null; try { using (Folder folder = Folder.Bind(session, sourceFolderId)) { byte[] folderProperty = OwaFilterState.GetFolderProperty <byte[]>(folder, OwaFilterState.FilterToLinkPropertyDefinitionsMap[viewFilter], null); if (folderProperty != null) { result = StoreObjectId.FromProviderSpecificId(folderProperty, StoreObjectType.Folder); } } } catch (CorruptDataException arg) { ExTraceGlobals.StorageTracer.TraceError <OwaViewFilter, CorruptDataException>(0L, "[OwaFilterState::GetLinkedFolderIdForFilteredView] Caught a CorruptDataException for OwaViewFilter {0}: {1}", viewFilter, arg); } return(result); }
private StoreObjectId ResolveSearchFolderIdForFilteredView(StoreId inboxFolderId, OwaViewFilter viewFilter) { StoreObjectId storeObjectId = null; ExTraceGlobals.NotificationsCallTracer.TraceDebug <string>((long)this.GetHashCode(), "HierarchyNotificationHandler.ResolveSearchFolderIdForFilteredView Start. SubscriptionId: {0}", base.SubscriptionId); OwaSearchContext owaSearchContext = new OwaSearchContext(); owaSearchContext.ViewFilter = viewFilter; owaSearchContext.FolderIdToSearch = inboxFolderId; StoreObjectId defaultFolderId = base.UserContext.MailboxSession.GetDefaultFolderId(DefaultFolderType.SearchFolders); using (SearchFolder owaViewFilterSearchFolder = SearchUtil.GetOwaViewFilterSearchFolder(owaSearchContext, base.UserContext.MailboxSession, defaultFolderId, null, CallContext.Current)) { if (owaViewFilterSearchFolder == null) { throw new ArgumentNullException(string.Format("HierarchyNotificationHandler.ResolveSearchFolderIdForFilteredView null searchFolder returned for subscriptionId: {0}. ViewFilter: {1}; Source folder id: {2}", base.SubscriptionId, viewFilter, inboxFolderId.ToString())); } storeObjectId = owaViewFilterSearchFolder.StoreObjectId; ExTraceGlobals.NotificationsCallTracer.TraceDebug((long)this.GetHashCode(), "HierarchyNotificationHandler.ResolveSearchFolderIdForFilteredView found filtered-view search folder subscriptionId: {0} . ViewFilter: {1}; Source folder id: {2}, Search folder id: {3}", new object[] { base.SubscriptionId, viewFilter, inboxFolderId.ToString(), storeObjectId.ToString() }); } return(storeObjectId); }