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

RecursiveFolderCopy() приватный Метод

Download all content from a CMIS folder.
private RecursiveFolderCopy ( IFolder remoteFolder, string remotePath, string localFolder ) : void
remoteFolder IFolder The new folder to download. Example: /sites/project/newfolder
remotePath string The new folder to download. Example: /sites/project/newfolder
localFolder string The new folder that will be filled by this operation. Warning: It must exist already! Example: C:\CmisSync\project\newfolder
Результат void
            private void RecursiveFolderCopy(IFolder remoteFolder, string remotePath, string localFolder)
            {
                SleepWhileSuspended();

                IItemEnumerable<ICmisObject> children;
                try
                {
                    children = remoteFolder.GetChildren();
                }
                catch (CmisBaseException e)
                {
                    ProcessRecoverableException("Could not get children objects: " + remoteFolder.Path, e);
                    return;
                }

                // List all children.
                foreach (ICmisObject cmisObject in children)
                {
                    string remoteSubPath = remotePath + CmisUtils.CMIS_FILE_SEPARATOR + cmisObject.Name;
                    if (cmisObject is DotCMIS.Client.Impl.Folder)
                    {
                        // Case of a folder: Download recursively.

                        IFolder remoteSubFolder = (IFolder)cmisObject;
                        var localSubFolderItem = database.GetFolderSyncItemFromRemotePath(remoteSubFolder.Path);

                        if (null == localSubFolderItem)
                        {
                            localSubFolderItem = SyncItemFactory.CreateFromRemoteFolder(remoteSubFolder.Path, repoInfo, database);
                        }

                        if (Utils.WorthSyncing(localFolder, PathRepresentationConverter.RemoteToLocal(remoteSubFolder.Name), repoInfo))
                        {
                            DownloadDirectory(remoteSubFolder, remoteSubPath, localSubFolderItem.LocalPath);
                        }
                    }
                    else if (cmisObject is DotCMIS.Client.Impl.Document)
                    {
                        // Case of a document: Download it.

                        Document document = (Document)cmisObject;
                        if (Utils.WorthSyncing(localFolder, repoInfo.CmisProfile.localFilename(document), repoInfo))
                        {
                            DownloadFile(document, remoteSubPath, localFolder);
                        }
                    }
                    else
                    {
                        Logger.Debug("Unknown object type: " + cmisObject.ObjectType.DisplayName
                            + " for object " + remoteFolder + "/" + cmisObject.Name);
                    }
                }
            }