Esempio n. 1
0
 protected void CopyFolder(FolderMapping fm)
 {
     base.RefreshRequestIfNeeded();
     base.TimeTracker.CurrentState = RequestState.CopyingMessages;
     base.TestIntegration.Barrier("PostponeWriteMessages", new Action(base.RefreshRequestIfNeeded));
     base.CheckServersHealth();
     ExecutionContext.Create(new DataContext[]
     {
         new FolderRecWrapperDataContext(fm)
     }).Execute(delegate
     {
         if (this.CachedRequestJob.IsPublicFolderMailboxRestore && fm.TargetFolder == null)
         {
             this.Warnings.Add(MrsStrings.FolderIsMissing(HexConverter.ByteArrayToHexString(fm.EntryId)));
             return;
         }
         using (ISourceFolder folder = this.MailboxMerger.SourceMailbox.GetFolder(fm.EntryId))
         {
             if (folder == null)
             {
                 this.Report.Append(MrsStrings.ReportSourceFolderDeleted(fm.FullFolderName, TraceUtils.DumpEntryId(fm.EntryId)));
             }
             else
             {
                 using (IDestinationFolder folder2 = this.MailboxMerger.DestMailbox.GetFolder(fm.TargetFolder.EntryId))
                 {
                     if (folder2 == null)
                     {
                         this.Report.Append(MrsStrings.ReportTargetFolderDeleted(fm.TargetFolder.FullFolderName, TraceUtils.DumpEntryId(fm.TargetFolder.EntryId), fm.FullFolderName));
                     }
                     else
                     {
                         this.Report.Append(MrsStrings.ReportMergingFolder(fm.FullFolderName, fm.TargetFolder.FullFolderName));
                         this.CopyFolderData(fm, folder, folder2);
                         folder2.Flush();
                     }
                 }
             }
         }
     });
     base.SaveState(SaveStateFlags.Lazy, null);
 }
Esempio n. 2
0
        private void MarkFolderByPath(string folderRoot, string folderPath, bool isIncluded)
        {
            FolderMappingFlags folderMappingFlags;
            FolderMapping      folderMapping = this.FindFolderByPath(folderRoot, folderPath, false, out folderMappingFlags);

            if (folderMapping == null)
            {
                this.Warnings.Add(MrsStrings.FolderIsMissing(folderPath));
                return;
            }
            if ((folderMapping.Flags & FolderMappingFlags.InclusionFlags) != FolderMappingFlags.None && (folderMapping.Flags & FolderMappingFlags.Inherit) == folderMappingFlags)
            {
                if (isIncluded != ((folderMapping.Flags & FolderMappingFlags.Include) != FolderMappingFlags.None))
                {
                    this.warnings.Add(MrsStrings.FolderReferencedAsBothIncludedAndExcluded(folderPath));
                }
                else
                {
                    this.warnings.Add(MrsStrings.FolderReferencedMoreThanOnce(folderPath));
                }
            }
            folderMapping.Flags |= ((isIncluded ? FolderMappingFlags.Include : FolderMappingFlags.Exclude) | folderMappingFlags);
        }
Esempio n. 3
0
 public FolderIsMissingPermanentException(string folderPath, Exception innerException) : base(MrsStrings.FolderIsMissing(folderPath), innerException)
 {
     this.folderPath = folderPath;
 }