示例#1
0
        public void Backup(string projectFile, List <SyncItem> syncItems, Constants.SyncOperation syncOperation)
        {
            DateTime timeStamp        = DateTime.Now;
            string   projectDirectory = Path.GetDirectoryName(projectFile);
            string   backupSubFolder  = ConfigSettings.ProjectBackupFolder;
            string   targetDirectory  = GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.TargetFile);
            string   workingDirectory = GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.WorkingFile);

            foreach (SyncItem item in syncItems)
            {
                if (File.Exists(item.TargetFile))
                {
                    if (!Directory.Exists(targetDirectory))
                    {
                        Directory.CreateDirectory(targetDirectory);
                    }

                    File.Copy(item.TargetFile, Path.Combine(targetDirectory, item.TargetTitle));
                }
                if (File.Exists(item.WorkingFile))
                {
                    if (!Directory.Exists(workingDirectory))
                    {
                        Directory.CreateDirectory(workingDirectory);
                    }
                    File.Copy(item.WorkingFile, Path.Combine(workingDirectory, item.WorkingTitle));
                }
            }

            if (syncOperation == Constants.SyncOperation.ProjectEdit)
            {
                File.Copy(projectFile, Path.Combine(GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.ProjectFile), Path.GetFileName(projectFile)));
            }
        }
示例#2
0
        private string GenerateDirectoryPath(DateTime timeStamp, string projectDirectory, string backupSubFolder, Constants.SyncOperation syncOperation, Constants.FileCategory fileSource)
        {
            string directory = string.Empty;

            if (syncOperation == Constants.SyncOperation.SyncLeftToRight)
            {
                if (fileSource == Constants.FileCategory.TargetFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR", "Target");
                }
                else if (fileSource == Constants.FileCategory.WorkingFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR", "Working");
                }
                else
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR");
                }
            }
            else if (syncOperation == Constants.SyncOperation.SyncRightToLeft)
            {
                if (fileSource == Constants.FileCategory.TargetFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL", "Target");
                }
                else if (fileSource == Constants.FileCategory.WorkingFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL", "Working");
                }
                else
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL");
                }
            }
            else if (syncOperation == Constants.SyncOperation.ProjectEdit)
            {
                if (fileSource == Constants.FileCategory.TargetFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit", "Target");
                }
                else if (fileSource == Constants.FileCategory.WorkingFile)
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit", "Working");
                }
                else
                {
                    directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit");
                }
            }
            return(directory);
        }