Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public OwaFilterState(StoreId currentFolderId, OwaViewFilter viewFilter, string fromFilter)
 {
     this.sourceFolderId = currentFolderId;
     this.viewFilter     = viewFilter;
     this.fromFilter     = fromFilter;
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }