// Token: 0x06000525 RID: 1317 RVA: 0x00026EB8 File Offset: 0x000250B8
 private void AssignTagPropsToFolder(FolderTuple source, FolderTupleCrossServerArchive target, Folder targetFolder, bool update)
 {
     for (FolderHelper.DataColumnIndex dataColumnIndex = FolderHelper.DataColumnIndex.startOfTagPropsIndex; dataColumnIndex <= FolderHelper.DataColumnIndex.containerClassIndex; dataColumnIndex++)
     {
         PropertyDefinition         key = FolderHelper.DataColumns[(int)dataColumnIndex];
         ExtendedPropertyDefinition extendedPropertyDefinition = this.EwsStorePropertyMapping[key];
         object obj  = source.FolderProps[key];
         object obj2 = target.FolderProps[key];
         if (obj != null && !(obj is PropertyError))
         {
             string text = obj as string;
             if (text == null || !string.IsNullOrEmpty(text))
             {
                 targetFolder.SetExtendedProperty(extendedPropertyDefinition, obj);
             }
         }
         else if (obj2 != null)
         {
             targetFolder.RemoveExtendedProperty(extendedPropertyDefinition);
         }
     }
     if (update)
     {
         this.EwsDataProvider.UpdateFolder(targetFolder);
         RemoteArchiveProcessor.Tracer.TraceDebug(0L, "AssignedTagPropsToFolder.");
     }
 }
        // Token: 0x06000522 RID: 1314 RVA: 0x00026C80 File Offset: 0x00024E80
        public FolderTuple CreateAndUpdateFolderInArchive(FolderTuple parentInArchive, FolderTuple sourceInPrimary)
        {
            FolderTupleCrossServerArchive folderTupleCrossServerArchive = (FolderTupleCrossServerArchive)parentInArchive;
            Folder folder = new Folder(this.EwsDataProvider.Service);

            folder.DisplayName = sourceInPrimary.DisplayName;
            FolderTupleCrossServerArchive folderTupleCrossServerArchive2 = new FolderTupleCrossServerArchive(folder, folder.Id, folderTupleCrossServerArchive.EwsFolderId, folder.DisplayName, this.ConvertToFolderProps(null));

            this.AssignTagPropsToFolder(sourceInPrimary, folderTupleCrossServerArchive2, folderTupleCrossServerArchive2.Folder, false);
            this.EwsDataProvider.SaveFolder(folder, folderTupleCrossServerArchive.EwsFolderId);
            folderTupleCrossServerArchive2.EwsFolderId = folder.Id;
            return(folderTupleCrossServerArchive2);
        }
        // Token: 0x06000520 RID: 1312 RVA: 0x00026B3C File Offset: 0x00024D3C
        public Dictionary <StoreObjectId, FolderTuple> GetFolderHierarchyInArchive()
        {
            Dictionary <StoreObjectId, FolderTuple> dictionary = new Dictionary <StoreObjectId, FolderTuple>();

            RemoteArchiveProcessor.Tracer.TraceDebug <IExchangePrincipal, bool>((long)this.primaryMailboxSession.GetHashCode(), "{0}: QueryFolderHierarchy: Archive mailbox: {1}.", this.primaryMailboxSession.MailboxOwner, this.primaryMailboxSession.MailboxOwner.MailboxInfo.IsArchive);
            Folder folder = this.EwsDataProvider.GetFolder(21, this.FolderSyncProperties);
            FolderTupleCrossServerArchive folderTupleCrossServerArchive = new FolderTupleCrossServerArchive(folder, folder.Id, folder.ParentFolderId, folder.DisplayName, this.ConvertToFolderProps(folder.ExtendedProperties), true);

            dictionary.Add(folderTupleCrossServerArchive.FolderId, folderTupleCrossServerArchive);
            IEnumerable <Folder> folderHierarchy = this.EwsDataProvider.GetFolderHierarchy(100, this.FolderSyncProperties, 21);

            foreach (Folder folder2 in folderHierarchy)
            {
                FolderTupleCrossServerArchive folderTupleCrossServerArchive2 = new FolderTupleCrossServerArchive(folder2, folder2.Id, folder2.ParentFolderId, folder2.DisplayName, this.ConvertToFolderProps(folder2.ExtendedProperties));
                dictionary.Add(folderTupleCrossServerArchive2.FolderId, folderTupleCrossServerArchive2);
            }
            return(dictionary);
        }
 // Token: 0x0600051E RID: 1310 RVA: 0x000269B4 File Offset: 0x00024BB4
 public void MoveToArchive(TagExpirationExecutor.ItemSet itemSet, ElcSubAssistant assistant, FolderArchiver folderArchiver, int totalFailuresSoFar, ref List <Exception> allExceptionsSoFar, out List <string> foldersWithErrors, out int newMoveErrorsTotal)
 {
     foldersWithErrors  = new List <string>();
     newMoveErrorsTotal = 0;
     using (Folder folder = Folder.Bind(this.primaryMailboxSession, itemSet.FolderId))
     {
         FolderTupleCrossServerArchive folderTupleCrossServerArchive = folderArchiver.GetArchiveFolderTuple(itemSet.FolderId) as FolderTupleCrossServerArchive;
         if (folderTupleCrossServerArchive != null)
         {
             RemoteArchiveProcessor.Tracer.TraceDebug <RemoteArchiveProcessor, string, string>((long)this.GetHashCode(), "{0}: Was able to open target folder {1} in the archive, corresponding to source folder {2}. Will proceed to move in batches.", this, folderTupleCrossServerArchive.DisplayName, folder.DisplayName);
             this.MoveItemsInBatches(itemSet.Items, folder, folderTupleCrossServerArchive.Folder, assistant, ExpirationExecutor.Action.MoveToArchive, totalFailuresSoFar, ref allExceptionsSoFar, out foldersWithErrors, out newMoveErrorsTotal);
         }
         else
         {
             RemoteArchiveProcessor.Tracer.TraceWarning <RemoteArchiveProcessor, string>((long)this.GetHashCode(), "{0}: Unable to open target folder in the archive corresponding to source folder {1}. Will not move anything to it (obviously).", this, folder.DisplayName);
         }
     }
 }
        // Token: 0x06000521 RID: 1313 RVA: 0x00026C5C File Offset: 0x00024E5C
        public void UpdatePropertiesOnFolderInArchive(FolderTuple source, FolderTuple targetInArchive)
        {
            FolderTupleCrossServerArchive folderTupleCrossServerArchive = targetInArchive as FolderTupleCrossServerArchive;

            this.AssignTagPropsToFolder(source, folderTupleCrossServerArchive, folderTupleCrossServerArchive.Folder, true);
        }