CmisSync.Lib.Sync.CmisRepo.SynchronizedFolder.FindModifiedOrDeletedLocalObjects C# (CSharp) Method

FindModifiedOrDeletedLocalObjects() public method

Check for deleted and modified folders and files.
public FindModifiedOrDeletedLocalObjects ( String rootFolder, List &deletedFolders, List &deletedFiles, List &modifiedFiles ) : void
rootFolder String
deletedFolders List
deletedFiles List
modifiedFiles List
return void
            public void FindModifiedOrDeletedLocalObjects(String rootFolder, ref List<string> deletedFolders,
                ref List<string> deletedFiles, ref List<string> modifiedFiles)
            {
                // Crawl through all entries in the database, and record the ones that have changed on the filesystem.
                // Check for deleted folders.
                var folders = database.GetLocalFolders();
                foreach (string folder in folders)
                {
                    if (!Directory.Exists(Utils.PathCombine(rootFolder, folder)))
                    {
                        deletedFolders.Add(folder);
                    }
                }
                var files = database.GetChecksummedFiles();
                foreach (ChecksummedFile file in files)
                {
                    // Check for deleted files.
                    if (File.Exists(Path.Combine(rootFolder, file.RelativePath)))
                    {
                        // Check for modified files.
                        if (file.HasChanged(rootFolder))
                        {
                            modifiedFiles.Add(file.RelativePath);
                        }
                    }
                    else
                    {
                        deletedFiles.Add(file.RelativePath);
                    }
                }

                // Ignore deleted files and folders that are sub-items of a deleted folder.
                // Folder removal is done recursively so removing sub-items would be redundant.

                foreach (string deletedFolder in new List<string>(deletedFolders)) // Copy the list to avoid modifying it while iterating.
                {
                    // Ignore deleted files contained in the deleted folder.
                    deletedFiles.RemoveAll(deletedFile => deletedFile.StartsWith(deletedFolder));

                    // Ignore deleted folders contained in the deleted folder.
                    deletedFolders.RemoveAll(otherDeletedFolder => Utils.FirstFolderContainsSecond(deletedFolder, otherDeletedFolder));
                }
            }