CmisSync.Lib.Sync.CmisRepo.SynchronizedFolder.ApplyDeletedFolders C# (CSharp) Метод

ApplyDeletedFolders() публичный Метод

Apply: Deleted folders.
public ApplyDeletedFolders ( List &deletedFolders ) : bool
deletedFolders List
Результат bool
            public bool ApplyDeletedFolders(ref List<string> deletedFolders)
            {
                bool success = true;
                foreach (string deletedFolder in deletedFolders)
                {
                    SyncItem deletedItem = SyncItemFactory.CreateFromLocalPath(deletedFolder, true, repoInfo, database);
                    try
                    {
                        var deletedIFolder = session.GetObjectByPath(deletedItem.RemotePath) as IFolder;

                        // Check whether the remote folder has changes we haven't gotten yet (conflict)
                        var changed = HasFolderChanged(deletedIFolder);

                        // Delete the remote folder if unchanged, otherwise let full sync handle the conflict.
                        var remotePath = deletedItem.RemotePath;
                        var localPath = deletedItem.LocalPath;
                        var remoteFolders = new List<string>();

                        if (changed)
                        {

                            // TODO: Internationalization
                            string message = String.Format("Restoring folder {0} because its sub-items have been modified on the server. You can delete it again.", localPath);
                            Utils.NotifyUser(message);

                            // TODO: Handle folder conflict
                            // Delete local database entry.
                            database.RemoveFolder(SyncItemFactory.CreateFromLocalPath(deletedFolder, true, repoInfo, database));

                            DownloadDirectory(deletedIFolder, remotePath, localPath);

                            return false;
                        }
                        else
                        {
                            DeleteRemoteFolder(deletedIFolder, deletedItem, Utils.UpperFolderLocal(deletedItem.LocalPath));
                        }
                    }
                    catch (Exception e)
                    {
                        if (e is ArgumentNullException || e is CmisObjectNotFoundException)
                        {
                            // Typical error when the document does not exist anymore on the server
                            // TODO Make DotCMIS generate a more precise exception.

                            Logger.Error("The folder has probably been deleted on the server already: " + deletedFolder, e);

                            // Delete local database entry.
                            database.RemoveFolder(SyncItemFactory.CreateFromLocalPath(deletedFolder, true, repoInfo, database));

                            // Note: This is not a failure per-se, so we don't need to modify the "success" variable.
                        }
                        else
                        {
                            Logger.Error("Error applying local folder deletion to the server: " + deletedFolder, e);
                            success = false;
                        }
                    }
                }
                return success;
            }