199 lines
6.7 KiB
VB.net
199 lines
6.7 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.Runtime.Serialization
|
|
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 Doctypes As New List(Of Doctype)
|
|
|
|
Public Property ClientConfig As New ClientConfiguration
|
|
|
|
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 LoadDoctypes()
|
|
_Logger.Info("Loading Doctypes")
|
|
|
|
Try
|
|
Dim oSQL As String = "SELECT * FROM VWIDB_DOCTYPE_HANDLING"
|
|
Dim oTable As DataTable = _MSSQL_IDB.GetDatatable(oSQL)
|
|
|
|
_Logger.Info("Found [{0}] Document Types", oTable.Rows.Count)
|
|
|
|
Dim oDocTypes As New List(Of Doctype)
|
|
|
|
For Each oRow As DataRow In oTable.Rows
|
|
Dim oDoctype As New Doctype With {
|
|
.Name = oRow.Item("DOCTYPE"),
|
|
.FileChangedAction = oRow.Item("CHANGED_HANDLING")
|
|
}
|
|
|
|
_Logger.Info("New Doctype [{0}]", oDoctype.Name)
|
|
oDocTypes.Add(oDoctype)
|
|
Next
|
|
|
|
Doctypes = oDocTypes
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Public Sub LoadObjectStores()
|
|
_Logger.Info("Loading Object Stores")
|
|
Try
|
|
Dim oSQL As String = "SELECT * FROM VWIDB_OBJECT_STORE"
|
|
Dim oTable As DataTable = _MSSQL_IDB.GetDatatable(oSQL)
|
|
|
|
_Logger.Info("Found [{0}] Object Stores", oTable.Rows.Count)
|
|
|
|
Dim oObjectStores As New List(Of ObjectStore)
|
|
|
|
For Each oRow As DataRow In oTable.Rows
|
|
Dim oStore As New ObjectStore() With {
|
|
.Id = oRow.Item("GUID"),
|
|
.IsArchive = oRow.Item("Archive"),
|
|
.Path = oRow.Item("REL_PATH"),
|
|
.Title = oRow.Item("Objectstore")
|
|
}
|
|
_Logger.Info("New Object Store [{0}]", oStore.Title)
|
|
oObjectStores.Add(oStore)
|
|
Next
|
|
|
|
ObjectStores = oObjectStores
|
|
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 oTable As DataTable = _MSSQL_ECM.GetDatatable(oSQL)
|
|
|
|
_Logger.Info("Found [{0}] Connections", oTable.Rows.Count)
|
|
|
|
Dim oConnections As New List(Of DatabaseConnection)
|
|
|
|
For Each oRow As DataRow In oTable.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)
|
|
oConnections.Add(oConnection)
|
|
Next
|
|
|
|
Connections = oConnections
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Sub LoadClientConfig(pConfig As Config)
|
|
_Logger.Info("Loading Client Config")
|
|
_Logger.Debug("ForceDirectDatabaseAccess: {0}", pConfig.ClientConfig.ForceDirectDatabaseAccess)
|
|
ClientConfig.ForceDirectDatabaseAccess = pConfig.ClientConfig.ForceDirectDatabaseAccess
|
|
ClientConfig.DocumentTypes = Doctypes
|
|
ClientConfig.ConnectionStringECM = _MSSQL_ECM.CurrentSQLConnectionString
|
|
ClientConfig.ConnectionStringIDB = _MSSQL_IDB.CurrentSQLConnectionString
|
|
End Sub
|
|
|
|
Public Class ObjectStore
|
|
Public Id As Long
|
|
Public Title As String
|
|
Public IsArchive As Boolean
|
|
Public Path As String
|
|
End Class
|
|
|
|
Public 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
|
|
|
|
|
|
Public Class ClientConfiguration
|
|
Public Property ForceDirectDatabaseAccess As Boolean = False
|
|
Public Property DocumentTypes As New List(Of Doctype)
|
|
|
|
Public Property ConnectionStringECM As String
|
|
Public Property ConnectionStringIDB As String
|
|
End Class
|
|
|
|
<DataContract>
|
|
Public Class Doctype
|
|
<DataMember>
|
|
Public Property Name As String
|
|
<DataMember>
|
|
Public Property FileChangedAction As String
|
|
End Class
|
|
|
|
End Class
|