EDMIService: First working version of ImportFile

This commit is contained in:
Jonathan Jenne
2021-12-08 13:09:25 +01:00
parent d75272a17f
commit 3e5918297c
9 changed files with 180 additions and 118 deletions

View File

@@ -10,22 +10,21 @@ Imports System.ServiceModel.Channels
Public Class WindowsService
Inherits ServiceBase
Private _ServiceHost As ServiceHost(Of EDMIService)
Private _LogConfig As LogConfig
Private _LogConfigScheduler As LogConfig
Private _Logger As Logger
Private ServiceHost As ServiceHost(Of EDMIService)
Private LogConfig As LogConfig
Private LogConfigScheduler As LogConfig
Private Logger As Logger
Private _Firebird As Firebird
Private _MSSQL_ECM As MSSQLServer
Private _MSSQL_IDB As MSSQLServer
Private Firebird As Firebird
Private MSSQL_ECM As MSSQLServer
Private MSSQL_IDB As MSSQLServer
Private _ConfigManager As ConfigManager(Of Config)
Private _Config As Config
Private _Path As EDMI.File.Path
Private _Archive As EDMI.File.Archive
Private _Filesystem As Filesystem.File
Private _Global As GlobalState
Private _Scheduler As Scheduler
Private ConfigManager As ConfigManager(Of Config)
Private Config As Config
Private Archive As EDMI.File.Archive
Private Filesystem As Filesystem.File
Private GlobalState As GlobalState
Private Scheduler As Scheduler
Public Sub New()
ServiceName = SERVICE_NAME
@@ -39,123 +38,127 @@ Public Class WindowsService
Try
Dim oServicePath As String = AppDomain.CurrentDomain.BaseDirectory
_LogConfig = New LogConfig(LogConfig.PathType.CustomPath, IO.Path.Combine(oServicePath, "Log"), FileKeepRangeInDays:=3)
_LogConfigScheduler = New LogConfig(LogConfig.PathType.CustomPath, IO.Path.Combine(oServicePath, "Log"), Suffix:="Scheduler", FileKeepRangeInDays:=3)
_Logger = _LogConfig.GetLogger()
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, IO.Path.Combine(oServicePath, "Log"), FileKeepRangeInDays:=3)
LogConfigScheduler = New LogConfig(LogConfig.PathType.CustomPath, IO.Path.Combine(oServicePath, "Log"), Suffix:="Scheduler", FileKeepRangeInDays:=3)
Logger = LogConfig.GetLogger()
_Logger.Info("Service {0} is starting...", SERVICE_DISPLAY_NAME)
_Logger.Info("ServiceDirectory: {0}", oServicePath)
Logger.Info("Service {0} is starting...", SERVICE_DISPLAY_NAME)
Logger.Info("ServiceDirectory: {0}", oServicePath)
_Logger.Info("Loading Config")
_ConfigManager = New ConfigManager(Of Config)(_LogConfig, oServicePath)
_Config = _ConfigManager.Config
_LogConfig.Debug = _ConfigManager.Config.Debug
Logger.Info("Loading Config")
ConfigManager = New ConfigManager(Of Config)(LogConfig, oServicePath)
Config = ConfigManager.Config
LogConfig.Debug = ConfigManager.Config.Debug
Dim oTimer As New Timers.Timer(60000)
AddHandler oTimer.Elapsed, Sub()
_Logger.Debug("Reloading config..")
_ConfigManager.Reload()
_Config = _ConfigManager.Config
_LogConfig.Debug = _ConfigManager.Config.Debug
'UpdateTraceLogging()
End Sub
AddHandler oTimer.Elapsed, AddressOf ReloadTimer_Tick
oTimer.Start()
_Logger.Debug("Connecting to Databases")
Logger.Debug("Connecting to Databases")
_Firebird = StartFirebird()
_MSSQL_ECM = StartMSSQL_ECM()
_MSSQL_IDB = StartMSSQL_IDB()
Firebird = StartFirebird()
MSSQL_ECM = GetMSSQL_ECM(LogConfig)
MSSQL_IDB = GetMSSQL_IDB(LogConfig)
_Logger.Debug("Initializing EDMI Functions")
Logger.Debug("Initializing EDMI Functions")
_Archive = New EDMI.File.Archive(_LogConfig)
_Filesystem = New Filesystem.File(_LogConfig)
_Global = New GlobalState(_LogConfig, _MSSQL_IDB, _MSSQL_ECM)
_Scheduler = New Scheduler(_LogConfigScheduler, _MSSQL_ECM, _Global.TableStore)
Archive = New EDMI.File.Archive(LogConfig)
Filesystem = New Filesystem.File(LogConfig)
GlobalState = New GlobalState(LogConfig, MSSQL_IDB, MSSQL_ECM)
_Logger.Debug("Loading Global Data")
_Global.LoadObjectStores()
_Global.LoadConnections()
Dim oMSSQLServer = GetMSSQL_ECM(LogConfigScheduler)
Scheduler = New Scheduler(LogConfigScheduler, oMSSQLServer, GlobalState.TableStore)
_Logger.Debug("Starting Scheduler")
_Scheduler.Start()
Logger.Debug("Loading Global Data")
GlobalState.LoadObjectStores()
GlobalState.LoadConnections()
_Logger.Debug("Preparing WCF ServiceHost")
EDMIService.MSSQL_ECM = _MSSQL_ECM
EDMIService.MSSQL_IDB = _MSSQL_IDB
EDMIService.Firebird = _Firebird
EDMIService.LogConfig = _LogConfig
EDMIService.AppConfig = _Config
EDMIService.EDMIArchive = _Archive
EDMIService.Filesystem = _Filesystem
EDMIService.GlobalState = _Global
EDMIService.Scheduler = _Scheduler
Logger.Debug("Starting Scheduler")
Scheduler.Start()
_Logger.Debug("Starting WCF ServiceHost")
Logger.Debug("Preparing WCF ServiceHost")
EDMIService.MSSQL_ECM = MSSQL_ECM
EDMIService.MSSQL_IDB = MSSQL_IDB
EDMIService.Firebird = Firebird
EDMIService.LogConfig = LogConfig
EDMIService.AppConfig = Config
EDMIService.EDMIArchive = Archive
EDMIService.Filesystem = Filesystem
EDMIService.GlobalState = GlobalState
EDMIService.Scheduler = Scheduler
Logger.Debug("Starting WCF ServiceHost")
Dim oBaseAddresses() As Uri = {New Uri(SERVICE_BASE_ADDRESS)}
_ServiceHost = New ServiceHost(Of EDMIService)(oBaseAddresses)
_ServiceHost.EnableMetadataExchange(False)
ServiceHost = New ServiceHost(Of EDMIService)(oBaseAddresses)
ServiceHost.EnableMetadataExchange(False)
_Logger.Debug("Listing Endpoints:")
For Each oEndpoint In _ServiceHost.Description.Endpoints
_Logger.Debug("Name: {0}", oEndpoint.Name)
_Logger.Debug("Address: {0}", oEndpoint.Address.ToString)
_Logger.Debug("Listen Uri: {0}", oEndpoint.ListenUri.AbsoluteUri)
_Logger.Debug("Binding: {0}", oEndpoint.Binding.Name)
_Logger.Debug("Contract: {0}", oEndpoint.Contract.Name)
Logger.Debug("Listing Endpoints:")
For Each oEndpoint In ServiceHost.Description.Endpoints
Logger.Debug("Name: {0}", oEndpoint.Name)
Logger.Debug("Address: {0}", oEndpoint.Address.ToString)
Logger.Debug("Listen Uri: {0}", oEndpoint.ListenUri.AbsoluteUri)
Logger.Debug("Binding: {0}", oEndpoint.Binding.Name)
Logger.Debug("Contract: {0}", oEndpoint.Contract.Name)
Next
_ServiceHost.Open()
ServiceHost.Open()
_Logger.Info("WCF ServiceHost started")
_Logger.Info("Service {0} successfully started", SERVICE_DISPLAY_NAME)
Logger.Info("WCF ServiceHost started")
Logger.Info("Service {0} successfully started", SERVICE_DISPLAY_NAME)
Catch ex As Exception
_Logger.Warn("Unexpected Error while starting the service: {0}", ex.Message)
_Logger.Error(ex)
Logger.Warn("Unexpected Error while starting the service: {0}", ex.Message)
Logger.Error(ex)
GracefullyStop()
End Try
End Sub
Private Function StartFirebird() As Firebird
_Logger.Debug("Connecting to Firebird")
Private Sub ReloadTimer_Tick()
If ConfigManager.Reload() = False Then
Logger.Warn("Could not reload config, check the service and config file.")
End If
If _Config.Firebird_Datasource = String.Empty Then
_Logger.Info("Firebird database not configured. Skipping.")
Config = ConfigManager.Config
LogConfig.Debug = ConfigManager.Config.Debug
End Sub
Private Function StartFirebird() As Firebird
Logger.Debug("Connecting to Firebird")
If Config.Firebird_Datasource = String.Empty Then
Logger.Info("Firebird database not configured. Skipping.")
Return Nothing
End If
Try
Dim oFirebird = New Firebird(
_LogConfig,
_Config.Firebird_Datasource,
_Config.Firebird_DatabaseName,
_Config.Firebird_DatabaseUser,
_Config.Firebird_DatabasePassword
LogConfig,
Config.Firebird_Datasource,
Config.Firebird_DatabaseName,
Config.Firebird_DatabaseUser,
Config.Firebird_DatabasePassword
)
_Logger.Info("Database connection established.")
Logger.Info("Database connection established.")
Return oFirebird
Catch ex As Exception
_Logger.Warn("StartFirebird: Could not connect to firebird database.")
_Logger.Error(ex)
Logger.Warn("StartFirebird: Could not connect to firebird database.")
Logger.Error(ex)
Return Nothing
End Try
End Function
Private Function StartMSSQL_ECM() As MSSQLServer
_Logger.Debug("Connecting to ECM MSSQL")
Dim oMSSQL = New MSSQLServer(_LogConfig, _Config.ConnectionString_ECM)
_Logger.Info("Database connection to ECM Database established.")
Private Function GetMSSQL_ECM(pLogConfig As LogConfig) As MSSQLServer
Logger.Debug("Connecting to ECM MSSQL")
Dim oMSSQL = New MSSQLServer(pLogConfig, Config.ConnectionString_ECM)
Logger.Info("Database connection to ECM Database established.")
Return oMSSQL
End Function
Private Function StartMSSQL_IDB() As MSSQLServer
_Logger.Debug("Connecting to IDB MSSQL")
Dim oMSSQL = New MSSQLServer(_LogConfig, _Config.ConnectionString_IDB)
_Logger.Info("Database connection to IDB Database established.")
Private Function GetMSSQL_IDB(pLogConfig As LogConfig) As MSSQLServer
Logger.Debug("Connecting to IDB MSSQL")
Dim oMSSQL = New MSSQLServer(pLogConfig, Config.ConnectionString_IDB)
Logger.Info("Database connection to IDB Database established.")
Return oMSSQL
End Function
@@ -164,13 +167,13 @@ Public Class WindowsService
End Sub
Private Sub GracefullyStop()
_Logger.Info("Service {0} is stopping!", SERVICE_DISPLAY_NAME)
If _ServiceHost IsNot Nothing Then
_ServiceHost.Close()
_ServiceHost = Nothing
Logger.Info("Service {0} is stopping!", SERVICE_DISPLAY_NAME)
If ServiceHost IsNot Nothing Then
ServiceHost.Close()
ServiceHost = Nothing
End If
_Scheduler.Stop()
Scheduler.Stop()
End Sub
End Class