EDMI: Add 3-tier database access in DatabaseWithFallback, add client config,

EDMI Service: Version 2.4.0.0
EDMI: API: Version 1.4.0.0
This commit is contained in:
Jonathan Jenne
2022-01-14 11:48:32 +01:00
parent 7d46951b60
commit bcbfba37b2
58 changed files with 1192 additions and 416 deletions

View File

@@ -21,6 +21,7 @@ Public Class Client
' Runtime Variables
Private ReadOnly ServerAddress As String
Private ReadOnly ServerPort As Integer
Private ClientConfig As ConfigClientConfiguration
' Channel
Private ReadOnly ChannelFactory As ChannelFactory(Of IEDMIServiceChannel)
@@ -32,6 +33,7 @@ Public Class Client
' Public Variables
Public CachedTables As New List(Of String)
''' <summary>
''' Parse a IPAddress:Port String into its parts
''' </summary>
@@ -121,6 +123,12 @@ Public Class Client
Logger.Debug("Opening channel..")
Channel.Open()
Dim oResponse = Channel.GetClientConfig()
If oResponse.OK Then
ClientConfig = oResponse.ClientConfig
Else
Logger.Warn("Client Configuration could not be loaded: [{0}]", oResponse.ErrorMessage)
End If
Logger.Info($"Connection to AppService {ServerAddress} successfully established!")
@@ -146,6 +154,14 @@ Public Class Client
End Try
End Sub
Public Function TryGetClientConfig() As ConfigClientConfiguration
If ClientConfig Is Nothing Then
Throw New ApplicationException("ClientConfig is empty! Please connect to the service before calling this function")
End If
Return ClientConfig
End Function
Private Async Function UpdateTimer_Elapsed(sender As Object, e As ElapsedEventArgs) As Task Handles UpdateTimer.Elapsed
Try
Dim oTables As String() = Await Channel.GetCachedTablesAsync()
@@ -674,6 +690,62 @@ Public Class Client
End Try
End Function
Public Function ExecuteNonQueryFromIDB(pSQL As String, Optional pConnectionId As Integer = 0) As ExecuteNonQueryResponse
Try
Dim oResponse = Channel.ExecuteNonQuery(New ExecuteNonQueryRequest() With {
.SqlCommand = pSQL,
.NamedDatabase = DatabaseName.IDB,
.ConnectionId = pConnectionId
})
Return oResponse
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Function ExecuteNonQueryFromECM(pSQL As String, Optional pConnectionId As Integer = 0) As ExecuteNonQueryResponse
Try
Dim oResponse = Channel.ExecuteNonQuery(New ExecuteNonQueryRequest() With {
.SqlCommand = pSQL,
.NamedDatabase = DatabaseName.ECM,
.ConnectionId = pConnectionId
})
Return oResponse
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Async Function ExecuteNonQueryFromIDBAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of ExecuteNonQueryResponse)
Try
Dim oResponse = Await Channel.ExecuteNonQueryAsync(New ExecuteNonQueryRequest() With {
.SqlCommand = pSQL,
.NamedDatabase = DatabaseName.IDB,
.ConnectionId = pConnectionId
})
Return oResponse
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Async Function ExecuteNonQueryFromECMAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of ExecuteNonQueryResponse)
Try
Dim oResponse = Await Channel.ExecuteNonQueryAsync(New ExecuteNonQueryRequest() With {
.SqlCommand = pSQL,
.NamedDatabase = DatabaseName.ECM,
.ConnectionId = pConnectionId
})
Return oResponse
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Function GetDatatableByName(DatatableName As String, Optional FilterExpression As String = "", Optional SortByColumn As String = "") As TableResult
Try
Dim oResponse = Channel.ReturnDatatableFromCache(DatatableName, FilterExpression, SortByColumn)
@@ -694,6 +766,8 @@ Public Class Client
End Try
End Function
''' <summary>
''' Return infos about a file object
''' </summary>