Fixed possible database state problem after issue #123

This commit is contained in:
MikeMaximus
2018-02-24 15:40:26 -06:00
parent b54f98d82b
commit dff3432c27
6 changed files with 21 additions and 15 deletions
+8 -2
View File
@@ -46,7 +46,7 @@ Public Class clsGame
ReadOnly Property CompoundKey As String ReadOnly Property CompoundKey As String
Get Get
Return ProcessName & ":" & SafeName Return ProcessName & ":" & KeySafeName
End Get End Get
End Property End Property
@@ -69,12 +69,18 @@ Public Class clsGame
End Get End Get
End Property End Property
ReadOnly Property SafeName As String ReadOnly Property FileSafeName As String
Get Get
Return mgrPath.ValidateForFileSystem(sGameName) Return mgrPath.ValidateForFileSystem(sGameName)
End Get End Get
End Property End Property
ReadOnly Property KeySafeName As String
Get
Return sGameName.Replace(":", "_")
End Get
End Property
Property ProcessName As String Property ProcessName As String
Set(value As String) Set(value As String)
sProcessName = value sProcessName = value
+1 -1
View File
@@ -265,7 +265,7 @@ Public Class frmAddWizard
Private Sub DoSave() Private Sub DoSave()
Dim hshDupeCheck As New Hashtable Dim hshDupeCheck As New Hashtable
Dim sNewGame As String = oGameToSave.ProcessName & ":" & oGameToSave.SafeName Dim sNewGame As String = oGameToSave.ProcessName & ":" & oGameToSave.KeySafeName
For Each o As clsGame In GameData.Values For Each o As clsGame In GameData.Values
hshDupeCheck.Add(o.CompoundKey, String.Empty) hshDupeCheck.Add(o.CompoundKey, String.Empty)
+4 -4
View File
@@ -183,14 +183,14 @@ Public Class frmGameManager
sFileName = BackupFolder & oBackupItem.FileName sFileName = BackupFolder & oBackupItem.FileName
'Rename Backup File 'Rename Backup File
sNewFileName = Path.GetDirectoryName(sFileName) & Path.DirectorySeparatorChar & Path.GetFileName(sFileName).Replace(oOriginalApp.SafeName, oNewApp.SafeName) sNewFileName = Path.GetDirectoryName(sFileName) & Path.DirectorySeparatorChar & Path.GetFileName(sFileName).Replace(oOriginalApp.FileSafeName, oNewApp.FileSafeName)
If File.Exists(sFileName) And Not sFileName = sNewFileName Then If File.Exists(sFileName) And Not sFileName = sNewFileName Then
FileSystem.Rename(sFileName, sNewFileName) FileSystem.Rename(sFileName, sNewFileName)
End If End If
'Rename Directory 'Rename Directory
sDirectory = Path.GetDirectoryName(sFileName) sDirectory = Path.GetDirectoryName(sFileName)
sNewDirectory = sDirectory.Replace(oOriginalApp.SafeName, oNewApp.SafeName) sNewDirectory = sDirectory.Replace(oOriginalApp.FileSafeName, oNewApp.FileSafeName)
If sDirectory <> sNewDirectory Then If sDirectory <> sNewDirectory Then
If Directory.Exists(sDirectory) And Not sDirectory = sNewDirectory Then If Directory.Exists(sDirectory) And Not sDirectory = sNewDirectory Then
FileSystem.Rename(sDirectory, sNewDirectory) FileSystem.Rename(sDirectory, sNewDirectory)
@@ -198,7 +198,7 @@ Public Class frmGameManager
End If End If
oBackupItem.Name = oNewApp.Name oBackupItem.Name = oNewApp.Name
oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.SafeName, oNewApp.SafeName) oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.FileSafeName, oNewApp.FileSafeName)
mgrManifest.DoManifestUpdateByID(oBackupItem, mgrSQLite.Database.Local) mgrManifest.DoManifestUpdateByID(oBackupItem, mgrSQLite.Database.Local)
Next Next
oLocalBackupData = mgrManifest.ReadLatestManifest(mgrSQLite.Database.Local) oLocalBackupData = mgrManifest.ReadLatestManifest(mgrSQLite.Database.Local)
@@ -210,7 +210,7 @@ Public Class frmGameManager
For Each oBackupItem As clsBackup In oBackupItems For Each oBackupItem As clsBackup In oBackupItems
oBackupItem.Name = oNewApp.Name oBackupItem.Name = oNewApp.Name
oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.SafeName, oNewApp.SafeName) oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.FileSafeName, oNewApp.FileSafeName)
mgrManifest.DoManifestUpdateByID(oBackupItem, mgrSQLite.Database.Remote) mgrManifest.DoManifestUpdateByID(oBackupItem, mgrSQLite.Database.Remote)
Next Next
oRemoteBackupData = mgrManifest.ReadLatestManifest(mgrSQLite.Database.Remote) oRemoteBackupData = mgrManifest.ReadLatestManifest(mgrSQLite.Database.Remote)
+5 -5
View File
@@ -107,8 +107,8 @@ Public Class mgrBackup
Dim lAvailableSpace As Long Dim lAvailableSpace As Long
Dim lFolderSize As Long Dim lFolderSize As Long
If oSettings.CreateSubFolder Then sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.SafeName If oSettings.CreateSubFolder Then sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.FileSafeName
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.SafeName & ".7z" sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.FileSafeName & ".7z"
'Verify saved game path 'Verify saved game path
sSavePath = VerifySavePath(oGame) sSavePath = VerifySavePath(oGame)
@@ -199,7 +199,7 @@ Public Class mgrBackup
RaiseEvent UpdateBackupInfo(oGame) RaiseEvent UpdateBackupInfo(oGame)
If oSettings.CreateSubFolder Then If oSettings.CreateSubFolder Then
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.SafeName sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.FileSafeName
Try Try
If Not Directory.Exists(sBackupFile) Then If Not Directory.Exists(sBackupFile) Then
Directory.CreateDirectory(sBackupFile) Directory.CreateDirectory(sBackupFile)
@@ -212,9 +212,9 @@ Public Class mgrBackup
If oGame.AppendTimeStamp Then If oGame.AppendTimeStamp Then
CheckOldBackups(oGame) CheckOldBackups(oGame)
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.SafeName & sTimeStamp & ".7z" sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.FileSafeName & sTimeStamp & ".7z"
Else Else
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.SafeName & ".7z" sBackupFile = sBackupFile & Path.DirectorySeparatorChar & oGame.FileSafeName & ".7z"
End If End If
If bDoBackup Then If bDoBackup Then
+2 -2
View File
@@ -86,7 +86,7 @@ Public Class mgrMonitorList
Select Case eListType Select Case eListType
Case eListTypes.FullList Case eListTypes.FullList
'Don't wrap this, if it fails there's a problem with the database 'Don't wrap this, if it fails there's a problem with the database
hshList.Add(oGame.ProcessName & ":" & oGame.SafeName, oGame) hshList.Add(oGame.ProcessName & ":" & oGame.KeySafeName, oGame)
Case eListTypes.ScanList Case eListTypes.ScanList
For Each de As DictionaryEntry In hshList For Each de As DictionaryEntry In hshList
bIsDupe = False bIsDupe = False
@@ -116,7 +116,7 @@ Public Class mgrMonitorList
If bIsDupe Then If bIsDupe Then
DirectCast(hshList.Item(oCompareGame.ProcessName), clsGame).Duplicate = True DirectCast(hshList.Item(oCompareGame.ProcessName), clsGame).Duplicate = True
oGame.ProcessName = oGame.ProcessName & ":" & oGame.SafeName oGame.ProcessName = oGame.ProcessName & ":" & oGame.KeySafeName
oGame.Duplicate = True oGame.Duplicate = True
End If End If
Next Next
+1 -1
View File
@@ -42,7 +42,7 @@ Public Class mgrXML
'This should be wrapped just in case we get some bad data 'This should be wrapped just in case we get some bad data
Try Try
hshList.Add(oGame.ProcessName & ":" & oGame.SafeName, oGame) hshList.Add(oGame.ProcessName & ":" & oGame.KeySafeName, oGame)
Catch e As Exception Catch e As Exception
'Do Nothing 'Do Nothing
End Try End Try