Ejemplo n.º 1
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Return true if the backup should be canceled to allow the user to correct the
        /// comment or something because there are problems with the file name. May show various
        /// messages to the user.
        /// </summary>
        /// <remarks>Ideally, showing the message boxes should be done directly from the dialog
        /// box, not here in the Presenter.</remarks>
        /// ------------------------------------------------------------------------------------
        internal bool FileNameProblems(Form messageBoxOwner)
        {
            BackupProjectSettings settings = new BackupProjectSettings(m_cache, m_backupProjectView, FwDirectoryFinder.DefaultBackupDirectory);

            settings.DestinationFolder = m_backupProjectView.DestinationFolder;
            if (settings.AdjustedComment.Trim() != settings.Comment.TrimEnd())
            {
                string displayComment;
                string format = FwCoreDlgs.ksCharactersNotPossible;
                if (File.Exists(settings.ZipFileName))
                {
                    format = FwCoreDlgs.ksCharactersNotPossibleOverwrite;
                }
                displayComment = settings.Comment.Trim();
                if (displayComment.Length > 255)
                {
                    displayComment = displayComment.Substring(0, 255) + "...";
                }


                string msg = string.Format(format, settings.AdjustedComment, displayComment);
                return(MessageBox.Show(messageBoxOwner, msg, FwCoreDlgs.ksCommentWillBeAltered, MessageBoxButtons.OKCancel,
                                       File.Exists(settings.ZipFileName) ? MessageBoxIcon.Warning : MessageBoxIcon.Information)
                       == DialogResult.Cancel);
            }
            if (File.Exists(settings.ZipFileName))
            {
                string msg = string.Format(FwCoreDlgs.ksOverwriteDetails, settings.ZipFileName);
                return(MessageBox.Show(messageBoxOwner, msg, FwCoreDlgs.ksOverwrite, MessageBoxButtons.OKCancel,
                                       MessageBoxIcon.Warning) == DialogResult.Cancel);
            }
            return(false);            // no problems!
        }
Ejemplo n.º 2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Backs up the project.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        internal void BackupProject(IThreadedProgress progressDlg)
        {
            BackupProjectSettings settings = new BackupProjectSettings(m_cache, m_backupProjectView);

            settings.DestinationFolder = m_backupProjectView.DestinationFolder;
            settings.AppAbbrev         = m_appAbbrev;

            ProjectBackupService backupService = new ProjectBackupService(m_cache, settings);

            backupService.BackupProject(progressDlg);
        }
Ejemplo n.º 3
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Backs up the project.
        /// </summary>
        /// <returns>The path to the backup file, or <c>null</c></returns>
        /// ------------------------------------------------------------------------------------
        internal string BackupProject(IThreadedProgress progressDlg)
        {
            BackupProjectSettings settings = new BackupProjectSettings(m_cache, m_backupProjectView, FwDirectoryFinder.DefaultBackupDirectory);

            settings.DestinationFolder = m_backupProjectView.DestinationFolder;
            settings.AppAbbrev         = m_appAbbrev;

            ProjectBackupService backupService = new ProjectBackupService(m_cache, settings);
            string backupFile;

            if (!backupService.BackupProject(progressDlg, out backupFile))
            {
                string msg = string.Format(FwCoreDlgs.ksCouldNotBackupSomeFiles, backupService.FailedFiles.ToString(", ", Path.GetFileName));
                if (MessageBox.Show(msg, FwCoreDlgs.ksWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                {
                    File.Delete(backupFile);
                }
                backupFile = null;
            }
            return(backupFile);
        }
Ejemplo n.º 4
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Backs up the project.
        /// </summary>
        /// <returns>The path to the backup file, or <c>null</c></returns>
        /// ------------------------------------------------------------------------------------
        internal string BackupProject(IThreadedProgress progressDlg)
        {
            var versionInfoProvider = new VersionInfoProvider(Assembly.GetExecutingAssembly(), false);
            var settings            = new BackupProjectSettings(m_cache, m_backupProjectView, FwDirectoryFinder.DefaultBackupDirectory,
                                                                versionInfoProvider.MajorVersion);

            settings.DestinationFolder = m_backupProjectView.DestinationFolder;

            ProjectBackupService backupService = new ProjectBackupService(m_cache, settings);
            string backupFile;

            if (!backupService.BackupProject(progressDlg, out backupFile))
            {
                var msg = string.Format(FwCoreDlgs.ksCouldNotBackupSomeFiles,
                                        string.Join(", ", backupService.FailedFiles.Select(Path.GetFileName)));
                if (MessageBox.Show(msg, FwCoreDlgs.ksWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                {
                    File.Delete(backupFile);
                }
                backupFile = null;
            }
            return(backupFile);
        }
		public void RestoreToName_GetSuggestedNewProjectName()
		{
			// Add three project files, one being a copy of another.
			string proj1 = Path.Combine(Path.Combine(FwDirectoryFinder.ProjectsDirectory, "AAA"), "AAA.fwdata");
			m_fileOs.AddExistingFile(proj1);
			string proj2 = Path.Combine(Path.Combine(FwDirectoryFinder.ProjectsDirectory, "BBB"), "BBB.fwdata");
			m_fileOs.AddExistingFile(proj2);
			string proj3 = Path.Combine(Path.Combine(FwDirectoryFinder.ProjectsDirectory, "AAA-01"), "AAA-01.fwdata");
			m_fileOs.AddExistingFile(proj3);

			BackupProjectSettings backupSettings = new BackupProjectSettings(Cache, null, FwDirectoryFinder.DefaultBackupDirectory);
			backupSettings.ProjectName = "AAA";
			string backupFileName1 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName1);
			using (RestoreProjectDlg dlg1 = new RestoreProjectDlg("AAA", "Test", null))
			{
			dlg1.Settings.ProjectName = "AAA";
			RestoreProjectPresenter presenter1 = new RestoreProjectPresenter(dlg1, "AAA");
			string suggestion1 = presenter1.GetSuggestedNewProjectName();
			Assert.AreEqual("AAA-02", suggestion1);
			}

			backupSettings.ProjectName = "BBB";
			string backupFileName2 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName2);
			using (RestoreProjectDlg dlg2 = new RestoreProjectDlg("BBB", "Test", null))
			{
			dlg2.Settings.ProjectName = "BBB";
			RestoreProjectPresenter presenter2 = new RestoreProjectPresenter(dlg2, "BBB");
			string suggestion2 = presenter2.GetSuggestedNewProjectName();
			Assert.AreEqual("BBB-01", suggestion2);
			}

			backupSettings.ProjectName = "CCC";
			string backupFileName3 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName3);
			using (RestoreProjectDlg dlg3 = new RestoreProjectDlg("CCC", "Test", null))
			{
			dlg3.Settings.ProjectName = "CCC";
			RestoreProjectPresenter presenter3 = new RestoreProjectPresenter(dlg3, "CCC");
			string suggestion3 = presenter3.GetSuggestedNewProjectName();
			Assert.AreEqual("CCC-01", suggestion3);
		}
	}
		public void DefaultBackupFile_BackupsForOtherProjectsButNotCurrent()
		{
			BackupProjectSettings backupSettings = new BackupProjectSettings(Cache, null, FwDirectoryFinder.DefaultBackupDirectory);
			backupSettings.ProjectName = "AAA";
			string backupFileName1 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName1);
			backupSettings.ProjectName = "ZZZ";
			string backupFileName2 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName2);
			// Add another backup for "AAA" that appears to be older
			backupSettings.ProjectName = "AAA";
			backupSettings.BackupTime = backupSettings.BackupTime.AddHours(-3);
			string backupFileName3 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName3);
			RestoreProjectPresenter presenter = new RestoreProjectPresenter(null, "Current Project");
			Assert.AreEqual("AAA", presenter.DefaultProjectName);
		}
		public void DefaultBackupFile_BackupForCurrentProjectExists()
		{
			BackupProjectSettings backupSettings = new BackupProjectSettings(Cache, null, FwDirectoryFinder.DefaultBackupDirectory);
			string backupFileName1 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName1);
			// Force the second backup to appear to be older
			backupSettings.BackupTime = backupSettings.BackupTime.AddHours(-3);
			string backupFileName2 = backupSettings.ZipFileName;
			m_fileOs.AddExistingFile(backupFileName2);
			RestoreProjectPresenter presenter = new RestoreProjectPresenter(null, string.Empty);
			Assert.AreEqual(backupSettings.ProjectName, presenter.DefaultProjectName);
		}
Ejemplo n.º 8
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Backs up the project that is about to be restored.
		/// </summary>
		/// <param name="restoreSettings">The restore settings.</param>
		/// <param name="existingCache">The existing cache for the project to backup, or null
		/// to create a new cache for the project defined in the restore settings.</param>
		/// <param name="dialogOwner">A form that can be used as an owner for progress dialog/
		/// message box.</param>
		/// <returns><c>true</c> to indicate that it is okay to proceed with the restore;
		/// <c>false</c> to indicate that the backup failed and the user wasn't comfortable
		/// with just blindly going ahead with a restore that could potentially leave him in
		/// tears.</returns>
		/// ------------------------------------------------------------------------------------
		private static bool BackupProjectForRestore(FwRestoreProjectSettings restoreSettings,
			FdoCache existingCache, Form dialogOwner)
		{
			using (var progressDlg = new ProgressDialogWithTask(dialogOwner))
			{
				FdoCache cache = existingCache ?? FdoCache.CreateCacheFromExistingData(
					new ProjectId(restoreSettings.Settings.FullProjectPath, null),
					s_sWsUser, s_ui, FwDirectoryFinder.FdoDirectories, CreateFdoSettings(), progressDlg);

				try
				{
					var backupSettings = new BackupProjectSettings(cache, restoreSettings.Settings, FwDirectoryFinder.DefaultBackupDirectory);
					backupSettings.DestinationFolder = FwDirectoryFinder.DefaultBackupDirectory;
					backupSettings.AppAbbrev = restoreSettings.FwAppCommandLineAbbrev;

					var backupService = new ProjectBackupService(cache, backupSettings);
					string backupFile;
					if (!backupService.BackupProject(progressDlg, out backupFile))
					{
						string msg = string.Format(FwCoreDlgs.FwCoreDlgs.ksCouldNotBackupSomeFiles, backupService.FailedFiles.ToString(", ", Path.GetFileName));
						if (MessageBox.Show(msg, FwCoreDlgs.FwCoreDlgs.ksWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
							File.Delete(backupFile);
				}
				}
				catch (FwBackupException e)
				{
					if (MessageBox.Show(dialogOwner,
						string.Format(FwCoreDlgs.FwCoreDlgs.ksBackupErrorCreatingZipfile, e.ProjectName, e.Message) +
						Environment.NewLine + Environment.NewLine + Properties.Resources.ksBackupErrorDuringRestore,
						FwCoreDlgs.FwCoreDlgs.ksBackupErrorCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) ==
						DialogResult.No)
					{
						return false;
					}
				}
				finally
				{
					if (existingCache == null) // We created a new cache so we need to dispose of it
						cache.Dispose();
				}
			}
			return true;
		}