diff --git a/GBM/Classes/XML Serialize Classes/Game.vb b/GBM/Classes/XML Serialize Classes/Game.vb
index 1bc63d4..f3be5dd 100644
--- a/GBM/Classes/XML Serialize Classes/Game.vb
+++ b/GBM/Classes/XML Serialize Classes/Game.vb
@@ -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
diff --git a/GBM/Classes/clsGame.vb b/GBM/Classes/clsGame.vb
index fb7ce2e..3dea47f 100644
--- a/GBM/Classes/clsGame.vb
+++ b/GBM/Classes/clsGame.vb
@@ -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
diff --git a/GBM/Classes/clsSession.vb b/GBM/Classes/clsSession.vb
new file mode 100644
index 0000000..cec5e2b
--- /dev/null
+++ b/GBM/Classes/clsSession.vb
@@ -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
diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb
index 31c81b2..db15ac7 100644
--- a/GBM/Forms/frmMain.vb
+++ b/GBM/Forms/frmMain.vb
@@ -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)
diff --git a/GBM/Game Backup Monitor.vbproj b/GBM/Game Backup Monitor.vbproj
index d4826e5..ea4b379 100644
--- a/GBM/Game Backup Monitor.vbproj
+++ b/GBM/Game Backup Monitor.vbproj
@@ -125,6 +125,7 @@
+
@@ -225,6 +226,7 @@
+
diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb
index 5aa9d1d..edd08c7 100644
--- a/GBM/Managers/mgrMonitorList.vb
+++ b/GBM/Managers/mgrMonitorList.vb
@@ -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
diff --git a/GBM/Managers/mgrSQLite.vb b/GBM/Managers/mgrSQLite.vb
index d34e808..937a0a1 100644
--- a/GBM/Managers/mgrSQLite.vb
+++ b/GBM/Managers/mgrSQLite.vb
@@ -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
diff --git a/GBM/Managers/mgrSessions.vb b/GBM/Managers/mgrSessions.vb
new file mode 100644
index 0000000..bea09b6
--- /dev/null
+++ b/GBM/Managers/mgrSessions.vb
@@ -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
diff --git a/GBM/My Project/AssemblyInfo.vb b/GBM/My Project/AssemblyInfo.vb
index 66ef53c..3acf9cd 100644
--- a/GBM/My Project/AssemblyInfo.vb
+++ b/GBM/My Project/AssemblyInfo.vb
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
'
-
-
+
+
\ No newline at end of file