Changes for issues #97 and #99

This commit is contained in:
MikeMaximus
2017-11-16 12:35:15 -06:00
parent 65c613ffcb
commit 7c0a342f1d
9 changed files with 170 additions and 9 deletions
+10
View File
@@ -8,6 +8,7 @@
Private sFileType As String
Private sExcludeList As String
Private bMonitorOnly As Boolean
Private sComments As String
Private oTags As List(Of Tag)
Property Name As String
@@ -91,6 +92,15 @@
End Get
End Property
Property Comments As String
Set(value As String)
sComments = value
End Set
Get
Return sComments
End Get
End Property
Property Tags As List(Of Tag)
Get
Return oTags
+13
View File
@@ -19,6 +19,7 @@ Public Class clsGame
Private sCompany As String = String.Empty
Private bEnabled As Boolean = True
Private bMonitorOnly As Boolean = False
Private sComments As String = String.Empty
Private bDuplicate As Boolean = False
Private bTempGame As Boolean = False
Private oImportTags As New List(Of Tag)
@@ -220,6 +221,15 @@ Public Class clsGame
End Set
End Property
Property Comments As String
Get
Return sComments
End Get
Set(value As String)
sComments = value
End Set
End Property
Property Duplicate As Boolean
Get
Return bDuplicate
@@ -324,6 +334,9 @@ Public Class clsGame
If MonitorOnly <> oGame.MonitorOnly Then
Return False
End If
If Comments <> oGame.Comments Then
Return False
End If
'Optional Sync Fields
If (eSyncFields And eOptionalSyncFields.Company) = eOptionalSyncFields.Company Then
+44
View File
@@ -0,0 +1,44 @@
Public Class clsSession
Private sMonitorID As String
Private dStart As DateTime
Private dEnd As DateTime
Private sComputerName As String = My.Computer.Name
Public Property MonitorID As String
Set(value As String)
sMonitorID = value
End Set
Get
Return sMonitorID
End Get
End Property
Public Property SessionStart As DateTime
Set(value As DateTime)
dStart = value
End Set
Get
Return dStart
End Get
End Property
Public Property SessionEnd As DateTime
Set(value As DateTime)
dEnd = value
End Set
Get
Return dEnd
End Get
End Property
Public Property ComputerName As String
Set(value As String)
sComputerName = value
End Set
Get
Return sComputerName
End Get
End Property
End Class
+19 -2
View File
@@ -714,6 +714,17 @@ Public Class frmMain
UpdateTimeSpent(dCurrentHours, oProcess.TimeSpent.TotalHours)
End Sub
Private Sub HandleSession()
Dim oSession As New clsSession
'Record Session
oSession.MonitorID = oProcess.GameInfo.ID
oSession.SessionStart = oProcess.StartTime
oSession.SessionEnd = oProcess.EndTime
mgrSessions.AddSession(oSession)
End Sub
Private Function SupressBackup() As Boolean
Dim iSession As Integer
If oSettings.SupressBackup Then
@@ -1764,7 +1775,10 @@ Public Class frmMain
LoadGameSettings()
Else
bContinue = False
If oSettings.TimeTracking Then HandleTimeSpent()
If oSettings.TimeTracking Then
HandleTimeSpent()
HandleSession()
End If
UpdateLog(mgrCommon.FormatString(frmMain_ErrorBackupUnknownPath, oProcess.GameInfo.Name), False)
oProcess.GameInfo = Nothing
ResetGameInfo()
@@ -1775,7 +1789,10 @@ Public Class frmMain
If bContinue Then
If DoMultiGameCheck() Then
UpdateLog(mgrCommon.FormatString(frmMain_GameEnded, oProcess.GameInfo.Name), False)
If oSettings.TimeTracking Then HandleTimeSpent()
If oSettings.TimeTracking Then
HandleTimeSpent()
HandleSession()
End If
RunBackup()
Else
UpdateLog(frmMain_UnknownGameEnded, False)
+2
View File
@@ -125,6 +125,7 @@
<Compile Include="Classes\clsGameFilter.vb" />
<Compile Include="Classes\clsGameFilterField.vb" />
<Compile Include="Classes\clsSavedPath.vb" />
<Compile Include="Classes\clsSession.vb" />
<Compile Include="Classes\XML Serialize Classes\Tag.vb" />
<Compile Include="Classes\XML Serialize Classes\Game.vb" />
<Compile Include="Classes\clsGameTag.vb" />
@@ -225,6 +226,7 @@
<Compile Include="Managers\mgrPath.vb" />
<Compile Include="Managers\mgrRestore.vb" />
<Compile Include="Managers\mgrSavedPath.vb" />
<Compile Include="Managers\mgrSessions.vb" />
<Compile Include="Managers\mgrSettings.vb" />
<Compile Include="Managers\mgrBackup.vb" />
<Compile Include="Managers\mgrSQLite.vb" />
+7 -3
View File
@@ -33,6 +33,7 @@ Public Class mgrMonitorList
oGame.BackupLimit = CInt(dr("BackupLimit"))
oGame.CleanFolder = CBool(dr("CleanFolder"))
If Not IsDBNull(dr("Parameter")) Then oGame.Parameter = CStr(dr("Parameter"))
If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments"))
Return oGame
End Function
@@ -59,6 +60,7 @@ Public Class mgrMonitorList
hshParams.Add("BackupLimit", oGame.BackupLimit)
hshParams.Add("CleanFolder", oGame.CleanFolder)
hshParams.Add("Parameter", oGame.Parameter)
hshParams.Add("Comments", oGame.Comments)
Return hshParams
End Function
@@ -99,7 +101,7 @@ Public Class mgrMonitorList
Dim hshParams As Hashtable
sSQL = "INSERT INTO monitorlist VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, @TimeStamp, "
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter)"
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter, @Comments)"
'Parameters
hshParams = SetCoreParameters(oGame)
@@ -115,7 +117,7 @@ Public Class mgrMonitorList
sSQL = "UPDATE monitorlist SET Name=@Name, Process=@Process, Path=@Path, AbsolutePath=@AbsolutePath, FolderSave=@FolderSave, "
sSQL &= "FileType=@FileType, TimeStamp=@TimeStamp, ExcludeList=@ExcludeList, ProcessPath=@ProcessPath, Icon=@Icon, "
sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, CleanFolder=@CleanFolder, Parameter=@Parameter WHERE MonitorID=@ID"
sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, CleanFolder=@CleanFolder, Parameter=@Parameter, Comments=@Comments WHERE MonitorID=@ID"
'Parameters
hshParams = SetCoreParameters(oGame)
@@ -367,6 +369,7 @@ Public Class mgrMonitorList
hshParams.Add("MonitorOnly", oGame.MonitorOnly)
hshParams.Add("CleanFolder", oGame.CleanFolder)
hshParams.Add("Parameter", oGame.Parameter)
hshParams.Add("Comments", oGame.Comments)
'Optional Parameters
If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then
@@ -501,7 +504,7 @@ Public Class mgrMonitorList
ByVal bSortAsc As Boolean, ByVal sSortField As String, ByRef hshParams As Hashtable) As String
Dim sSQL As String = String.Empty
Dim iCounter As Integer = 0
Dim sBaseSelect As String = "MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist"
Dim sBaseSelect As String = "MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments FROM monitorlist"
Dim sSort As String = " ORDER BY " & sSortField
If bSortAsc Then
@@ -632,6 +635,7 @@ Public Class mgrMonitorList
If Not IsDBNull(dr("ExcludeList")) Then oGame.ExcludeList = CStr(dr("ExcludeList"))
oGame.MonitorOnly = CBool(dr("MonitorOnly"))
If Not IsDBNull(dr("Parameter")) Then oGame.Parameter = CStr(dr("Parameter"))
If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments"))
oGame.Tags = mgrGameTags.GetTagsByGameForExport(sID)
oList.Add(oGame)
Next
+36 -2
View File
@@ -83,7 +83,7 @@ Public Class mgrSQLite
sSql &= "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " &
"AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " &
"ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " &
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, PRIMARY KEY(Name, Process));"
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, PRIMARY KEY(Name, Process));"
'Add Tables (Tags)
sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
@@ -120,7 +120,7 @@ Public Class mgrSQLite
sSql = "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " &
"AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " &
"ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " &
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, PRIMARY KEY(Name, Process));"
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, PRIMARY KEY(Name, Process));"
'Add Tables (Remote Manifest)
sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, " &
@@ -132,6 +132,10 @@ Public Class mgrSQLite
'Add Tables (Remote Game Tags)
sSql &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
'Add Tables (Sessions)
sSql &= "CREATE TABLE sessions (MonitorID TEXT NOT NULL, Start INTEGER NOT NULL, End INTEGER NOT NULL, " &
"ComputerName TEXT NOT NULL, PRIMARY KEY(MonitorID, Start));"
'Set Version
sSql &= "PRAGMA user_version=" & mgrCommon.AppVersion
@@ -680,6 +684,36 @@ Public Class mgrSQLite
End If
End If
'1.05 Upgrade
If GetDatabaseVersion() < 105 Then
If eDatabase = Database.Local Then
'Backup DB before starting
BackupDB("v102")
'Add new field(s)
sSQL = "ALTER TABLE monitorlist ADD COLUMN Comments TEXT;"
sSQL &= "PRAGMA user_version=105"
RunParamQuery(sSQL, New Hashtable)
End If
If eDatabase = Database.Remote Then
'Backup DB before starting
BackupDB("v102")
'Add Tables (Sessions)
sSQL = "CREATE TABLE sessions (MonitorID TEXT NOT NULL, Start INTEGER NOT NULL, End INTEGER NOT NULL, " &
"ComputerName TEXT NOT NULL, PRIMARY KEY(MonitorID, Start));"
'Add new field(s)
sSQL &= "ALTER TABLE monitorlist ADD COLUMN Comments TEXT;"
sSQL &= "PRAGMA user_version=105"
RunParamQuery(sSQL, New Hashtable)
End If
End If
End Sub
Public Function GetDBSize() As Long
+37
View File
@@ -0,0 +1,37 @@
Public Class mgrSessions
Private Shared Function MapToObject(ByVal dr As DataRow) As clsSession
Dim oSession As New clsSession
oSession.MonitorID = CStr(dr("MonitorID"))
oSession.SessionStart = mgrCommon.UnixToDate(CInt(dr("Start")))
oSession.SessionEnd = mgrCommon.UnixToDate(CInt(dr("End")))
oSession.ComputerName = CStr(dr("ComputerName"))
Return oSession
End Function
Private Shared Function SetCoreParameters(ByVal oSession As clsSession) As Hashtable
Dim hshParams As New Hashtable
hshParams.Add("MonitorID", oSession.MonitorID)
hshParams.Add("Start", mgrCommon.DateToUnix(oSession.SessionStart))
hshParams.Add("End", mgrCommon.DateToUnix(oSession.SessionEnd))
hshParams.Add("ComputerName", oSession.ComputerName)
Return hshParams
End Function
Public Shared Sub AddSession(ByVal oSession As clsSession)
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Remote)
Dim sSQL As String
Dim hshParams As Hashtable
sSQL = "INSERT INTO sessions (MonitorID, Start, End, ComputerName) VALUES (@MonitorID, @Start, @End, @ComputerName);"
hshParams = SetCoreParameters(oSession)
oDatabase.RunParamQuery(sSQL, hshParams)
End Sub
End Class
+2 -2
View File
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.4.*")>
<Assembly: AssemblyFileVersion("1.0.4.0")>
<Assembly: AssemblyVersion("1.0.5.*")>
<Assembly: AssemblyFileVersion("1.0.5.0")>
<Assembly: NeutralResourcesLanguageAttribute("en")>