From 50a158ea5c80057c29d9696727eecbc15d70378b Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 16 Jun 2020 15:40:31 +0200 Subject: [PATCH] ClipboardWatcher: Use connectionId when executing search count command --- GUIs.ClipboardWatcher/ClipboardWatcher.vbproj | 1 + GUIs.ClipboardWatcher/ProfileFilter.vb | 10 ++++++-- GUIs.ClipboardWatcher/ProfileSearches.vb | 24 ++----------------- GUIs.ClipboardWatcher/ProfileUtils.vb | 23 ++++++++++++++++++ 4 files changed, 34 insertions(+), 24 deletions(-) create mode 100644 GUIs.ClipboardWatcher/ProfileUtils.vb diff --git a/GUIs.ClipboardWatcher/ClipboardWatcher.vbproj b/GUIs.ClipboardWatcher/ClipboardWatcher.vbproj index 1889a576..a9086022 100644 --- a/GUIs.ClipboardWatcher/ClipboardWatcher.vbproj +++ b/GUIs.ClipboardWatcher/ClipboardWatcher.vbproj @@ -114,6 +114,7 @@ + diff --git a/GUIs.ClipboardWatcher/ProfileFilter.vb b/GUIs.ClipboardWatcher/ProfileFilter.vb index 0e17763f..2069e544 100644 --- a/GUIs.ClipboardWatcher/ProfileFilter.vb +++ b/GUIs.ClipboardWatcher/ProfileFilter.vb @@ -361,19 +361,25 @@ Public Class ProfileFilter For Each oRow As DataRow In oDTDataSearches.Rows Dim oCountCommand = String.Empty + Dim oCountConnectionId = String.Empty Try oCountCommand = NotNull(oRow.Item("COUNT_COMMAND"), String.Empty) + oCountConnectionId = NotNull(oRow.Item("CONN_ID"), 0) If oCountCommand = String.Empty Then - _Logger.Debug("oCountCommand = String.Empty ==> Continue for") + _Logger.Debug("oCountCommand = String.Empty ==> Continue for") Continue For End If oCountCommand = oPatterns.ReplaceInternalValues(oCountCommand) oCountCommand = oPatterns.ReplaceUserValues(oCountCommand, User) oCountCommand = oPatterns.ReplaceClipboardContents(oCountCommand, ClipboardContents) + _Logger.Debug($"Count-Command DATA before execute: [{oCountCommand}]") - oResultData += NotNull(Of Integer)(Database.GetScalarValue(oCountCommand), 0) + + Dim oConnectionString = ProfileUtils.GetConnectionString(Database, oCountConnectionId) + + oResultData += NotNull(Of Integer)(Database.GetScalarValueWithConnection(oCountCommand, oConnectionString), 0) Catch ex As Exception _Logger.Warn("Invalid SQL Query for Counting Data in Profile {0}: {1}", oProfile.Guid, oCountCommand) End Try diff --git a/GUIs.ClipboardWatcher/ProfileSearches.vb b/GUIs.ClipboardWatcher/ProfileSearches.vb index 9b23e656..a00f537e 100644 --- a/GUIs.ClipboardWatcher/ProfileSearches.vb +++ b/GUIs.ClipboardWatcher/ProfileSearches.vb @@ -49,7 +49,7 @@ Public Class ProfileSearches oSQL = oPatterns.ReplaceInternalValues(oSQL) oSQL = oPatterns.ReplaceClipboardContents(oSQL, _Params.ClipboardContents) - Dim oConnectionString = GetConnectionString(oConnectionId) + Dim oConnectionString = ProfileUtils.GetConnectionString(_Environment.Database, oConnectionId) Dim oDatatable As DataTable = _Environment.Database.GetDatatableWithConnection(oSQL, oConnectionString) If oDatatable Is Nothing Then @@ -72,26 +72,6 @@ Public Class ProfileSearches Return oDocSearches End Function - Private Function GetConnectionString(ConnectionId As Integer) As String - Dim oDatatable As DataTable = _Environment.Database.GetDatatable($"SELECT * FROM TBDD_CONNECTION WHERE GUID = {ConnectionId}") - - If oDatatable.Rows.Count > 0 Then - Dim oRow As DataRow = oDatatable.Rows.Item(0) - - Select Case oRow.Item("SQL_PROVIDER") - Case "MS-SQL" - Dim oConnectionString = MSSQLServer.GetConnectionString(oRow.Item("SERVER"), oRow.Item("DATENBANK"), oRow.Item("USERNAME"), oRow.Item("PASSWORD")) - Return oConnectionString - - Case Else - Return Nothing - - End Select - Else - Return Nothing - End If - End Function - Public Async Function LoadDataSearchesAsync(ProfileId As Integer) As Task(Of List(Of Search)) Return Await Task.Run(Function() Return DoLoadDataSearches(ProfileId) @@ -119,7 +99,7 @@ Public Class ProfileSearches oSQL = oPatterns.ReplaceInternalValues(oSQL) oSQL = oPatterns.ReplaceClipboardContents(oSQL, _Params.ClipboardContents) - Dim oConnectionString = GetConnectionString(oConnectionId) + Dim oConnectionString = ProfileUtils.GetConnectionString(_Environment.Database, oConnectionId) Dim oDatatable As DataTable = _Environment.Database.GetDatatableWithConnection(oSQL, oConnectionString) If oDatatable Is Nothing Then diff --git a/GUIs.ClipboardWatcher/ProfileUtils.vb b/GUIs.ClipboardWatcher/ProfileUtils.vb new file mode 100644 index 00000000..f3dcc7e1 --- /dev/null +++ b/GUIs.ClipboardWatcher/ProfileUtils.vb @@ -0,0 +1,23 @@ +Imports DigitalData.Modules.Database + +Public Class ProfileUtils + Public Shared Function GetConnectionString(Database As MSSQLServer, ConnectionId As Integer) As String + Dim oDatatable As DataTable = Database.GetDatatable($"SELECT * FROM TBDD_CONNECTION WHERE GUID = {ConnectionId}") + + If oDatatable.Rows.Count > 0 Then + Dim oRow As DataRow = oDatatable.Rows.Item(0) + + Select Case oRow.Item("SQL_PROVIDER") + Case "MS-SQL" + Dim oConnectionString = Database.GetConnectionString(oRow.Item("SERVER"), oRow.Item("DATENBANK"), oRow.Item("USERNAME"), oRow.Item("PASSWORD")) + Return oConnectionString + + Case Else + Return Nothing + + End Select + Else + Return Nothing + End If + End Function +End Class