Index: Application/Ringtoets/src/Application.Ringtoets.Migration/RingtoetsProjectMigrator.cs
===================================================================
diff -u -r6e8799128485ac9ff7eb5a8ddac37ce805ba6642 -rd9695a28b560429f52abd1628993c71a66aff722
--- Application/Ringtoets/src/Application.Ringtoets.Migration/RingtoetsProjectMigrator.cs (.../RingtoetsProjectMigrator.cs) (revision 6e8799128485ac9ff7eb5a8ddac37ce805ba6642)
+++ Application/Ringtoets/src/Application.Ringtoets.Migration/RingtoetsProjectMigrator.cs (.../RingtoetsProjectMigrator.cs) (revision d9695a28b560429f52abd1628993c71a66aff722)
@@ -20,7 +20,10 @@
// All rights reserved.
using System;
+using System.Collections.ObjectModel;
using System.IO;
+using System.Linq;
+using System.Text;
using Application.Ringtoets.Migration.Core;
using Application.Ringtoets.Migration.Properties;
using Core.Common.Base.Storage;
@@ -46,6 +49,8 @@
private readonly IInquiryHelper inquiryHelper;
private readonly FileFilterGenerator fileFilter;
+ private readonly string migrationLogPath;
+
///
/// Instantiates a .
///
@@ -57,8 +62,14 @@
throw new ArgumentNullException(nameof(inquiryHelper));
}
+ migrationLogPath = Path.Combine(SettingsHelper.Instance.GetLocalUserTemporaryDirectory(),
+ "RingtoetsMigrationLog.sqlite");
+
this.inquiryHelper = inquiryHelper;
- fileMigrator = new RingtoetsSqLiteDatabaseFileMigrator();
+ fileMigrator = new RingtoetsSqLiteDatabaseFileMigrator
+ {
+ LogPath = migrationLogPath
+ };
fileFilter = new FileFilterGenerator(Resources.RingtoetsProject_FileExtension,
Resources.RingtoetsProject_TypeDescription);
}
@@ -138,13 +149,19 @@
{
try
{
+ if (!CreateInitializedDatabaseLogFile())
+ {
+ return false;
+ }
+
var versionedFile = new RingtoetsVersionedFile(sourceFilePath);
- fileMigrator.LogPath = CreateInitializedDatabaseLogFile();
fileMigrator.Migrate(versionedFile, currentDatabaseVersion, targetLocation);
string message = string.Format(Resources.RingtoetsProjectMigrator_MigrateToTargetLocation_Outdated_projectfile_0_succesfully_updated_to_target_filepath_1_version_2_,
sourceFilePath, targetLocation, currentDatabaseVersion);
log.Info(message);
+ LogMigrationMessages();
+
return true;
}
catch (CriticalMigrationException e)
@@ -154,15 +171,60 @@
log.Error(errorMessage, e);
return false;
}
+ finally
+ {
+ TryCleanupDatabaseLogFile();
+ }
}
- private static string CreateInitializedDatabaseLogFile()
+ private void LogMigrationMessages()
{
- string path = Path.Combine(SettingsHelper.Instance.GetLocalUserTemporaryDirectory(), "RingtoetsMigrationLog.sqlite");
- IOUtils.CreateFileIfNotExists(path);
- return path;
+ using (var migrationLogDatabase = new MigrationLogDatabaseReader(migrationLogPath))
+ {
+ ReadOnlyCollection migrationLogMessages = migrationLogDatabase.GetMigrationLogMessages();
+ if (!migrationLogMessages.Any())
+ {
+ return;
+ }
+
+ var migrationLog = new StringBuilder(Resources.RingtoetsProjectMigrator_Project_file_modified_click_details_for_migration_report);
+ foreach (MigrationLogMessage logMessage in migrationLogMessages)
+ {
+ migrationLog.AppendLine(string.Concat("- ", logMessage.Message));
+ }
+
+ log.Info(migrationLog);
+ }
}
+ private bool CreateInitializedDatabaseLogFile()
+ {
+ try
+ {
+ IOUtils.CreateFileIfNotExists(migrationLogPath);
+ }
+ catch (ArgumentException exception)
+ {
+ log.Error(string.Format(Resources.RingtoetsProjectMigrator_CreateInitializedDatabaseLogFile_Unable_to_create_migration_log_file_0, migrationLogPath),
+ exception);
+ return false;
+ }
+ return true;
+ }
+
+ private void TryCleanupDatabaseLogFile()
+ {
+ try
+ {
+ File.Delete(migrationLogPath);
+ }
+ catch (SystemException exception) when (exception is IOException || exception is UnauthorizedAccessException)
+ {
+ string errorMessage = string.Format(Resources.RingtoetsProjectMigrator_Deleting_migration_log_file_0_failed, migrationLogPath);
+ log.Error(errorMessage, exception);
+ }
+ }
+
private static string GetSuggestedFileName(string sourceFilePath)
{
string fileName = Path.GetFileNameWithoutExtension(sourceFilePath);