Monorepo/Service.EDMIService/GlobalState.vb
2022-01-12 10:41:14 +01:00

137 lines
4.6 KiB
VB.net

Imports System.Data.SqlClient
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging
Public Class GlobalState
Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _Logger As Logger
Private ReadOnly _MSSQL_IDB As MSSQLServer
Private ReadOnly _MSSQL_ECM As MSSQLServer
Public Property ObjectStores As New List(Of ObjectStore)
Public Property Connections As New List(Of DatabaseConnection)
Public Property TableStore As New DataSet
Public Sub New(LogConfig As LogConfig, MSSQL_IDB As MSSQLServer, MSSQL_ECM As MSSQLServer)
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
_MSSQL_IDB = MSSQL_IDB
_MSSQL_ECM = MSSQL_ECM
End Sub
Public Function GetObjectStore(pName As String) As ObjectStore
Return ObjectStores.
Where(Function(store) store.Title.ToUpper = pName.ToUpper).
FirstOrDefault()
End Function
Public Function GetConnection(pConnectionId As Long) As DatabaseConnection
Return Connections.
Where(Function(conn) conn.Id = pConnectionId).
FirstOrDefault()
End Function
Public Function GetCachedTables() As List(Of String)
Try
Dim oTables As DataTableCollection = TableStore.Tables
Dim oList As New List(Of String)
For Each oTable As DataTable In oTables
oList.Add(oTable.TableName)
Next
Return oList
Catch ex As Exception
_Logger.Error(ex)
Return New List(Of String)
End Try
End Function
Public Function GetConnectionString(pConnectionId As Long) As String
Dim oConnection = GetConnection(pConnectionId)
Dim oBuilder As New SqlConnectionStringBuilder With {
.DataSource = oConnection.Server,
.InitialCatalog = oConnection.Database,
.UserID = oConnection.Username,
.Password = oConnection.Password
}
Return MSSQLServer.DecryptConnectionString(oBuilder.ToString)
End Function
Public Sub LoadObjectStores()
_Logger.Info("Loading Object Stores")
Try
Dim oSQL As String = "SELECT * FROM VWIDB_OBJECTSTORE"
Dim oDatatable As DataTable = _MSSQL_IDB.GetDatatable(oSQL)
ObjectStores.Clear()
_Logger.Info("Found [{0}] Object Stores", oDatatable.Rows.Count)
For Each oRow As DataRow In oDatatable.Rows
Dim oStore As New ObjectStore() With {
.Id = oRow.Item("OST_ID"),
.IsArchive = oRow.Item("OS_IS_ARCHIVE"),
.Path = oRow.Item("IDB_PRAEFIX"),
.Title = oRow.Item("OS_TITLE")
}
_Logger.Info("New Object Store [{0}]", oStore.Title)
ObjectStores.Add(oStore)
Next
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Public Sub LoadConnections()
_Logger.Info("Loading Database Connections")
Try
Dim oSQL As String = "SELECT * FROM TBDD_CONNECTION"
Dim oDatatable As DataTable = _MSSQL_ECM.GetDatatable(oSQL)
Connections.Clear()
_Logger.Info("Found [{0}] Connections", oDatatable.Rows.Count)
For Each oRow As DataRow In oDatatable.Rows
Dim oConnection As New DatabaseConnection() With {
.Id = oRow.ItemEx(Of Integer)("GUID"),
.Active = oRow.ItemEx(Of Boolean)("AKTIV"),
.Database = oRow.ItemEx(Of String)("DATENBANK"),
.Title = oRow.ItemEx(Of String)("BEZEICHNUNG"),
.Password = oRow.ItemEx(Of String)("PASSWORD"),
.Provider = oRow.ItemEx(Of String)("SQL_PROVIDER"),
.Server = oRow.ItemEx(Of String)("SERVER"),
.Username = oRow.ItemEx(Of String)("USERNAME")
}
_Logger.Info("New Connection [{0}]", oConnection.Title)
Connections.Add(oConnection)
Next
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Class ObjectStore
Public Id As Long
Public Title As String
Public IsArchive As Boolean
Public Path As String
End Class
Class DatabaseConnection
Public Id As Long
Public Title As String
Public Provider As String
Public Server As String
Public Database As String
Public Username As String
Public Password As String
Public Active As Boolean
End Class
End Class