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

CheckLocalFolder() private method

Check a particular local folder (not recursive). See whether it has been deleted locally or not.
private CheckLocalFolder ( string localSubFolder, IFolder remoteRoot, IList remoteFolders ) : void
localSubFolder string
remoteRoot IFolder
remoteFolders IList
return void
            private void CheckLocalFolder(string localSubFolder, IFolder remoteRoot, IList<string> remoteFolders)
            {
                SleepWhileSuspended();
                try
                {
                    if (Utils.IsSymlink(new DirectoryInfo(localSubFolder)))
                    {
                        Logger.Info("Skipping symbolic link folder: " + localSubFolder);
                        return;
                    }

                    string folderName = Path.GetFileName(localSubFolder);

                    if (Utils.WorthSyncing(Path.GetDirectoryName(localSubFolder), folderName, repoInfo))
                    {
                    var syncFolderItem = database.GetFolderSyncItemFromLocalPath(localSubFolder);
                    if (null == syncFolderItem)
                    {
                            // The local item is not in database. It has not been uploaded yet.
                        syncFolderItem = SyncItemFactory.CreateFromLocalPath(localSubFolder, true, repoInfo, database);
                    }

                        if (remoteFolders.Contains(syncFolderItem.RemoteLeafname))
                        {
                            // The same folder exists locally and remotely.
                            // Are they synchronized, or were they just created (or moved) at the same time?
                            if (database.ContainsFolder(syncFolderItem))
                            {
                                // Check modification dates of local folder and remote folder.
                                // TODO
                            }
                            else
                    {
                                // The folder just appeared both on the local and remote sides.
                                // Rename local folder then download remote folder.

                                IFolder remoteFolder = (IFolder)session.GetObjectByPath(syncFolderItem.RemotePath);

                                var path = syncFolderItem.LocalPath;
                                var newPath = Utils.CreateConflictFoldername(path, repoInfo.User);

                                Directory.Move(path, newPath);

                                // Delete file from database.
                                database.RemoveFile(syncFolderItem);

                                repo.OnConflictResolved();

                                // Download folder from server.
                                DownloadDirectory(remoteFolder, syncFolderItem.RemotePath, path);
                            }
                        }
                        else
                        {
                            // This local folder is not on the CMIS server now, so
                            // check whether it used to exist on server or not.
                            if (database.ContainsFolder(syncFolderItem))
                            {
                                activityListener.ActivityStarted();
                                RemoveFolderLocally(localSubFolder);
                                activityListener.ActivityStopped();
                            }
                            else
                            {
                                    // New local folder, upload recursively.
                                    activityListener.ActivityStarted();
                                UploadFolderRecursively(remoteRoot, localSubFolder);
                                    activityListener.ActivityStopped();
                                }
                            }
                        }

                }
                catch (Exception e)
                {
                    ProcessRecoverableException("Could not crawl sync local folder: " + localSubFolder, e);
                }
            }
        }