Store harvested transmitter in liteDB

This commit is contained in:
Martijn Scheepers
2022-07-21 15:35:20 +02:00
parent c4236c855a
commit eb177b74b0
5 changed files with 118 additions and 54 deletions

View File

@@ -12,18 +12,34 @@ Public Class TransmitterHarvestView
End Try
End Sub
'Private Sub FillTreeView()
' For Each transmitter In TransmitterHarvester.ReadAllTransmitters()
' If TransmittersTreeView.Nodes.ContainsKey(transmitter.Transmitter) = True Then
' For Each log In transmitter.Loggings
' If TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.ContainsKey(log.LogDate.Ticks.ToString) = False Then
' TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
' End If
' Next
' Else
' TransmittersTreeView.Nodes.Add(transmitter.Transmitter, transmitter.Transmitter)
' For Each log In transmitter.Loggings
' TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
' Next
' End If
' Next
'End Sub
Private Sub FillTreeView()
For Each transmitter In TransmitterHarvester.ReadAllTransmitters()
If TransmittersTreeView.Nodes.ContainsKey(transmitter.Transmitter) = True Then
For Each log In transmitter.Loggings
If TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.ContainsKey(log.LogDate.Ticks.ToString) = False Then
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
For Each transmitter In TransmitterHarvester.GetAllTransmitters()
If TransmittersTreeView.Nodes.ContainsKey(transmitter) = True Then
For Each log In TransmitterHarvester.GetAllTransmitterLogs(transmitter)
If TransmittersTreeView.Nodes(transmitter).Nodes.ContainsKey(log.LogDate.Ticks.ToString) = False Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
End If
Next
Else
TransmittersTreeView.Nodes.Add(transmitter.Transmitter, transmitter.Transmitter)
For Each log In transmitter.Loggings
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes.Add(transmitter, transmitter)
For Each log In TransmitterHarvester.GetAllTransmitterLogs(transmitter)
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
Next
End If
Next

View File

@@ -201,6 +201,9 @@
<Reference Include="DocumentFormat.OpenXml, Version=2.14.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.2.14.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
<Reference Include="LiteDB, Version=5.0.12.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27, processorArchitecture=MSIL">
<HintPath>..\packages\LiteDB.5.0.12\lib\net45\LiteDB.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -227,6 +230,7 @@
<Reference Include="System.Management">
<Name>System.Management</Name>
</Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />

View File

@@ -2,6 +2,7 @@
Imports System.ComponentModel
Imports System.IO
Imports System.Linq
Imports LiteDB
Module TransmitterHarvester
@@ -9,77 +10,115 @@ Module TransmitterHarvester
Private ReadOnly Errorlog As NLog.Logger = NLog.LogManager.GetLogger("Error")
Private ReadOnly harvestFileLocation As String = Path.Combine(FilePathConfigFiles, "Transmitters.harvest")
Private ReadOnly harvestDBLocation As String = Path.Combine(FilePathConfigFiles, "Transmitters.db")
Public Event TransmitterUpdate()
Public Sub Harvest(uCSMessage As String)
'Console.WriteLine($"Transmitter harvest {uCSMessage}")
Dim id As String = uCSMessage.Substring(3, 7)
Dim id As String = uCSMessage.Substring(3, 8)
'Console.WriteLine($"Transmitter ID {id}")
Dim button As String = uCSMessage.Substring(2, 1)
'Console.WriteLine($"Transmitter button {button}")
Dim transmitterList As BindingList(Of HarvestedTransmitterList) = ReadAllTransmitters()
Dim transmitter = transmitterList.Where(Function(x) x.Transmitter = id).SingleOrDefault()
If transmitter Is Nothing Then
transmitterList.Add(New HarvestedTransmitterList(id, button))
Else
transmitter.AddLogging(button)
End If
Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
Dim col = db.GetCollection(Of TransmitterLog)("Transmitters")
col.Insert(New TransmitterLog With {
.Transmitter = id,
.ButtonPressed = button,
.LogDate = DateTime.Now()
})
'col.EnsureIndex(Function(x) x.Transmitter)
db.Commit()
End Using
WriteAllTransmitters(transmitterList)
'Dim transmitterList As BindingList(Of HarvestedTransmitterList) = ReadAllTransmitters()
'Dim transmitter = transmitterList.Where(Function(x) x.Transmitter = id).SingleOrDefault()
'If transmitter Is Nothing Then
' transmitterList.Add(New HarvestedTransmitterList(id, button))
'Else
' transmitter.AddLogging(button)
'End If
'WriteAllTransmitters(transmitterList)
RaiseEvent TransmitterUpdate()
End Sub
Public Function ReadAllTransmitters() As BindingList(Of HarvestedTransmitterList)
Dim transmitters As New BindingList(Of HarvestedTransmitterList)
If File.Exists(harvestFileLocation) Then
Dim Text As String = File.ReadAllText(harvestFileLocation)
transmitters = Newtonsoft.Json.JsonConvert.DeserializeObject(Of BindingList(Of HarvestedTransmitterList))(Text)
End If
If transmitters Is Nothing Then
Return New BindingList(Of HarvestedTransmitterList)
End If
Return transmitters
Public Function GetAllTransmitters() As List(Of String)
Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
'Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().OrderBy(Function(x) x.Transmitter).Select(Function(S) S.Transmitter).ToList()
Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().OrderBy(Function(x) x.Transmitter).Select(Function(S) S.Transmitter).ToList()
End Using
End Function
Private Sub WriteAllTransmitters(transmitters As BindingList(Of HarvestedTransmitterList))
Try
Dim output = Newtonsoft.Json.JsonConvert.SerializeObject(transmitters, Newtonsoft.Json.Formatting.Indented)
My.Computer.FileSystem.WriteAllText(harvestFileLocation, output, False)
Catch ex As Exception
Errorlog.Error("Error writing transmitter harvest - " + ex.Message)
End Try
End Sub
Public Function GetAllTransmitterLogs(transmitter As String) As List(Of TransmitterLog)
Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().Where(Function(x) x.Transmitter Is transmitter).OrderBy(Function(d) d.LogDate).ToList()
End Using
End Function
'Public Function ReadAllTransmitters() As BindingList(Of HarvestedTransmitterList)
' Dim transmitters As New BindingList(Of HarvestedTransmitterList)
' If File.Exists(harvestFileLocation) Then
' Dim Text As String = File.ReadAllText(harvestFileLocation)
' transmitters = Newtonsoft.Json.JsonConvert.DeserializeObject(Of BindingList(Of HarvestedTransmitterList))(Text)
' End If
' If transmitters Is Nothing Then
' Return New BindingList(Of HarvestedTransmitterList)
' End If
' Return transmitters
'End Function
'Private Sub WriteAllTransmitters(transmitters As BindingList(Of HarvestedTransmitterList))
' Try
' Dim output = Newtonsoft.Json.JsonConvert.SerializeObject(transmitters, Newtonsoft.Json.Formatting.Indented)
' My.Computer.FileSystem.WriteAllText(harvestFileLocation, output, False)
' Catch ex As Exception
' Errorlog.Error("Error writing transmitter harvest - " + ex.Message)
' End Try
'End Sub
End Module
Public Class HarvestedTransmitter
Public Class TransmitterLog
<BsonId>
Public Property Id As ObjectId
Public Property Transmitter As String
Public Property ButtonPressed As String
Public Property LogDate As DateTime
Public Sub New(ByVal button As String)
Me.ButtonPressed = button
Me.LogDate = DateTime.Now()
End Sub
End Class
Public Class HarvestedTransmitterList
Public Property Transmitter As String
Public Property Loggings As BindingList(Of HarvestedTransmitter)
Public Sub New(ByVal id As String, ByVal button As String)
Me.Transmitter = id
Loggings = New BindingList(Of HarvestedTransmitter)
AddLogging(button)
End Sub
'Public Class HarvestedTransmitter
' Public Property ButtonPressed As String
' Public Property LogDate As DateTime
Public Sub AddLogging(ByVal button As String)
Loggings.Add(New HarvestedTransmitter(button))
End Sub
End Class
' Public Sub New(ByVal button As String)
' Me.ButtonPressed = button
' Me.LogDate = DateTime.Now()
' End Sub
'End Class
'Public Class HarvestedTransmitterList
' Public Property Transmitter As String
' Public Property Loggings As BindingList(Of HarvestedTransmitter)
' Public Sub New(ByVal id As String, ByVal button As String)
' Me.Transmitter = id
' Loggings = New BindingList(Of HarvestedTransmitter)
' AddLogging(button)
' End Sub
' Public Sub AddLogging(ByVal button As String)
' Loggings.Add(New HarvestedTransmitter(button))
' End Sub
'End Class

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DocumentFormat.OpenXml" version="2.14.0" targetFramework="net48" />
<package id="LiteDB" version="5.0.12" targetFramework="net48" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net48" />
<package id="NLog" version="4.7.12" targetFramework="net48" />
<package id="OpenXMLSDK-MOT" version="2.7.1" targetFramework="net48" />

View File

@@ -25,6 +25,7 @@
<ComponentRef Id="comp_Background.png"/>
<ComponentRef Id="NLog.dll" />
<ComponentRef Id="LiteDB.dll" />
<ComponentRef Id="AxInterop.AXISMEDIACONTROLLib.dll" />
<ComponentRef Id="Interop.AXISMEDIACONTROLLib.dll" />
@@ -86,6 +87,9 @@
<Component Id="NLog.dll" Guid="*">
<File Id="NLog.dll" Source="$(var.BuildLocation)\NLog.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="LiteDB.dll" Guid="*">
<File Id="LIteDB.dll" Source="$(var.BuildLocation)\LiteDB.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="AxInterop.AXISMEDIACONTROLLib.dll" Guid="*">
<File Id="AxInterop.AXISMEDIACONTROLLib.dll" Source="$(var.BuildLocation)\AxInterop.AXISMEDIACONTROLLib.dll" KeyPath="yes" Checksum="yes"/>