Exemplo n.º 1
0
        private static Folder GetFolder(AnchorContext context, MailboxSession mailboxSession, StoreObjectId rootFolderId, string folderName)
        {
            AnchorUtil.ThrowOnNullArgument(mailboxSession, "mailboxSession");
            AnchorUtil.ThrowOnNullArgument(rootFolderId, "rootFolderId");
            AnchorUtil.ThrowOnNullArgument(folderName, "folderName");
            Folder result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                Folder        folder        = null;
                StoreObjectId storeObjectId = AnchorFolder.GetFolderId(context, mailboxSession, rootFolderId, folderName);
                if (storeObjectId == null)
                {
                    folder = Folder.Create(mailboxSession, rootFolderId, StoreObjectType.Folder, folderName, CreateMode.OpenIfExists);
                    disposeGuard.Add <Folder>(folder);
                    folder.Save();
                    folder.Load(AnchorFolder.FolderIdPropertyDefinition);
                    storeObjectId = folder.Id.ObjectId;
                }
                if (folder == null)
                {
                    folder = Folder.Bind(mailboxSession, storeObjectId, AnchorFolder.FolderIdPropertyDefinition);
                    disposeGuard.Add <Folder>(folder);
                }
                disposeGuard.Success();
                result = folder;
            }
            return(result);
        }
Exemplo n.º 2
0
        // Token: 0x060001E1 RID: 481 RVA: 0x00006EE4 File Offset: 0x000050E4
        public bool MoveMessageItems(StoreObjectId[] itemsToMove, string folderName)
        {
            bool result;

            using (AnchorFolder anchorFolder = AnchorFolder.GetFolder(this.anchorContext, this.MailboxSession, folderName))
            {
                GroupOperationResult groupOperationResult = this.folder.Folder.MoveItems(anchorFolder.Folder.Id, itemsToMove);
                result = (groupOperationResult.OperationResult == OperationResult.Succeeded);
            }
            return(result);
        }
Exemplo n.º 3
0
        // Token: 0x060001E7 RID: 487 RVA: 0x000073B4 File Offset: 0x000055B4
        public IAnchorDataProvider GetProviderForFolder(AnchorContext context, string folderName)
        {
            IAnchorDataProvider result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                AnchorFolder disposable = AnchorFolder.GetFolder(this.anchorContext, this.MailboxSession, folderName);
                disposeGuard.Add <AnchorFolder>(disposable);
                AnchorDataProvider anchorDataProvider = new AnchorDataProvider(context, this.activeDirectoryProvider, this.MailboxSession, disposable, false);
                disposeGuard.Success();
                result = anchorDataProvider;
            }
            return(result);
        }
Exemplo n.º 4
0
        internal static AnchorFolder GetFolder(AnchorContext context, MailboxSession mailboxSession, string folderName)
        {
            AnchorFolder result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                Folder folder = AnchorFolder.GetFolder(context, mailboxSession, mailboxSession.GetDefaultFolderId(DefaultFolderType.Root), folderName);
                disposeGuard.Add <Folder>(folder);
                AnchorFolder anchorFolder = new AnchorFolder(context, folder);
                disposeGuard.Success();
                result = anchorFolder;
            }
            return(result);
        }
Exemplo n.º 5
0
        // Token: 0x060001E6 RID: 486 RVA: 0x00007328 File Offset: 0x00005528
        public IAnchorStoreObject GetFolderByName(string folderName, PropertyDefinition[] properties)
        {
            AnchorUtil.ThrowOnNullArgument(properties, "properties");
            AnchorUtil.AssertOrThrow(this.MailboxSession != null, "Should have a MailboxSession", new object[0]);
            IAnchorStoreObject result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                IAnchorStoreObject anchorStoreObject = AnchorFolder.GetFolder(this.anchorContext, this.MailboxSession, folderName);
                disposeGuard.Add <IAnchorStoreObject>(anchorStoreObject);
                anchorStoreObject.Load(properties);
                disposeGuard.Success();
                result = anchorStoreObject;
            }
            return(result);
        }
Exemplo n.º 6
0
        // Token: 0x060001EA RID: 490 RVA: 0x00007478 File Offset: 0x00005678
        private static AnchorDataProvider CreateProviderForMailboxSession(AnchorContext context, AnchorADProvider activeDirectoryProvider, string folderName, Func <ExchangePrincipal, MailboxSession> mailboxSessionCreator)
        {
            AnchorUtil.ThrowOnNullArgument(mailboxSessionCreator, "mailboxSessionCreator");
            AnchorDataProvider result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                ExchangePrincipal mailboxOwner = activeDirectoryProvider.GetMailboxOwner(AnchorDataProvider.GetMailboxFilter(context.AnchorCapability));
                MailboxSession    disposable   = mailboxSessionCreator(mailboxOwner);
                disposeGuard.Add <MailboxSession>(disposable);
                AnchorFolder disposable2 = AnchorFolder.GetFolder(context, disposable, folderName);
                disposeGuard.Add <AnchorFolder>(disposable2);
                AnchorDataProvider anchorDataProvider = new AnchorDataProvider(context, activeDirectoryProvider, disposable, disposable2, true);
                disposeGuard.Success();
                result = anchorDataProvider;
            }
            return(result);
        }
Exemplo n.º 7
0
 // Token: 0x060001D4 RID: 468 RVA: 0x00006D20 File Offset: 0x00004F20
 private AnchorDataProvider(AnchorContext anchorContext, AnchorADProvider activeDirectoryProvider, MailboxSession mailboxSession, AnchorFolder folder, bool ownSession)
 {
     AnchorUtil.ThrowOnNullArgument(anchorContext, "anchorContext");
     AnchorUtil.ThrowOnNullArgument(activeDirectoryProvider, "activeDirectoryProvider");
     AnchorUtil.ThrowOnNullArgument(mailboxSession, "mailboxSession");
     AnchorUtil.ThrowOnNullArgument(folder, "folder");
     this.anchorContext           = anchorContext;
     this.activeDirectoryProvider = activeDirectoryProvider;
     this.MailboxSession          = mailboxSession;
     this.folder     = folder;
     this.ownSession = ownSession;
 }
Exemplo n.º 8
0
        public static bool RemoveFolder(AnchorContext context, MailboxSession mailboxSession, string folderName)
        {
            StoreObjectId defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.Root);
            StoreObjectId folderId        = AnchorFolder.GetFolderId(context, mailboxSession, defaultFolderId, folderName);

            if (folderId == null)
            {
                context.Logger.Log(MigrationEventType.Verbose, "couldn't find folder with name {0} treating as success", new object[]
                {
                    folderName
                });
                return(true);
            }
            using (Folder folder = Folder.Bind(mailboxSession, folderId, AnchorFolder.FolderIdPropertyDefinition))
            {
                context.Logger.Log(MigrationEventType.Information, "About to remove all messages & subfolders from {0} with id {1}", new object[]
                {
                    folderName,
                    folderId
                });
                GroupOperationResult groupOperationResult = folder.DeleteAllObjects(DeleteItemFlags.HardDelete, true);
                if (groupOperationResult.OperationResult != OperationResult.Succeeded)
                {
                    context.Logger.Log(MigrationEventType.Warning, "unsuccessfully removed messages & subfolders from {0} with id {1} with result {2}", new object[]
                    {
                        folderName,
                        folderId,
                        groupOperationResult
                    });
                    return(false);
                }
            }
            bool result;

            using (Folder folder2 = Folder.Bind(mailboxSession, defaultFolderId))
            {
                context.Logger.Log(MigrationEventType.Information, "About to remove folder {0} with id {1}", new object[]
                {
                    folderName,
                    folderId
                });
                AggregateOperationResult aggregateOperationResult = folder2.DeleteObjects(DeleteItemFlags.HardDelete, new StoreId[]
                {
                    folderId
                });
                if (aggregateOperationResult.OperationResult != OperationResult.Succeeded)
                {
                    context.Logger.Log(MigrationEventType.Warning, "unsuccessfully removed folder {0} with id {1} with result {2}", new object[]
                    {
                        folderName,
                        folderId,
                        aggregateOperationResult
                    });
                    result = false;
                }
                else
                {
                    result = true;
                }
            }
            return(result);
        }