Config: add MigrateAppConfig
This commit is contained in:
parent
e2d67ab6d7
commit
7a6537d529
@ -1,4 +1,5 @@
|
|||||||
Imports DigitalData.Modules.Base
|
Imports System.IO
|
||||||
|
Imports DigitalData.Modules.Base
|
||||||
Imports DigitalData.Modules.Logging
|
Imports DigitalData.Modules.Logging
|
||||||
|
|
||||||
Public Class ConfigUtils
|
Public Class ConfigUtils
|
||||||
@ -6,6 +7,7 @@ Public Class ConfigUtils
|
|||||||
Private _File As FilesystemEx
|
Private _File As FilesystemEx
|
||||||
|
|
||||||
Private Const MIGRATE_DIRECTORY As String = "Migrate"
|
Private Const MIGRATE_DIRECTORY As String = "Migrate"
|
||||||
|
Private Const USER_CONFIG As String = "UserConfig.xml"
|
||||||
|
|
||||||
|
|
||||||
Public Sub New(LogConfig As LogConfig)
|
Public Sub New(LogConfig As LogConfig)
|
||||||
@ -21,98 +23,131 @@ Public Class ConfigUtils
|
|||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Sub MigrateConfig(SourceDirectory As String, TargetDirectory As String, Optional FilePattern As String = "*.*")
|
Public Function MigrateAppDataConfig(pUserAppDataPath As String, pProductName As String, pOldProductName As String)
|
||||||
If IO.Directory.Exists(TargetDirectory) Then
|
Dim oNewDirPath = pUserAppDataPath
|
||||||
_Logger.Warn("Config Migration aborted because new config directory [{0}] already exists!", TargetDirectory)
|
Dim oOldDirPath = oNewDirPath.Replace(pProductName, pOldProductName)
|
||||||
Exit Sub
|
Dim oNewFilePath = Path.Combine(oNewDirPath, USER_CONFIG)
|
||||||
|
Dim oOldFilePath = Path.Combine(oOldDirPath, USER_CONFIG)
|
||||||
|
|
||||||
|
' If there is already a new config, exit.
|
||||||
|
If File.Exists(oNewFilePath) Then
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
|
||||||
|
' If there is no old config, exit.
|
||||||
|
If Not File.Exists(oOldFilePath) Then
|
||||||
|
Return True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
_Logger.Debug("Creating TargetDirectory [{0}]", TargetDirectory)
|
|
||||||
' Create target directory
|
|
||||||
Try
|
Try
|
||||||
IO.Directory.CreateDirectory(TargetDirectory)
|
If Not Directory.Exists(oNewDirPath) Then
|
||||||
Catch ex As Exception
|
Directory.CreateDirectory(oNewDirPath)
|
||||||
_Logger.Warn("Config Migration aborted because new config directory [{0}] could not be created!", TargetDirectory)
|
|
||||||
_Logger.Error(ex)
|
|
||||||
Exit Sub
|
|
||||||
End Try
|
|
||||||
|
|
||||||
' Create Migration directory
|
|
||||||
Dim oMigrationDirectory = IO.Path.Combine(SourceDirectory, MIGRATE_DIRECTORY)
|
|
||||||
_Logger.Debug("Creating MigrationDirectory [{0}]", oMigrationDirectory)
|
|
||||||
Try
|
|
||||||
IO.Directory.CreateDirectory(oMigrationDirectory)
|
|
||||||
Catch ex As Exception
|
|
||||||
_Logger.Warn("Config Migration aborted because migration directory [{0}] could not be created!", oMigrationDirectory)
|
|
||||||
_Logger.Error(ex)
|
|
||||||
Exit Sub
|
|
||||||
End Try
|
|
||||||
|
|
||||||
' Copy individual files from top level directory
|
|
||||||
For Each oPath In IO.Directory.EnumerateFiles(SourceDirectory, FilePattern)
|
|
||||||
Dim oFileInfo = New IO.FileInfo(oPath)
|
|
||||||
|
|
||||||
_Logger.Debug("Processing file [{0}]", oFileInfo.Name)
|
|
||||||
|
|
||||||
_Logger.Debug("Copying [{0}] to TargetDirectory..", oFileInfo.Name)
|
|
||||||
' Copy to target directory
|
|
||||||
Try
|
|
||||||
IO.File.Copy(oPath, IO.Path.Combine(TargetDirectory, oFileInfo.Name))
|
|
||||||
Catch ex As Exception
|
|
||||||
_Logger.Warn("Could not move old config file {0} to new config location {1}", oFileInfo.Name, TargetDirectory)
|
|
||||||
_Logger.Error(ex)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
_Logger.Debug("Moving [{0}] to MigrationDirectory..", oFileInfo.Name)
|
|
||||||
' Move to migration directory
|
|
||||||
Try
|
|
||||||
IO.File.Move(oPath, IO.Path.Combine(oMigrationDirectory, oFileInfo.Name))
|
|
||||||
Catch ex As Exception
|
|
||||||
_Logger.Warn("Could not move old config file {0} to migration directory {1}", oFileInfo.Name, oMigrationDirectory)
|
|
||||||
_Logger.Error(ex)
|
|
||||||
End Try
|
|
||||||
Next
|
|
||||||
|
|
||||||
For Each oDirectoryPath In IO.Directory.EnumerateDirectories(SourceDirectory, "*", IO.SearchOption.TopDirectoryOnly)
|
|
||||||
Dim oDirInfo As New IO.DirectoryInfo(oDirectoryPath)
|
|
||||||
|
|
||||||
_Logger.Debug("Processing directory [{0}]", oDirInfo.Name)
|
|
||||||
|
|
||||||
' Don't copy TargetDirectory if subpath of SourceDirectory or if MigrationDirectory
|
|
||||||
If oDirInfo.FullName = TargetDirectory Or oDirInfo.FullName = oMigrationDirectory Then
|
|
||||||
_Logger.Debug("Directory [{0}] should not be copied. Skipping.", oDirInfo.Name)
|
|
||||||
Continue For
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
' Copy directory to TargetDirectory
|
_Logger.Info("Migrating Config from [{0}] to [{1}]", pOldProductName, pProductName)
|
||||||
Dim oNewDirectoryPath = IO.Path.Combine(TargetDirectory, oDirInfo.Name)
|
File.Copy(oOldFilePath, oNewFilePath)
|
||||||
_Logger.Debug("Copying [{0}] to TargetDirectory..", oDirInfo.Name)
|
Return True
|
||||||
Try
|
|
||||||
_File.CopyDirectory(oDirInfo.FullName, oNewDirectoryPath, True)
|
|
||||||
Catch ex As Exception
|
|
||||||
_Logger.Warn("Could not move directory [{0}] to new path [{1}]", oDirInfo.FullName, oNewDirectoryPath)
|
|
||||||
_Logger.Error(ex)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
_Logger.Debug("Copying [{0}] to MigrationDirectory..", oDirInfo.Name)
|
Catch ex As Exception
|
||||||
' Copy directory to MigrationDirectory
|
_Logger.Warn("Error while Migrating Config")
|
||||||
Dim oMigrationDirectoryPath = IO.Path.Combine(oMigrationDirectory, oDirInfo.Name)
|
_Logger.Error(ex)
|
||||||
Try
|
Return False
|
||||||
_File.CopyDirectory(oDirInfo.FullName, oMigrationDirectoryPath, True)
|
|
||||||
Catch ex As Exception
|
|
||||||
_Logger.Error(ex)
|
|
||||||
_Logger.Warn("Could not move directory [{0}] to migration directory [{1}]", oDirInfo.FullName, oMigrationDirectoryPath)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
_Logger.Debug("Deleting [{0}]..", oDirInfo.Name)
|
End Try
|
||||||
' Delete directory
|
End Function
|
||||||
Try
|
|
||||||
IO.Directory.Delete(oDirInfo.FullName, True)
|
Public Sub MigrateConfig(SourceDirectory As String, TargetDirectory As String, Optional FilePattern As String = "*.*")
|
||||||
Catch ex As Exception
|
'If IO.Directory.Exists(TargetDirectory) Then
|
||||||
_Logger.Error(ex)
|
' _Logger.Warn("Config Migration aborted because new config directory [{0}] already exists!", TargetDirectory)
|
||||||
_Logger.Warn("Could not delete directory [{0}]", oDirInfo.FullName)
|
' Exit Sub
|
||||||
End Try
|
'End If
|
||||||
Next
|
|
||||||
|
'_Logger.Debug("Creating TargetDirectory [{0}]", TargetDirectory)
|
||||||
|
'' Create target directory
|
||||||
|
'Try
|
||||||
|
' IO.Directory.CreateDirectory(TargetDirectory)
|
||||||
|
'Catch ex As Exception
|
||||||
|
' _Logger.Warn("Config Migration aborted because new config directory [{0}] could not be created!", TargetDirectory)
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' Exit Sub
|
||||||
|
'End Try
|
||||||
|
|
||||||
|
'' Create Migration directory
|
||||||
|
'Dim oMigrationDirectory = IO.Path.Combine(SourceDirectory, MIGRATE_DIRECTORY)
|
||||||
|
'_Logger.Debug("Creating MigrationDirectory [{0}]", oMigrationDirectory)
|
||||||
|
'Try
|
||||||
|
' IO.Directory.CreateDirectory(oMigrationDirectory)
|
||||||
|
'Catch ex As Exception
|
||||||
|
' _Logger.Warn("Config Migration aborted because migration directory [{0}] could not be created!", oMigrationDirectory)
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' Exit Sub
|
||||||
|
'End Try
|
||||||
|
|
||||||
|
'' Copy individual files from top level directory
|
||||||
|
'For Each oPath In IO.Directory.EnumerateFiles(SourceDirectory, FilePattern)
|
||||||
|
' Dim oFileInfo = New IO.FileInfo(oPath)
|
||||||
|
|
||||||
|
' _Logger.Debug("Processing file [{0}]", oFileInfo.Name)
|
||||||
|
|
||||||
|
' _Logger.Debug("Copying [{0}] to TargetDirectory..", oFileInfo.Name)
|
||||||
|
' ' Copy to target directory
|
||||||
|
' Try
|
||||||
|
' IO.File.Copy(oPath, IO.Path.Combine(TargetDirectory, oFileInfo.Name))
|
||||||
|
' Catch ex As Exception
|
||||||
|
' _Logger.Warn("Could not move old config file {0} to new config location {1}", oFileInfo.Name, TargetDirectory)
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' End Try
|
||||||
|
|
||||||
|
' _Logger.Debug("Moving [{0}] to MigrationDirectory..", oFileInfo.Name)
|
||||||
|
' ' Move to migration directory
|
||||||
|
' Try
|
||||||
|
' IO.File.Move(oPath, IO.Path.Combine(oMigrationDirectory, oFileInfo.Name))
|
||||||
|
' Catch ex As Exception
|
||||||
|
' _Logger.Warn("Could not move old config file {0} to migration directory {1}", oFileInfo.Name, oMigrationDirectory)
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' End Try
|
||||||
|
'Next
|
||||||
|
|
||||||
|
'For Each oDirectoryPath In IO.Directory.EnumerateDirectories(SourceDirectory, "*", IO.SearchOption.TopDirectoryOnly)
|
||||||
|
' Dim oDirInfo As New IO.DirectoryInfo(oDirectoryPath)
|
||||||
|
|
||||||
|
' _Logger.Debug("Processing directory [{0}]", oDirInfo.Name)
|
||||||
|
|
||||||
|
' ' Don't copy TargetDirectory if subpath of SourceDirectory or if MigrationDirectory
|
||||||
|
' If oDirInfo.FullName = TargetDirectory Or oDirInfo.FullName = oMigrationDirectory Then
|
||||||
|
' _Logger.Debug("Directory [{0}] should not be copied. Skipping.", oDirInfo.Name)
|
||||||
|
' Continue For
|
||||||
|
' End If
|
||||||
|
|
||||||
|
' ' Copy directory to TargetDirectory
|
||||||
|
' Dim oNewDirectoryPath = IO.Path.Combine(TargetDirectory, oDirInfo.Name)
|
||||||
|
' _Logger.Debug("Copying [{0}] to TargetDirectory..", oDirInfo.Name)
|
||||||
|
' Try
|
||||||
|
' _File.CopyDirectory(oDirInfo.FullName, oNewDirectoryPath, True)
|
||||||
|
' Catch ex As Exception
|
||||||
|
' _Logger.Warn("Could not move directory [{0}] to new path [{1}]", oDirInfo.FullName, oNewDirectoryPath)
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' End Try
|
||||||
|
|
||||||
|
' _Logger.Debug("Copying [{0}] to MigrationDirectory..", oDirInfo.Name)
|
||||||
|
' ' Copy directory to MigrationDirectory
|
||||||
|
' Dim oMigrationDirectoryPath = IO.Path.Combine(oMigrationDirectory, oDirInfo.Name)
|
||||||
|
' Try
|
||||||
|
' _File.CopyDirectory(oDirInfo.FullName, oMigrationDirectoryPath, True)
|
||||||
|
' Catch ex As Exception
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' _Logger.Warn("Could not move directory [{0}] to migration directory [{1}]", oDirInfo.FullName, oMigrationDirectoryPath)
|
||||||
|
' End Try
|
||||||
|
|
||||||
|
' _Logger.Debug("Deleting [{0}]..", oDirInfo.Name)
|
||||||
|
' ' Delete directory
|
||||||
|
' Try
|
||||||
|
' IO.Directory.Delete(oDirInfo.FullName, True)
|
||||||
|
' Catch ex As Exception
|
||||||
|
' _Logger.Error(ex)
|
||||||
|
' _Logger.Warn("Could not delete directory [{0}]", oDirInfo.FullName)
|
||||||
|
' End Try
|
||||||
|
'Next
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user