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(); } }
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(); } }
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(); } }
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(); } }
private void RestoreOrganizationToDestination(string organization, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack) { restoreDestination.DealOrganization(organization, dealItemStack); }
private void RestoreMailboxToDestination(string displayName, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack) { restoreDestination.DealMailbox(displayName, dealItemStack); }
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); }
private void RestoreFolderToDestination(string displayName, IRestoreDestinationEx restoreDestination, Stack<IItemBase> dealItemStack) { restoreDestination.DealFolder(displayName, dealItemStack); }
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(); }