Exemplo n.º 1
0
        private void copyWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;

            this.CopyInProgress = true;
            worker.ReportProgress(0);

            var directories = Directory.GetDirectories(source, "*", System.IO.SearchOption.AllDirectories);
            var files       = Directory.GetFiles(source, "*.*", System.IO.SearchOption.AllDirectories);
            var total       = directories.Length + files.Length;
            int complete    = 0;

            foreach (string dir in directories)
            {
                if (!ExcludedDirectories.Contains(dir))
                {
                    Directory.CreateDirectory(destination + dir.Substring(source.Length));
                }
                complete++;
                worker.ReportProgress(CalculateProgress(total, complete));
            }

            foreach (string file_name in files)
            {
                if (!File.Exists(Path.Combine(destination + file_name.Substring(source.Length))))
                {
                    File.Copy(file_name, destination + file_name.Substring(source.Length));
                }
                complete++;
                worker.ReportProgress(CalculateProgress(total, complete));
            }
        }
Exemplo n.º 2
0
        private void ProcessDestinationDirectoryForPossibleDelete(DirectoryInfo di)
        {
            //Get the source directory
            string srcDirectory = SourceDirectory + di.FullName.Substring(DestinationDirectory.Length);
            var    srcDir       = new DirectoryInfo(srcDirectory);

            try
            {
                //Delete the destination directory if it doesn't exist at the source
                // or if the directory is in the ignore list but is present at the destination
                if (!Directory.Exists(srcDirectory) ||
                    ExcludedDirectories.Contains(srcDirectory))
                {
                    try
                    {
                        ActionQueue.Enqueue(new DeleteFolderAction(di.FullName));
                        OnActionAddedToQueue(new EventArgs());
                    }
                    catch (Exception ex)
                    {
                        _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message);
                    }
                }
                else
                {
                    foreach (FileInfo fi in di.GetFiles("*.*", SearchOption.TopDirectoryOnly))
                    {
                        string srcPath = srcDir + "\\" + fi.Name;
                        try
                        {
                            Debug.WriteLine(di.FullName);

                            //Delete the destination file if it doesn't exist at the source
                            if (!File.Exists(srcPath))
                            {
                                ActionQueue.Enqueue(new DeleteFileAction(fi.FullName));
                                OnActionAddedToQueue(new EventArgs());
                            }
                        }
                        catch (Exception ex)
                        {
                            _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message);
            }
        }
Exemplo n.º 3
0
        static void Rename(DirectoryInfo root, string projectName)
        {
            var directories = root.GetDirectories();

            RenameFiles(root, projectName);
            foreach (DirectoryInfo dir in directories)
            {
                // Recurse into sub-directories if not excluded
                if (!ExcludedDirectories.Contains(dir.Name))
                {
                    Rename(dir, projectName);
                }
            }
            RenameFolders(root, projectName);
        }
Exemplo n.º 4
0
        static void RenameFolders(DirectoryInfo root, string projectName)
        {
            var directories = root.GetDirectories();

            foreach (DirectoryInfo dir in directories)
            {
                // Rename if matches and is not exluced
                if (dir.Name.Contains(TemplateName) && !ExcludedDirectories.Contains(dir.Name))
                {
                    var path    = dir.Parent.FullName;
                    var newName = Path.Combine(path, dir.Name.Replace(TemplateName, projectName));
                    Console.WriteLine("Renaming " + newName);
                    try
                    {
                        Directory.Move(dir.FullName, newName);
                    } catch (Exception ex)
                    {
                        Console.WriteLine("FAILED: Could not rename " + dir.FullName + ". "
                                          + ex.Message);
                    }
                }
            }
        }
Exemplo n.º 5
0
        private void BuildActionQueue()
        {
            _log.Info("Building Action Queue");
            ProcessingStatus = BackupProcessingStatus.BuildingActionQueue;
            //Clear the action Queues
            ActionQueue.Clear();
            SkipFileActionQueue.Clear();
            DeleteActionStack.Clear();

            if (_cancelToken.IsCancellationRequested)
            {
                _log.Info("Building Action Queue Cancelled");
                ProcessingStatus = BackupProcessingStatus.Cancelled;
                return;
            }

            if (CheckDriveExists(SourceDirectory.Substring(0, 1)) &&
                CheckSourceRootExists() &&
                CheckDriveExists(DestinationDirectory.Substring(0, 1)))
            {
                if (BackupMode == BackupSetMode.Backup && RemoveDeleted)
                {
                    List <DirectoryInfo> destDirs = IOHelper.GetDirectoriesPostOrder(DestinationDirectory);
                    if (destDirs != null)
                    {
                        foreach (DirectoryInfo di in destDirs)
                        {
                            if (_cancelToken.IsCancellationRequested)
                            {
                                ProcessingStatus = BackupProcessingStatus.Cancelled;
                                return;
                            }
                            ProcessDestinationDirectoryForPossibleDelete(di);
                        }
                    }
                }

                var dirs = IOHelper.GetDirectories(SourceDirectory);
                if (dirs != null)
                {
                    foreach (DirectoryInfo di in dirs)
                    {
                        //Check if the directory should be excluded
                        if (ExcludedDirectories == null || !ExcludedDirectories.Contains(di.FullName))
                        {
                            if (_cancelToken.IsCancellationRequested)
                            {
                                ProcessingStatus = BackupProcessingStatus.Cancelled;
                                return;
                            }
                            ProcessDirectoryForActions(di);
                        }
                        else
                        {
                            IOHelper.GetFiles(di.FullName)
                            .ForEach(fi => SkipFileActionQueue.Enqueue(new SkipFileAction(fi.FullName)));
                        }
                    }
                }
            }
            _log.Info("Finished Building Action Queue");
            ProcessingStatus = BackupProcessingStatus.ActionQueueBuilt;
        }