Example #1
0
 private void RestoreUnLoadedItems(List<IItemData> childMailItems, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
 {
     foreach (var item in childMailItems)
     {
         dealItemStack.Push(item);
         RestoreItemToDestination(item.ItemId, item.DisplayName, restoreDestination, dealItemStack);
         dealItemStack.Pop();
     }
 }
Example #2
0
        private void RestoreUnLoadedMailbox(List<IMailboxData> mailboxes, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
        {
            foreach (var mailbox in mailboxes)
            {
                dealItemStack.Push(mailbox);
                RestoreMailboxToDestination(mailbox.DisplayName, restoreDestination, dealItemStack);

                var childFolders = DataAccess.GetAllChildFolder(mailbox.RootFolderId);
                RestoreUnLoadedFolders(childFolders, restoreDestination, dealItemStack);
                dealItemStack.Pop();
            }
        }
Example #3
0
 private void RestoreUnloadedChildren(LoadedTreeItem item,
     List<IMailboxData> childMailboxes,
     List<IFolderData> childFolders,
     List<IItemData> childMailItems,
     IRestoreDestinationEx restoreDestination,
     Stack<IItemBase> dealItemStack)
 {
     switch (item.ItemKind)
     {
         case ItemKind.Organization:
             RestoreUnLoadedMailbox(childMailboxes, restoreDestination, dealItemStack);
             break;
         case ItemKind.Mailbox:
             RestoreUnLoadedFolders(childFolders, restoreDestination, dealItemStack);
             break;
         case ItemKind.Folder:
             RestoreUnLoadedFolders(childFolders, restoreDestination, dealItemStack);
             RestoreUnLoadedItems(childMailItems, restoreDestination, dealItemStack);
             break;
         case ItemKind.Item:
             throw new ArgumentException();
         default:
             throw new NotSupportedException();
     }
 }
Example #4
0
        private void RestoreUnLoadedFolders(List<IFolderData> folders, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
        {
            foreach (var folder in folders)
            {
                dealItemStack.Push(folder);
                RestoreFolderToDestination(((IItemBase)folder).DisplayName, restoreDestination, dealItemStack);

                var childFolders = DataAccess.GetAllChildFolder(folder);
                RestoreUnLoadedFolders(childFolders, restoreDestination, dealItemStack);

                var childItems = DataAccess.GetAllChildItems(folder);
                RestoreUnLoadedItems(childItems, restoreDestination, dealItemStack);
                dealItemStack.Pop();
            }
        }
Example #5
0
 private void RestoreOrganizationToDestination(string organization, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
 {
     restoreDestination.DealOrganization(organization, dealItemStack);
 }
Example #6
0
 private void RestoreMailboxToDestination(string displayName, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
 {
     restoreDestination.DealMailbox(displayName, dealItemStack);
 }
Example #7
0
        private void RestoreItemToDestination(string id, string displayName, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
        {
            IItemData itemDetails = null;
            if (restoreDestination.ExportType == ExportType.Msg)
            {
                itemDetails = DataAccess.GetItemContent(id, displayName, ExportType.TransferBin);

            }
            else
                itemDetails = DataAccess.GetItemContent(id, displayName, restoreDestination.ExportType);
            restoreDestination.DealItem(id, displayName, itemDetails.Data as byte[], dealItemStack);
        }
Example #8
0
 private void RestoreFolderToDestination(string displayName, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
 {
     restoreDestination.DealFolder(displayName, dealItemStack);
 }
Example #9
0
        public void RestoreSelectItem(LoadedTreeItem item, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack)
        {
            bool isEnd = false;
            bool isLoadUnloadChildren = false;

            CheckLoadedTreeItem(item, out isLoadUnloadChildren, out isEnd);
            if (isEnd)
                return;

            List<IMailboxData> childMailboxes = null;
            List<IFolderData> childFolders = null;
            List<IItemData> childMailItems = null;
            if (isLoadUnloadChildren)
            {
                GetUnloadedChild(item, out childMailboxes, out childFolders, out childMailItems);
            }

            dealItemStack.Push(item);
            // deal self.
            if (item.Status == (byte)SelectedItemStatus.Selected)
            {
                switch (item.ItemKind)
                {
                    case ItemKind.Organization:
                        RestoreOrganizationToDestination(CurrentRestoreCatalogJob.Organization, restoreDestination, dealItemStack);
                        break;
                    case ItemKind.Mailbox:
                        RestoreMailboxToDestination(item.DisplayName, restoreDestination, dealItemStack);
                        break;
                    case ItemKind.Folder:
                        RestoreFolderToDestination(item.DisplayName, restoreDestination, dealItemStack);
                        break;
                    case ItemKind.Item:
                        RestoreItemToDestination(item.Id, item.DisplayName, restoreDestination, dealItemStack);
                        break;
                }
            }

            // deal loaded children.
            if (item.LoadedChildren != null)
            {
                foreach (var loadChildItem in item.LoadedChildren)
                    RestoreSelectItem(loadChildItem, restoreDestination, dealItemStack);
            }

            // deal unloaded children.
            if (isLoadUnloadChildren)
                RestoreUnloadedChildren(item, childMailboxes, childFolders, childMailItems, restoreDestination, dealItemStack);

            dealItemStack.Pop();
        }